<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)單起見(jiàn),我將遠(yuǎn)程接口類(lèi)、接口實(shí)現(xiàn)類(lèi)都定義在此web工程下。

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

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

     

    package com.al;

    import java.util.Map;

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


    2) 實(shí)現(xiàn)類(lèi) 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類(lèi)不變。對(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)  編輯  收藏 所屬分類(lèi): J2EESpring
    主站蜘蛛池模板: 好大好深好猛好爽视频免费| 中文字幕免费视频精品一| 亚洲剧场午夜在线观看| 亚洲黄色免费在线观看| 亚洲国产老鸭窝一区二区三区| 亚洲国产日韩在线视频| 亚洲精品无码av人在线观看| 亚洲人成无码网站| 亚洲av中文无码乱人伦在线r▽ | 免费无遮挡无码永久视频| 日本一道本不卡免费 | 国产成人精品免费午夜app | 国产亚洲精品欧洲在线观看| 阿v免费在线观看| 国产成人精品免费大全| 国产一区二区三区免费观在线| 91在线视频免费观看| 免费国产成人α片| 在线观看的免费网站无遮挡| av无码免费一区二区三区| 最近免费中文字幕大全视频| 国产精品无码免费视频二三区| 免费人成网站在线高清| 国产国拍精品亚洲AV片| 亚洲av日韩av激情亚洲| 亚洲人成伊人成综合网久久| 亚洲午夜成人精品无码色欲| 黄色毛片免费网站| 免费的全黄一级录像带| 18禁成人网站免费观看| 高清国语自产拍免费视频国产| 久草福利资源网站免费| 91精品免费久久久久久久久| 在线观看免费大黄网站| 亚洲精品国产高清嫩草影院| 亚洲va久久久噜噜噜久久天堂| 亚洲国产成AV人天堂无码| 99亚洲乱人伦aⅴ精品| 91视频精品全国免费观看| 日韩免费精品视频| 午夜亚洲国产成人不卡在线|