<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    于吉吉的技術博客

    建造高性能門戶網

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      65 隨筆 :: 6 文章 :: 149 評論 :: 0 Trackbacks
    由于歷史原因,幾個項目都選用hessian作為web service的實現方式,hessian的確是非常輕量級,基于http協議進行傳輸,通過自定義的串行化機制將請求信息進行序列化,以二進制傳輸節省了不少的開銷,速度跟socket差不多.客戶端和服務器發起和接收請求都是通過spring提供的hessian api進行請求和接收,但是在服務端中并沒有記錄和控制遠端ip地址和主機的信息,所以需要對源碼進行一些重寫

    對org.springframework.remoting.caucho.HessianServiceExporter進行重寫

    /**
     * 重寫HessianServiceExporter.handleRequest(),攔截獲取遠端調用信息
     * 
    @author chenyz
     *
     
    */
    public class HouseHessianServiceExporter extends HessianServiceExporter {
        
        
    private static String[] entryIP = {"192.168.0.1","192.168.0.3","192.168.0.3"};
        
        
    private static Log log = LogFactory.getLog("Myremote"); 
        
        @Override
        
    public void handleRequest(HttpServletRequest request,
                HttpServletResponse response) 
    throws ServletException, IOException {        
            log.info(
    "try ==>remote 's IP:"+IpUtil.getIpAddr(request)+"remote 's host: "+request.getRemoteHost());
            
    int call = 0;
            
    for(String ip:entryIP){
                
    if(ip.equals(IpUtil.getIpAddr(request)))
                    call
    ++;
            }
            
    if(call>0){
                log.info(
    "call ==>remote 's IP:"+IpUtil.getIpAddr(request)+"remote 's host: "+request.getRemoteHost());
                
    super.handleRequest(request, response);
            }
        }
    }

       <bean id="shineLibWSImpl" class="com.***.shine.remote.ShineLibWSImpl"/>
        
    <bean name="/remote/shineinfo" class="com.***.shine.hessian.service.HouseHessianServiceExporter">
            
    <property name="service">
                
    <ref bean="shineLibWSImpl"/>
            
    </property>
            
    <property name="serviceInterface">
                
    <value>com.***.shine.remote.ShineLibWebService</value>
            
    </property>
        
    </bean>

    重寫HessianServiceExporter.handleRequest(),攔截獲取遠端調用信息,提取出調用端的ip信息與服務端制定的ip列表進行對比,并將所有調用信息記錄日志

    如果直接使用hessian的api的HessianServlet,直接對HessianServlet的service()重寫,攔截并提取遠端調用信息

    /**
     * 重寫HouseHessianServlet.service(),攔截獲取遠端調用信息
     * 
    @author chenyz
     *
     
    */
    public class HouseHessianServlet extends HessianServlet{
        
        
    private static String[] entryIP = {"192.168.0.1","192.168.0.3","192.168.0.3"};
        
        
    private static Log log = LogFactory.getLog("Myremote"); 
        
        @Override
        
    public void service(ServletRequest request, ServletResponse response)
                
    throws IOException, ServletException {
            HttpServletRequest req 
    = (HttpServletRequest) request;
            log.info(
    "try ==>remote 's IP:"+IpUtil.getIpAddr(req)+"remote 's host: "+request.getRemoteHost());
            
    int call = 0;
            
    for(String ip:entryIP){
                
    if(ip.equals(IpUtil.getIpAddr(request)))
                    call
    ++;
            }
            
    if(call>0){
                log.info(
    "call ==>remote 's IP:"+IpUtil.getIpAddr(req)+"remote 's host: "+request.getRemoteHost());
                
    super.service(request, response);
            }
        }
    }

    web.xml

       <servlet>   
        
    <servlet-name>HessianServlet</servlet-name>   
        
    <servlet-class>   
            com.***.product.remote.Htest
        
    </servlet-class>   
      
    </servlet>  

      
    <servlet-mapping>   
        
    <servlet-name>HessianServlet</servlet-name>   
        
    <url-pattern>/service/hession</url-pattern>   
      
    </servlet-mapping>  

    com.***.product.remote.Htest

    public class Htest extends HouseHessianServlet implements IHtest{
        
        
    public hello(){
            System.out.println(
    "hello");
        }
    }


    posted on 2010-12-21 16:05 陳于喆 閱讀(3028) 評論(0)  編輯  收藏 所屬分類: javaweb service
    主站蜘蛛池模板: 亚洲第一区精品日韩在线播放| 好先生在线观看免费播放| 国产高清在线免费视频| 久久精品国产亚洲av麻豆蜜芽| 最近中文字幕免费mv在线视频| 亚洲视频国产精品| 亚洲黄色免费观看| 激情内射亚洲一区二区三区爱妻| 欧洲乱码伦视频免费| 亚洲狠狠成人综合网| 成年人免费观看视频网站| 亚洲AV香蕉一区区二区三区| 国产无遮挡又黄又爽免费视频| 美女羞羞视频免费网站| 亚洲男人第一无码aⅴ网站| 黄床大片免费30分钟国产精品| 亚洲成色www久久网站夜月| 精品无码AV无码免费专区| 中文文字幕文字幕亚洲色| 国产免费黄色大片| 国产激情久久久久影院老熟女免费 | 国产成人免费高清在线观看| 另类小说亚洲色图| 亚洲永久无码3D动漫一区| 8x8x华人永久免费视频| 亚洲综合av一区二区三区| 免费女人18毛片a级毛片视频| 一区二区三区免费视频观看| 亚洲AV无码一区二区三区DV| 免费福利视频导航| 免费播放美女一级毛片| 国产成人亚洲综合无码精品| 国产精品久久永久免费| 亚洲AV无码成人精品区日韩| 国产午夜亚洲精品理论片不卡| 日韩内射激情视频在线播放免费| 亚洲综合小说另类图片动图| 亚洲综合亚洲综合网成人| 50岁老女人的毛片免费观看| 色一情一乱一伦一视频免费看| 亚洲视频在线免费观看|