Hessian使用

Hessian和webservice非常类似,只是使用范围不及webservice广泛,因为其标准没有被广泛承认,但它也支持多种语言,包括java,c,c#,php等。Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

(1)在web.xml中加入:com.caucho.hessian.server.HessianServlet的类映射

  <!-- hessian test-->
<servlet> 
    <servlet-name>hello</servlet-name>  
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>  
         <init-param>  
            <param-name>service-class</param-name>  
<param-value>test.server.HelloImpl</param-value>  
        </init-param>
    </servlet>       
    <servlet-mapping>  
        <servlet-name>hello</servlet-name>  
        <url-pattern>/hello.xsp</url-pattern>  
    </servlet-mapping>

(2)实现服务端test.server.HelloImpl类:

package test.server;
import java.util.Iterator;
import java.util.List;
import test.Hello;
import test.User;

public class HelloImpl implements Hello {
private String s = "来自服务端";
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public String sayHello() {
return s;
}
public User getUser(Long id) {
User user = new User();
user.setId(id);
user.setName("中文姓名");
return user;
}
/**
* test for get obj from client
*/
public int client2server(User user) {
try {
System.err.println("**********************************" +user);
return 1;
} catch (Exception e) {
return -1;
}
}
public int clientList2server(List<User> list) {
System.err.println("**********************************收到来自客户端的list");
if(null != list){
System.err.println("**********************************收到来自客户端的list == " +list.size());
for (Iterator<User> it = list.iterator(); it.hasNext();) {
User user = it.next();
System.err.println(user);
}
}
return 0;
}
}
 

(3)客户端调用:(java)

通过访问http://localhost/DataRep.xsp可以实现访问;

String url = "http://127.0.0.1:8088/library/hello.xsp";
HessianProxyFactory factory = new HessianProxyFactory();
factory.setDebug(true);
Hello hello = (Hello)factory.create(Hello.class, url);
System.err.println(hello.sayHello());//服务端返回字符串
// System.err.println(hello.getUser(new Long(999)));//服务端返回对象

//发送对象集合给服务端
User user = null;
List<User> list = new ArrayList<User>();
for (int i = 0; i < 99; i++) {
user = new User();
user.setId(new Long(new Random().nextInt(9999)));
user.setName("我是客户端");
list.add(user);
}
System.err.println(hello.clientList2server(list));


(3)客户端调用:(c#)

添加一个引用HessianCSharp.DLL
  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 =  test.Plus2Str(5,10);
  MessageBox.Show(sValue );
  }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值