国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Hessian入門
2009-09-22 10:25
相比WebService,Hessian更簡(jiǎn)單、快捷。采用的是二進(jìn)制RPC協(xié)議(Binary),因?yàn)椴捎玫氖嵌M(jìn)制協(xié)議,所以它很適合于發(fā)送二進(jìn)制 數(shù)據(jù)。Hessian通常通過Web應(yīng)用來提供服務(wù),因此非常類似于WebService。只是它不使用SOAP協(xié)議。
Hessian通過Servlet提供遠(yuǎn)程服務(wù)。需要將匹配某個(gè)模式的請(qǐng)求映射到Hessian服務(wù)。Spring的DispatcherServlet 可以完成該功能,DispatcherServlet可將匹配模式的請(qǐng)求轉(zhuǎn)發(fā)到Hessian服務(wù)。Hessian的server端提供一個(gè) servlet基類, 用來處理發(fā)送的請(qǐng)求,而Hessian的這個(gè)遠(yuǎn)程過程調(diào)用,完全使用動(dòng)態(tài)代理來實(shí)現(xiàn)的,,推薦采用面向接口編程,因此,Hessian服務(wù)建議通過接口暴 露。
Hessian處理過程示意圖:
客戶端——>序列化寫到輸出流——>遠(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
這種方式主要是適用于工程中沒有適用像spring框架的情況下,好處是配置方便,但是當(dāng)內(nèi)容多的情況下,配置的內(nèi)容很多。
下面我就把我在做實(shí)例的一些相關(guān)步驟描述如下:
1:把Hessian相應(yīng)jar包放入至工程中。
2:由于Hessian是采用面向接口編程的,所以編寫一個(gè)接口,因?yàn)榭蛻舳藘H僅需要接口,而無須真實(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,來實(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通過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:通過DispatcherServlet來攔截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è)remoting-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();
}
注意事項(xiàng)
1:?jiǎn)?dòng)tomcat的時(shí)候,出現(xiàn)如下問題:java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet。,而在工程中是可以找到相應(yīng)的jar文件,這究 竟是什么問題。
解決方法:可能是在工程的WEB-INF/lib下面沒有加載相應(yīng)的jar文件
2:org.springframework.remoting.RemoteAccessException: Cannot access Hessian service at [http://61.152.162.173/remote/remoteService];
解決方法:出現(xiàn)這個(gè)異常一般是因?yàn)榉?wù)端操作出現(xiàn)異常引起的。


(###)
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Java學(xué)習(xí)之Hessian通信基礎(chǔ)
Spring HTTP Invoker使用介紹
Hessian入門(與Spring集成)
spring和hessian整合
spring對(duì)java遠(yuǎn)程調(diào)用的簡(jiǎn)化(三)之HTTPinvoker
Java遠(yuǎn)程通訊可選技術(shù)及原理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服