須要的jar包 hessian-4.0.7.jarjava
#客戶端web
接口app
package com.test; public interface Printer { public String print(String a); public String say(); }
2.實現該接口測試
package com.test; public class PrinterService implements Printer { public String print(String a) { return a; } public String say() { return "nihao"; } }
3.web.xml的配置url
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>aaa</servlet-name> <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class> <init-param> <javaee:param-name>service-class</javaee:param-name> <javaee:param-value>com.test.PrinterService</javaee:param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>aaa</servlet-name> <url-pattern>/aaa</url-pattern> </servlet-mapping> </web-app>
#服務端.spa
1.測試類.net
package com.test; import java.net.MalformedURLException; import com.caucho.hessian.client.HessianProxyFactory; public class TestHessian { /** * @param args * @throws MalformedURLException */ public static void main(String[] args) throws MalformedURLException { // TODO Auto-generated method stub String url = "http://localhost:7001/H/aaa"; //建立factory實例 HessianProxyFactory factory = new HessianProxyFactory(); //客戶端需實現Basic接口 //利用java反射機制建立Printer類的實例,從而能夠獲取該實例的方法 Printer printr = (Printer)factory.create(Printer.class, url); System.out.println("Hessian: " + printr.print("123")+printr.say()); } }
輸出結果:code
Hessian: 123nihao
關於Hessian接口:orm
Hessian 是一個基於 binary-RPC 實現的遠程通信 library。使用二進制傳輸數據。Hessian一般經過Web應用來提供服務,經過接口暴露。Servlet和Spring的DispatcherServlet均可以把請求轉發給Hessian服務server
關於hessian的7個問題:
一、是基於什麼協議實現的?
基於Binary-RPC協議實現。
二、怎麼發起請求?
需經過Hessian自己提供的API來發起請求。
三、怎麼 將請求轉化爲符合協議的格式的?
Hessian經過其自定義的串行化機制將請求信息進行序列化,產生二進制流。
四、使用什麼 傳輸協議傳輸?
Hessian基於Http協議進行傳輸。
五、響應端基於什麼機制來接收請求?
響應端根據Hessian提供的API來接收請求。
六、怎麼將流還原爲傳輸格式的?
Hessian根據其私有的串行化機制來將請求信息進行反序列化,傳遞給使用者時已經是相應的請求信息對象了。
七、處理完畢後怎麼迴應?
處理完畢後直接返回,hessian將結果對象進行序列化,傳輸至調用端。