C#使用Hessian调用JAVA的函数

3 篇文章 0 订阅

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好多年了,小巧实用,大型的项目我也使用过,非常稳定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值