最近項目中涉及到外網(wǎng)平臺調(diào)遠程接口數(shù)據(jù)的問題,本來是用soap方式實現(xiàn)的,今天聽人介紹了Hessian,想不到它的實現(xiàn)更加簡單,代碼寫起來也比較少。
下面這個例子我是從Hessian官方上,稍微改了點。
創(chuàng)建一個名為Hessian的web工程,測試服務器為tomcat5.0,lib目錄下必須包含hessian-3.0.20.jar包,下載地址:
http://www.ziddu.com/download/3556057/hessian-3.0.20.jar.rar.html
(1)接口Basic
package example;
public interface Basic {
public String hello(); //與服務端的hello方法對應
}
(2)服務端實現(xiàn)類
package example;
public class BasicService implements Basic {
private String _greeting = "Hello,ducklyl!";
public void setGreeting(String greeting)
{
_greeting = greeting;
}
public String hello()
{
return _greeting;
}
}
(3)客戶端實現(xiàn)類
package example;
import com.caucho.hessian.client.HessianProxyFactory;
/**
* <p>Title: hessian實現(xiàn)遠程調(diào)用</p>
* <p>Copyright: Copyright (c) 2007</p>
* @author ducklyl
* @version 1.0
*/
public class BasicClient {
public static void main(String []args)
throws Exception
{
String url = "http://127.0.0.1:8080/Hessian/ducklyl";
//創(chuàng)建factory實例
HessianProxyFactory factory = new HessianProxyFactory();
//客戶端需實現(xiàn)Basic接口
Basic basic = (Basic) factory.create(Basic.class, url);
System.out.println("Hessian: " + basic.hello());
}
}
(4) web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>ducklyl</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>example.BasicService</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>example.Basic</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ducklyl</servlet-name>
<url-pattern>/ducklyl</url-pattern>
</servlet-mapping>
</web-app>
運行客戶端程序BasicClient ,如果以下配置沒問題,輸出結(jié)果為:
Hessian: Hello,ducklyl!