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

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

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

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    hessian spring

    Posted on 2010-01-27 21:42 瘋狂 閱讀(8214) 評(píng)論(0)  編輯  收藏 所屬分類: spring

    簡(jiǎn)介
    相比WebService,Hessian更簡(jiǎn)單、快捷。采用的是二進(jìn)制RPC協(xié)議(Binary),因?yàn)椴捎玫氖嵌M(jìn)制協(xié)議,所以它很適合于發(fā)送二進(jìn)制數(shù)據(jù)。Hessian通常通過(guò)Web應(yīng)用來(lái)提供服務(wù),因此非常類似于WebService。只是它不使用SOAP協(xié)議。
    Hessian通過(guò)Servlet提供遠(yuǎn)程服務(wù)。需要將匹配某個(gè)模式的請(qǐng)求映射到Hessian服務(wù)。Spring的DispatcherServlet可以完成該功能,DispatcherServlet可將匹配模式的請(qǐng)求轉(zhuǎn)發(fā)到Hessian服務(wù)。Hessian的server端提供一個(gè)servlet基類, 用來(lái)處理發(fā)送的請(qǐng)求,而Hessian的這個(gè)遠(yuǎn)程過(guò)程調(diào)用,完全使用動(dòng)態(tài)代理來(lái)實(shí)現(xiàn)的,,推薦采用面向接口編程,因此,Hessian服務(wù)建議通過(guò)接口暴露。
    Hessian處理過(guò)程示意圖:
    客戶端——>序列化寫到輸出流——>遠(yuǎn)程方法(服務(wù)器端)——>序列化寫到輸出流 ——>客戶端讀取輸入流——>輸出結(jié)果
    環(huán)境搭建
    Hessian的下載和安裝請(qǐng)按如下步驟進(jìn)行:
    (1)登http://www.caucho.com/hessian/下載Hessian。
    (2)把Hessian相應(yīng)的Jar包放到Web應(yīng)用下,所有的jar文件都應(yīng)該放在WEB-INF/lib下,該文件也不例外。
    兩種方式
    純Hessian
    這種方式主要是適用于工程中沒(méi)有適用像spring框架的情況下,好處是配置方便,但是當(dāng)內(nèi)容多的情況下,配置的內(nèi)容很多。
    下面我就把我在做實(shí)例的一些相關(guān)步驟描述如下:
    1:把Hessian相應(yīng)jar包放入至工程中。
    2:由于Hessian是采用面向接口編程的,所以編寫一個(gè)接口,因?yàn)榭蛻舳藘H僅需要接口,而無(wú)須真實(shí)的實(shí)現(xiàn)類。
    package jzh.demo;
    public interface IHello {
    String sayHello();
    }
    3:編寫一個(gè)類實(shí)現(xiàn)這個(gè)接口。
    package jzh.demo.impl;
    import jzh.demo.IHello;
    import com.caucho.hessian.server.HessianServlet;
    public class Hello extends HessianServlet implements IHello {
    public String sayHello() {
    return "Hello world";
    }
    }
    4:web.xml的詳細(xì)配置
    <servlet>
    <servlet-name>Hello</servlet-name>
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
    <init-param>
    <param-name>home-class</param-name>
    <param-value>jzh.demo.imple.Hello</param-value>
    </init-param>
    <init-param>
    <param-name>home-api</param-name>
    <param-value>jzh.demo.IHello</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>Hello</servlet-name>
    <url-pattern>/Hello</url-pattern>
    </servlet-mapping>

    5:客戶端遠(yuǎn)程調(diào)用服務(wù)器端提供的接口,利用的就是Hessian的HessianProxyFactory,來(lái)實(shí)現(xiàn)遠(yuǎn)程代理。
    1) 把服務(wù)器端的生成的jar包,放入工程中。
    2) 相應(yīng)的片段程序如下:
    String url = "http://220.114.108.185:8080/Hessian/Hello";
    HessianProxyFactory factory = new HessianProxyFactory();
    try {
    IHello hello =(IHello)factory.create(IHello.class,url);
    System.out.println(hello.sayHello());
    } catch (MalformedURLException e) {
    e.printStackTrace();
    }
    6:功能完成。
    Hessian與Spring整合
    相比上一種方式,這個(gè)方式就有點(diǎn)麻煩了。Hessian通過(guò)Servlet提供遠(yuǎn)程服務(wù)。需要將匹配某個(gè)模式的請(qǐng)求映射到Hessian服務(wù)。Spring的DispatcherServlet可以完成該功能,DispatcherServlet可將匹配模式的請(qǐng)求轉(zhuǎn)發(fā)到Hessian服務(wù),web.xml只是定義了“請(qǐng)求轉(zhuǎn)發(fā)器”,該轉(zhuǎn)發(fā)器將匹配/remoting/*的請(qǐng)求截獲,轉(zhuǎn)發(fā)給context的bean處理。而HessianServiceExporter提供bean服務(wù)。
    所以Hessian與Spring整合主要就是一下兩個(gè)工作:
    1:通過(guò)DispatcherServlet來(lái)攔截URL請(qǐng)求。
    2:HessianServiceExporter提供bean服務(wù),Spring使用HessianServiceExporter,將一個(gè)常規(guī)bean導(dǎo)出成Hessian服務(wù)。
    下面我就把我在做實(shí)例的一些相關(guān)步驟描述如下:
    1:和上面的一樣。
    2:和上面的一樣。
    3:和上面的一樣。
    4:web.xml的詳細(xì)配置
    <servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
    </servlet-mapping>
    5:配置remoting-servlet.xml文件
    <!-- 定義普通bean實(shí)例-->
    <bean id="hello" class="jzh.demospring.impl.Hello"/>
    <!-- 使用HessianServiceExporter 將普通bean導(dǎo)出成Hessian服務(wù)-->
    <bean name="/HessianRemoting" class="org.springframework.remoting.caucho.HessianServiceExporter">
    <!-- 需要導(dǎo)出的目標(biāo)bean-->
    <property name="service" ref="hello"/>
    <!-- Hessian服務(wù)的接口-->
    <property name="serviceInterface" value="jzh.demospring.IHello"/>
    </bean>
    6:客戶端定義一個(gè)remote-client.xml文件
    <bean id="myServiceClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl">
    <value>http://220.114.99.62:8080/HessianSpring/remoteing/HessianRemoting</value>
    </property>
    <property name="serviceInterface">
    <value>jzh.demospring.IHello</value>
    </property>
    </bean>
    7:客戶端調(diào)用。
    try
    {
    ApplicationContext context = new ClassPathXmlApplicationContext("remote-client.xml");

    IHello hello =(IHello)context.getBean("myServiceClient");

    System.out.println(hello.sayHello());
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    轉(zhuǎn)載自:http://hi.baidu.com/javahua/blog/item/289e4a66c50a152dab184cec.html

    主站蜘蛛池模板: 久久精品国产亚洲AV无码麻豆 | 处破痛哭A√18成年片免费| 亚洲AV无码成人专区| 免费人妻无码不卡中文字幕18禁| 中国一级全黄的免费观看| 亚洲欧洲日韩综合| 国产黄色片在线免费观看| 精品国产呦系列在线观看免费 | 国产精品免费看久久久香蕉| 亚洲国产精品久久66| 日日AV拍夜夜添久久免费| 国产午夜精品免费一区二区三区| 亚洲va在线va天堂成人| 亚洲午夜福利717| 成年丰满熟妇午夜免费视频| 国产大片免费天天看| 亚洲国产最大av| 亚洲精品无码MV在线观看| 成人男女网18免费视频| 免费福利电影在线观看| 亚洲AV无码一区二区三区久久精品| 亚洲产国偷V产偷V自拍色戒| 爽爽日本在线视频免费| 9277手机在线视频观看免费| 一进一出60分钟免费视频| 激情五月亚洲色图| 婷婷亚洲久悠悠色悠在线播放| 日本免费中文字幕在线看| 18成禁人视频免费网站| CAOPORN国产精品免费视频| 亚洲国产欧美一区二区三区| 亚洲高清无在码在线电影不卡| 亚洲性久久久影院| 在线观看免费精品国产| 好男人www免费高清视频在线| 国产午夜精品久久久久免费视| 午夜在线免费视频| 亚洲成a∨人片在无码2023| 亚洲码在线中文在线观看| 狠狠色伊人亚洲综合成人| 国产啪亚洲国产精品无码|