日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Hessian入门(与Spring集成)

發布時間:2025/3/20 javascript 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hessian入门(与Spring集成) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

Hessian入門(與Spring集成)

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? By:wtang

說明 :

1.??? 講述如何配置Hessian的服務器端(與Spring集成).

2.??? 講述客戶端如何調用

①?? 使用HessianProxyFactory? Hessian代理工廠直接調用

②?? 使用HessianProxyFactoryBean Hessian代理工廠Bean來完成接口調用.

?

1.??? 講述如何配置Hessian的服務器端(與Spring集成).

?

?

?

?

?

接口定義類: com.wtang.isay. Isay:

?

[java] view plain copy print ?
  • package?com.wtang.isay;??
  • ??
  • public?interface?Isay?{??
  • ????public?String?sayHello(String?arg1,String?arg2);??
  • }??
  • package com.wtang.isay;public interface Isay { public String sayHello(String arg1,String arg2);}</pre>

    ?

    接口具體實現類: com.wtang.isay. IsayImpl

    [java] view plain copy print ?
  • package?com.wtang.isay;??
  • ??
  • public?class?IsayImpl?implements?Isay?{??
  • ??
  • ????public?String?sayHello(String?arg1,?String?arg2)?{??
  • ????????return?"Hello:"?+?arg1?+?arg2;??
  • ????}??
  • }??
  • package com.wtang.isay;public class IsayImpl implements Isay { public String sayHello(String arg1, String arg2) { return "Hello:" + arg1 + arg2; }}</pre>

    配置Web.xml:

    [java] view plain copy print ?
  • <servlet>??
  • ????<servlet-name>remote</servlet-name>??
  • ????<!--?使用Spring的代理Servlet?-->??
  • ????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>??
  • ????<init-param>??
  • ????????<param-name>namespace</param-name>??
  • ????????<param-value>classes/remote-servlet</param-value>??
  • ????</init-param>??
  • ????<load-on-startup>1</load-on-startup>??
  • </servlet>??
  • ??
  • <servlet-mapping>??
  • ????<servlet-name>remote</servlet-name>??
  • ????<url-pattern>/remote/*</url-pattern>??
  • </servlet-mapping>??
  • <servlet> <servlet-name>remote</servlet-name> <!-- 使用Spring的代理Servlet --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>namespace</param-name> <param-value>classes/remote-servlet</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>remote</servlet-name> <url-pattern>/remote/*</url-pattern> </servlet-mapping></pre>

    配置remote-servlet.xml[該文件位于src目錄下,即編譯后存在與classes下]:

    [java] view plain copy print ?
  • <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">??
  • <beans>??
  • ????<!--?接口的具體實現類?-->??
  • ????<bean?id="impl"?class="com.wtang.isay.IsayImpl"?/>??
  • ????<!--?使用Spring的HessianServie做代理?-->??
  • ????<bean?name="/helloSpring"??
  • ????class="org.springframework.remoting.caucho.HessianServiceExporter">??
  • ????????<!--?service引用具體的實現實體Bean-->??
  • ????????<property?name="service"?ref="impl"?/>??
  • ????????<property?name="serviceInterface"?value="com.wtang.isay.Isay"?/>??
  • ????</bean>??
  • ??????
  • ????<!--?可以配置多個HessianServiceExporter代理Bean?-->??
  • </beans>??
  • <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- 接口的具體實現類 --> <bean id="impl" class="com.wtang.isay.IsayImpl" /> <!-- 使用Spring的HessianServie做代理 --> <bean name="/helloSpring" class="org.springframework.remoting.caucho.HessianServiceExporter"> <!-- service引用具體的實現實體Bean--> <property name="service" ref="impl" /> <property name="serviceInterface" value="com.wtang.isay.Isay" /> </bean> <!-- 可以配置多個HessianServiceExporter代理Bean --></beans></pre>

    注:

    ????? 這個文件為什么叫remote-servlet.xml呢?

    因為我們在web.xml中有配置:<servlet-name>remote</servlet-name>。

    所以remote-servlet.xml的文件名必須以

    <servlet-name>中配置的servlet-name作為文件名的開頭,

    且文件名的格式必須是[servlet-name]-servlet.xml格式,否則檢測不到。

    ??? 即:

    <param-value>classes/remote-servlet</param-value>

    所以文件名為remote-servlet.xml。

    ?

    ?

    2.??? 講述客戶端如何調用

    ??????? ①?使用HessianProxyFactory? Hessian代理工廠直接調用

    ?即:

    ???????

    [java] view plain copy print ?
  • package?com.wtang.test;??
  • ??
  • import?java.net.MalformedURLException;??
  • import?com.caucho.hessian.client.HessianProxyFactory;??
  • import?com.wtang.isay.Isay;??
  • ??
  • public?class?NormalClient?{??
  • ????public?static?void?main(String[]?args)?throws?MalformedURLException?{??
  • ????????//Spring?Hessian代理Servelet ??
  • ????????String?url?=?"http://localhost:8080/HessianSpring/remote/helloSpring";??
  • ????????HessianProxyFactory?factory?=?new?HessianProxyFactory();??
  • ????????Isay?api?=?(Isay)?factory.create(Isay.class,?url);??
  • ??
  • ????????System.out.println(api.sayHello("chen",?"weitang"));??
  • ????}??
  • }??
  • package com.wtang.test;import java.net.MalformedURLException;import com.caucho.hessian.client.HessianProxyFactory;import com.wtang.isay.Isay;public class NormalClient { public static void main(String[] args) throws MalformedURLException { //Spring Hessian代理Servelet String url = "http://localhost:8080/HessianSpring/remote/helloSpring"; HessianProxyFactory factory = new HessianProxyFactory(); Isay api = (Isay) factory.create(Isay.class, url); System.out.println(api.sayHello("chen", "weitang")); }}</pre>

    ?

    輸出Hello:chenweitang

    ?

    2.??? 講述客戶端如何調用

    ????????②?使用HessianProxyFactoryBean Hessian代理工廠Bean來完成接口調用.

    配置客戶端 remote-client.xml:

    [java] view plain copy print ?
  • <!DOCTYPE?beans?PUBLIC?"-//SPRING//DTD?BEAN//EN"?"http://www.springframework.org/dtd/spring-beans.dtd">??
  • <beans>??
  • ????<!--?客戶端Hessian代理工廠Bean?-->??
  • ????<bean?id="clientSpring"?class="org.springframework.remoting.caucho.HessianProxyFactoryBean">??
  • ????????<!--?請求代理Servlet路徑?-->??????????
  • ????????<property?name="serviceUrl">??
  • <value>http://localhost:8080/HessianSpring/remote/helloSpring</value> ??
  • ????????</property>??
  • ????????<!--?接口定義?-->??
  • ????????<property?name="serviceInterface">??
  • ????????????<value>com.wtang.isay.Isay</value>??
  • ????????</property>??
  • ????</bean>??
  • </beans>??
  • <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans> <!-- 客戶端Hessian代理工廠Bean --> <bean id="clientSpring" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <!-- 請求代理Servlet路徑 --> <property name="serviceUrl"><value>http://localhost:8080/HessianSpring/remote/helloSpring</value> </property> <!-- 接口定義 --> <property name="serviceInterface"> <value>com.wtang.isay.Isay</value> </property> </bean></beans></pre>

    ?

    調用:

    [java] view plain copy print ?
  • package?com.wtang.test;??
  • ??
  • import?org.springframework.context.ApplicationContext;??
  • import?org.springframework.context.support.ClassPathXmlApplicationContext;??
  • import?com.wtang.isay.Isay;??
  • ??
  • public?class?SpringClient?{??
  • ????public?static?void?main(String[]?args)?{??
  • ????????ApplicationContext?contex?=?new?ClassPathXmlApplicationContext(??
  • ????????????????"remote-client.xml");??
  • ??
  • ????????//?獲得客戶端的Hessian代理工廠bean ??
  • ????????Isay?i?=?(Isay)?contex.getBean("clientSpring");??
  • ????????System.out.println(i.sayHello("chen",?"weitang"));??
  • ????}??
  • }??
  • package com.wtang.test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.wtang.isay.Isay;public class SpringClient { public static void main(String[] args) { ApplicationContext contex = new ClassPathXmlApplicationContext( "remote-client.xml"); // 獲得客戶端的Hessian代理工廠bean Isay i = (Isay) contex.getBean("clientSpring"); System.out.println(i.sayHello("chen", "weitang")); }}</pre>

    ?

    輸出Hello:chenweitang

    ?

    轉載于:https://my.oschina.net/201003674/blog/650263

    總結

    以上是生活随笔為你收集整理的Hessian入门(与Spring集成)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。