想来想去还是把hessian的应用放到SOA栏目中来吧
hessian实现了远程调用,不需要学习WEB service的一些规范就可以直接上手, 它一个轻量级的Java远程访问的解决方案。Hessian很像WebService,只不过它不使用SOAP协议,而是使用它自己的binary协议
使用它只需要3个关键的类
1、stub(存根) 也就是服务器端和客户端的公共接口
2、服务器端对该接口的实现类serviceimpl
3、服务器端的sevlet ,hessian帮我们实习了个HessianServlet,当然我们可以直接让我们的serviceimpl继承HessianServlet
下面举例,例子在网络上,官方文档上都有的
stub
/**
* @author 付志超
* @time Sep 26, 2008 2:35:54 PM
*/
/**
*
*/
package com.alimama.function;
import com.alimama.bean.Student;
public interface SayHello {
public String sayHello(String name);
public Student getStudent() ;
}
serviceimpl
/**
* @author 付志超
* @time Sep 26, 2008 2:36:58 PM
*/
package com.alimama.function.impl;
import com.alimama.bean.Student;
import com.alimama.function.SayHello;
import com.caucho.hessian.server.HessianServlet;
public class SayHelloImpl extends HessianServlet implements SayHello {
public String sayHello(String name) {
return "hello "+name;
}
@Override
public Student getStudent() {
Student s=new Student();
s.setName("付志超");
s.setSchool("武汉理工大学");
return s;
}
}
本例中需要传输的序列化的bean
/**
* @author 付志超
* @time Sep 26, 2008 3:42:47 PM
*/
package com.alimama.bean;
import java.io.Serializable;
public class Student implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9006571629757493042L;
private String name;
private String school;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String toString() {
return name+" "+school;
}
}
最后是web.xml的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.alimama.function.impl.SayHelloImpl
</servlet-class>
</servlet>
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>com.alimama.function.impl.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
当然如果我们的 serviceimpl没有实现 HessianServlet
那么web.xml应该修改成为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>
com.caucho.hessian.server.HessianServlet
</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>com.alimama.function.impl.SayHelloImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>com.alimama.function.SayHello</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
记住 Student一定要实习可序列化接口
最后是我们的客户端的调用
/**
* @author 付志超
* @time Sep 26, 2008 2:57:27 PM
*/
package com.alimama.test;
import java.net.MalformedURLException;
import com.alimama.function.SayHello;
import com.caucho.hessian.client.HessianProxyFactory;
public class HessianClientTest {
public static void main(String[] args) {
String url="http://127.0.0.1:8080/testHessian/hello";
HessianProxyFactory factory=new HessianProxyFactory();
try {
SayHello say=(SayHello) factory.create(SayHello.class, url);
System.out.println(say.sayHello("abc"));
System.out.println(say.getStudent());
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
启动服务器,然后执行上面的客户端,就会看到输出
hello abc
付志超 武汉理工大学
还有点要注意 如果用最新的版本的 hessian-3.1.6.jar hessian-3.2.0.jar 都出现问题 无法获得 出现IO异常
但是使用一个 hessian-3.0.20.jar 的老包 是没问题的
=====
OK 以后在进一部使用hessian了
分享到:
相关推荐
hessian关于java使用的一个小例子
hessian 使用实例,更简单的service
Hessian 是一种轻量级的二进制RPC通讯框架,基于HTTP使用servlet 暴漏web service. 本文描述了单独使用和及spring集成使用,并介绍了证书加密,签名及非证书类如DES加密方式. 文尾附官方实例链接.
远程方法调用的比较,Hessian方法的介绍和相关配置.Hessian是一个轻量级的remoting on http工具,...只是它不使用SOAP协议,但相比webservice而言更简单、快捷。这个文件可以是hessian在spring项目和web项目的简单配置
Hessian(C#)介绍及使用说明Hessian(C#)介绍及使用说明
一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。
NULL 博文链接:https://inter12.iteye.com/blog/1555678
此例子有两个工程,hessianServer(服务端工程),hessianClient(客户端工程),把 hessianServer工程 启动之后就可以通过 hessianClient 访问 服务端的服务了。
hessian学习实例,hessian框架例子,与Spring集成。包括了server端和client端
基于matlab使用 hessian 特征值增强 2D3D 图像中的血管脊状结构
android端使用hessian跟web服务器通讯,导入即可运行,有问题请在博客留言。http://blog.csdn.net/tan313/article/details/49536891
该案例有hessian java python,该案例有hessian java python,该案例有hessian java python
Hessian多个版本下载,包括Hessian3.1.6,Hessian3.2.1,Hessian4.0.7
赠送jar包:hessian-4.0.63.jar; 赠送原API文档:hessian-4.0.63-javadoc.jar; 赠送源代码:hessian-4.0.63-sources.jar; 赠送Maven依赖信息文件:hessian-4.0.63.pom; 包含翻译后的API文档:hessian-4.0.63-...
此代码展示了如何使用 springMVC 搭建 hessian 服务和 Controller 服务,里面还有如何使用的 readme 文件,告诉你如何使用它们。
提供hessian-4.0.37.jar下载,及服务器端与客户端通信的实例
赠送jar包:hessian-3.3.6.jar; 赠送原API文档:hessian-3.3.6-javadoc.jar; 赠送源代码:hessian-3.3.6-sources.jar; 赠送Maven依赖信息文件:hessian-3.3.6.pom; 包含翻译后的API文档:hessian-3.3.6-javadoc-...
hessian资料3hessian资料3hessian资料3hessian资料3hessian资料3
基于Hessian的冠状动脉血管造影分割方法
赠送jar包:hessian-3.3.6.jar 赠送原API文档:hessian-3.3.6-javadoc.jar 赠送源代码:hessian-3.3.6-sources.jar 包含翻译后的API文档:hessian-3.3.6-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven...