Spring Hessian rpc
5991 ワード
一、概要
Hessianは、Caucho Technologyによって開発された軽量級のバイナリRPCプロトコルであり、バイナリプロトコルを採用しているので、バイナリデータの送信に適しています.Hessian-3.0.20バージョンを例にとって、SpringにHessianを統合する方法を説明します.
二、配置の詳細
1、web.xmlにおける配置
Xmlコード
2)私たちはWEB-INFディレクトリの下でファイル名フォーマットを[Servlet Name]-servlet.xmlのプロファイルを作成しなければなりません.servlet-nameをHessianとして設定しますので、ここでHessian-servlet.xmlというファイルを作成します.
2、Hessian-servlet.xmlファイルの配置
Xmlコード
2)サービス対応の業務類を指定します.
3)serviceInterface:業務種類を指定してどのインターフェースを実現しますか?Springはインタフェース向けにプログラミングすることを推奨していますので、Hessianサービスはインターフェースを通じて露出することを提案しています.
4)Hessianのリモートサービス名は/hessian Serviceです.筆者が使っているwebサーバはTomcat-5.5.5.23で、ポートは8888で、webアプリケーションの名前はspring 2です.リモートサービスのURLは以下の通りです.http://localhost:8888/spring2/hessian/hessianService.
3、業務類ソースコード
Javaコード
1)Jspページでサービスを呼び出す
Javaコード
B)クライアントプログラムは、hessian-3.0.20.jarファイルとリモートサービスに対応するインターフェースクラスを参照しなければならない.
C)呼び出した遠隔サービス方法がカスタムクラスに戻る場合、このカスタムクラスはSerializableインターフェースを実現しなければならない.
2)Spring環境でサービスを呼び出す
Xmlコード
Javaコード
B)serviceUrl:リモートサービスのURL.
C)serviceInterface:サービス対応のインターフェース類.
Hessianは、Caucho Technologyによって開発された軽量級のバイナリRPCプロトコルであり、バイナリプロトコルを採用しているので、バイナリデータの送信に適しています.Hessian-3.0.20バージョンを例にとって、SpringにHessianを統合する方法を説明します.
二、配置の詳細
1、web.xmlにおける配置
Xmlコード
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/config/applicationContext.xml,
/WEB-INF/Hessian-servlet.xml
</param-value>
</context-param>
<servlet>
<servlet-name>Hessian</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Hessian</servlet-name>
<url-pattern>/hessian/*</url-pattern>
</servlet-mapping>
1)HessianはリモートサービスがServletを通じて暴露されることを要求しています.だから私たちはSpringのDispactch Servletを使ってサービスを暴露します.2)私たちはWEB-INFディレクトリの下でファイル名フォーマットを[Servlet Name]-servlet.xmlのプロファイルを作成しなければなりません.servlet-nameをHessianとして設定しますので、ここでHessian-servlet.xmlというファイルを作成します.
2、Hessian-servlet.xmlファイルの配置
Xmlコード
<!-- -->
<bean id="hessianService" class="com.cjm.webservice.hessian.HessianServiceImpl"/>
<!-- -->
<bean name="/hessianService" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="hessianService"/>
<property name="serviceInterface">
<value>
com.cjm.webservice.hessian.HessianService
</value>
</property>
</bean>
1)実際の業務類はSpringのHessian ServiceExport類によってクライアントに暴露されます.2)サービス対応の業務類を指定します.
3)serviceInterface:業務種類を指定してどのインターフェースを実現しますか?Springはインタフェース向けにプログラミングすることを推奨していますので、Hessianサービスはインターフェースを通じて露出することを提案しています.
4)Hessianのリモートサービス名は/hessian Serviceです.筆者が使っているwebサーバはTomcat-5.5.5.23で、ポートは8888で、webアプリケーションの名前はspring 2です.リモートサービスのURLは以下の通りです.http://localhost:8888/spring2/hessian/hessianService.
3、業務類ソースコード
Javaコード
// :
public interface HessianService {
public String sayHello(String username);
public HessianModel getHessianModel(String username, String password);
}
// :
public class HessianServiceImpl implements HessianService {
public String sayHello(String username){
return "Hello " + username;
}
public HessianModel getHessianModel(String username, String password) {
return new HessianModel(username, password);
}
}
// :
public class HessianModel implements Serializable{
private String username;
private String password;
public HessianModel(String username, String password){
this.username = username;
this.password = password;
}
……
}
4、クライアント呼び出しサービスの例1)Jspページでサービスを呼び出す
Javaコード
String url = "http://localhost:8888/spring2/hessian/hessianService";
HessianProxyFactory factory = new HessianProxyFactory();
HessianService hessianServer =
(HessianService)factory.create(HessianService.class, url);
String ret = hessianServer.sayHello("Raymond.chen");
out.print(ret);
HessianModel model = hessianServer.getHessianModel("uid", "pwd");
out.print("username: " + model.getUsername() + "<br>");
A)結果表示:ハローRaymond.chenB)クライアントプログラムは、hessian-3.0.20.jarファイルとリモートサービスに対応するインターフェースクラスを参照しなければならない.
C)呼び出した遠隔サービス方法がカスタムクラスに戻る場合、このカスタムクラスはSerializableインターフェースを実現しなければならない.
2)Spring環境でサービスを呼び出す
Xmlコード
<bean id="testHessianService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:8888/spring2/hessian/hessianService"/>
<property name="serviceInterface" value="com.cjm.webservice.hessian.HessianService"/>
</bean>
<!- Struts2 -->
<bean id="orgAction" class="com.cjm.web.action.OrganizationAction" parent="baseAction">
<property name="organizationService" ref="organizationService"/>
<property name="testHessianService" ref="testHessianService"/>
</bean>
OrganizationAction.javaのソースコードの一部:Javaコード
private HessianService testHessianService;
HessianModel model = testHessianService.getHessianModel("uid", "pwd");
System.out.println("username: " + model.getUsername());
A)HessianProxyFactoryBeanを使ってサービスを接続します.B)serviceUrl:リモートサービスのURL.
C)serviceInterface:サービス対応のインターフェース類.