Hessian其實很像web service,只不過它的協(xié)議不是SOAP,而是它自己規(guī)定的binary協(xié)議。Hessian的server端提供一個servlet基類,client端獲得一
個service接口(也就是stub)之后調(diào)用上面的方法,stub將方法調(diào)用marshal之后通過HTTP傳到server,server借助reflection調(diào)用service方法。
在itbaby目錄下寫了兩個類PlusAPI和PlusService
PlusAPI的CODE如下:
- package itbaby;
- public interface PlusAPI
- {
- public String Plus2Str(int A,int B);
- }
PlusService的CODE如下:
- package itbaby;
- public class PlusService implements PlusAPI
- {
- public String Plus2Str(int A,int B)
- {
- int iSum = A + B;
- String sSum = Integer.toString(iSum);
- return sSum;
- }
- }
在WEB-INF目錄下建了個web.xml文件
- <web-app xmlns="http://caucho.com/ns/resin">
- <servlet servlet-name="plus" servlet-class="com.caucho.hessian.server.HessianServlet">
- <init-param service-class="itbaby.PlusService"/>
- <init-param api-class="itbaby.PlusAPI"/>
- </servlet>
- <servlet-mapping url-pattern="/itbabywebsvc/plus" servlet-name="plus"/>
- </web-app>
- <%@ page import="com.caucho.hessian.client.HessianProxyFactory" %>
- <%@ page import="itbaby.PlusAPI" %>
- <%
- HessianProxyFactory factory = new HessianProxyFactory();
-
- // http://localhost:8080/itbabywebsvc/plus
- String url = ("http://" +
- request.getServerName() + ":" + request.getServerPort() +
- request.getContextPath() + "/itbabywebsvc/plus");
-
- PlusAPI plus = (PlusAPI) factory.create(PlusAPI.class, url);
-
-
- out.println("100 + 50 = " + plus.Plus2Str(100,50)+"<br>");
- out.println("150 + 200 = " + plus.Plus2Str(150,200)+"<br>");
- %>
運行結果輸出:
100 + 50 = 150
150 + 200 = 350
表示兩個類運行正常
開始寫C#的客戶端調(diào)用,啟動VS.Net2003,新建一個Windows應用程序,當然你也可以使用ASP.NET,在默認的Form1上添加一個Button1的按鈕.
然后添加一個引用HessianCSharp.DLL
添加一個類文件,命名為:PlusAPI.cs,CODE如下:
- using System;
- namespace HsnTest
- {
- public interface PlusAPI
- {
- string Plus2Str(int A,int B);
- }
- }
在Button1的Click中添加如下CODE:
- using hessiancsharp.client;
- private void button1_Click(object sender, System.EventArgs e)
- {
- CHessianProxyFactory factory = new CHessianProxyFactory();
- string url="http://localhost:8080/itbabywebsvc/plus";
- PlusAPI test = (PlusAPI)factory.Create(typeof(PlusAPI), url);
- string sValue = "5 + 10 =" + test.Plus2Str(5,10);
- MessageBox.Show(sValue );
-
- }
(###)
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。