WEB开发网
开发学院WEB开发Jsp C#使用Hessian调用JAVA&... 阅读

C#使用Hessian调用JAVA的函数

 2008-01-05 17:59:16 来源:WEB开发网   
核心提示:Hessian其实很像web service,只不过它的协议不是SOAP,C#使用Hessian调用JAVA的函数,而是它自己规定的binary协议,Hessian的server端提供一个servlet基类,client端

  Hessian其实很像web service,只不过它的协议不是SOAP,而是它自己规定的binary协议。Hessian的server端提供一个servlet基类,client端获得一
  
  个service接口(也就是stub)之后调用上面的方法,stub将方法调用marshal之后通过HTTP传到server,server借助reflection调用service方法。
  
  实战开始,先到www.caUCho.com上去下载一个Resin,在宝宝的网上也有(itbaby.jss.cn)
  
  然后在itbaby.jss.cn上下载一个HessianCSharp的DLL文件,供C#使用
  
  1.开始,在Resin解压后,我在WEB-INF中建立一个目录itbaby,然后按Resin的帮助在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;
  }
  }
  
  2.在WEB-INF目录下建了个web.xml文件(注重原来的Resin带的我都删除了)
  

  内容如下:
  <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>
  
  3.写一个jsp的测试文件(test.jsp),看看两个类是否运行正常
  

  <%@ 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
  表示两个类运行正常
  
  4.开始写C#的客户端调用,启动VS.Net2003,新建一个Windows应用程序,当然你也可以使用asp.net,在默认的Form1上添加一个Button1的按钮.
  

  然后添加一个引用HessianCSharp.DLL,(就是让你下载的那个DLL)
  
  5.添加一个类文件,命名为:PlusAPI.cs,CODE如下:

  using System;
  namespace HsnTest
  {
  public interface PlusAPI
  {
  string Plus2Str(int A,int B);
  }
  }
  
  在Button1的Click中添加如下CODE:
  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 );
  
  }
  
  别忘了应用命名空间
  using hessiancsharp.client;
  
  总结:我们可以考虑这样来使用java的方法,Hessian还有 For php,Python,C++的类库,有爱好的朋友可以在Caucho.com上多看看,多一句话,宝宝的网站就是用Resin,我使用Resin好多年了,小巧实用,大型的项目我也使用过,非常稳定

Tags:Hessian JAVA

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接