Hessian其实很像web service,只不过它的协议不是SOAP,而是它自己规定的binary协议。Hessian的server端提供一个servlet基类,client端获得一
个service接口(也就是stub)之后调用上面的方法,stub将方法调用marshal之后通过HTTP传到server,server借助reflection调用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#的客户端调用,启动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 );
-
- }
(###)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。