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

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

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

    ALL is Well!

    敏捷是一條很長(zhǎng)的路,摸索著前進(jìn)著

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      30 隨筆 :: 23 文章 :: 71 評(píng)論 :: 0 Trackbacks
    本文為原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明出處BlogJava

    Hessian是一個(gè)輕量級(jí)的remoting onhttp工具,使用簡(jiǎn)單的方法提供了RMI的功能. 相比WebService,Hessian更簡(jiǎn)單、快捷。
    采用的是二進(jìn)制RPC協(xié)議,因?yàn)椴捎玫氖嵌M(jìn)制協(xié)議,所以它很適合于發(fā)送二進(jìn)制數(shù)據(jù)。

    本文將分為以下幾個(gè)內(nèi)容:
    一、一個(gè)簡(jiǎn)單的Hessian調(diào)用例子
    二、Spring+Hessian的例子
    三、使我們的調(diào)用變得通用

    第一部分:一個(gè)簡(jiǎn)單的Hessian調(diào)用例子
    建立web工程HessianService。
    這里為了簡(jiǎn)單起見,我將遠(yuǎn)程接口類、接口實(shí)現(xiàn)類都定義在此web工程下。

    個(gè)人覺(jué)得一個(gè)比較好的做法是將web工程分開,此web工程只定義對(duì)外的接口并提供服務(wù),而實(shí)現(xiàn)類新建一個(gè)Java工程存放。
    這樣web工程依賴此Java工程,且客戶端也依賴此Java工程。

    1) 遠(yuǎn)程接口類 ServiceRemote.java

     

    package com.al;

    import java.util.Map;

    @SuppressWarnings(
    "unchecked")
    public interface ServiceRemote  {
        
    public Map callService(Map inputMap) ;
    }


    2) 實(shí)現(xiàn)類 Service.java

    package com.al;

    import java.util.HashMap;
    import java.util.Map;

    @SuppressWarnings(
    "unchecked")
    public class Service implements ServiceRemote {

        
    public Map callService(Map inputMap) {
            
    if(inputMap == null{
                inputMap 
    = new HashMap();
            }

            
    // do something
            
    // 
            inputMap.put("NAME""Hessian");
            
    return inputMap;
        }

    }


    3) web.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee 
     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >
        
    <servlet>
            
    <servlet-name>hessianService</servlet-name>
            
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
            
    <init-param>
                
    <param-name>service-class</param-name>
                
    <param-value>com.al.Service</param-value>
            
    </init-param>
        
    </servlet>
        
    <servlet-mapping>
            
    <servlet-name>hessianService</servlet-name>
            
    <url-pattern>/hessianService</url-pattern>
        
    </servlet-mapping>
    </web-app>


    經(jīng)過(guò)以上3步,hessian服務(wù)部署算是完成了,在tomcat下發(fā)布。

    4) 調(diào)用方代碼

    package com.ai.client;

    import com.al.ServiceRemote;
    import com.caucho.hessian.client.HessianProxyFactory;

    public class ClientTest {
        
    public static void main(String[] args) throws Exception {
            String url 
    = "http://localhost:8080/HessianService/hessianService";
            HessianProxyFactory factory 
    = new HessianProxyFactory();
            ServiceRemote rmt 
    = (ServiceRemote) factory.create(ServiceRemote.class, url);
            System.out.println(rmt.callService(
    null));
        }

    }


    執(zhí)行代碼,結(jié)果如下:
    {NAME=Hessian}
    說(shuō)明調(diào)用遠(yuǎn)程代碼成功了。

    二、Spring+Hessian的例子
    1) web工程HessianService 的ServiceRemote 和Service類不變。對(duì)web.xml進(jìn)行修改:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >
        
    <context-param>
            
    <param-name>contextConfigLocation</param-name>
            
    <param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
        
    </context-param>
        
    <servlet>
            
    <servlet-name>dispatcher</servlet-name>
            
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            
    <load-on-startup>1</load-on-startup>
        
    </servlet>
        
    <servlet-mapping>
            
    <servlet-name>dispatcher</servlet-name>
            
    <url-pattern>/remote/*</url-pattern>
        
    </servlet-mapping>
        
    <welcome-file-list>
            
    <welcome-file>index.jsp</welcome-file>
        
    </welcome-file-list>
    </web-app>


    這里要注意的是:
    a)dispatcher-servlet.xml這個(gè)文件的命名。servlet配置為dispatcher,則此文件定義規(guī)則為****-servlet.xml.

    b)另外就是Spring和hessian的版本問(wèn)題。
    spring版本是2.5.6,需要在此web工程下引入:spring-2.5.6.jar、spring-webmvc-2.5.6.jar、commons-logging-1.1.1.jar。
    hessian的版本是hessian-3.1.6.jar,hessian的低版本如 hessian-3.0.13和此Spring版本不合。(我試驗(yàn)了是配置不成功的。)

    2) dispatcher-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    <beans>
        
    <description>hessian server properties</description>
        
    <bean id="serviceImpl" class="com.al.Service" />
        
    <bean name="/service" class="org.springframework.remoting.caucho.HessianServiceExporter">
            
    <property name="service">
                
    <ref bean="serviceImpl" />
            
    </property>
            
    <property name="serviceInterface">
                
    <value>com.al.ServiceRemote</value>
            
    </property>
        
    </bean>
    </beans>


    3) 客戶端代碼可以保持原樣不變,把調(diào)用hessian服務(wù)的url變換一下即可:
    http://localhost:8080/HessianService/remote/service
    http://IP:port/發(fā)布工程名/web.xml中配置的url-pattern/****-servlet.xml bean的ID。

    三、使我們的調(diào)用變得通用 將在下一篇中介紹。

    posted on 2010-10-17 21:11 李 明 閱讀(2824) 評(píng)論(0)  編輯  收藏 所屬分類: J2EESpring
    主站蜘蛛池模板: 狼人大香伊蕉国产WWW亚洲 | 亚洲中文字幕无码久久2020 | jizz免费观看| 亚洲AV无码码潮喷在线观看| 18禁无遮挡无码国产免费网站| 亚洲乱码中文字幕在线| 国产成人精品久久亚洲| 日本zzzzwww大片免费| 美女被爆羞羞网站在免费观看| 亚洲精品私拍国产福利在线| 成人av免费电影| 国产免费阿v精品视频网址| 亚洲天堂2016| 亚洲日产无码中文字幕| 成人免费看吃奶视频网站| 国产免费阿v精品视频网址| 亚洲成AV人片高潮喷水| 亚洲av网址在线观看| 国产成人免费福利网站| 日韩精品内射视频免费观看| 亚洲精品GV天堂无码男同| 情人伊人久久综合亚洲| 免费无码又爽又刺激高潮的视频| 亚欧免费一级毛片| 麻豆91免费视频| 最新国产成人亚洲精品影院| 色久悠悠婷婷综合在线亚洲| 午夜毛片不卡高清免费| 日韩免费无码一区二区三区 | 四虎免费影院ww4164h| 一级黄色片免费观看| 亚洲精品无码永久在线观看男男 | 国产v亚洲v天堂无码网站| 国产男女猛烈无遮档免费视频网站| 99久久人妻精品免费一区| 免费看一级一级人妻片| 日韩亚洲国产高清免费视频| 亚洲天堂在线播放| 中文字幕亚洲不卡在线亚瑟| 暖暖日本免费在线视频| 国产精品69白浆在线观看免费|