加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Hessian使用

发布时间:2020-12-17 01:03:23 所属栏目:安全 来源:网络整理
导读:Hessian和webservice非常类似,只是使用范围不及webservice广泛,因为其标准没有被广泛承认,但它也支持多种语言,包括java,c,c#,php等。 Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能. 相比WebService,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 );   } ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读