Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据
1 注意事项
在进行基于Hessian的项目开发时,应当注意以下几点:
▲JAVA服务器端必须具备以下几点:
·包含Hessian的jar包
·设计一个接口,用来给客户端调用
·实现该接口的功能
·配置web.xml,配好相应的servlet
·对象必须实现Serializable 接口
·对于复杂对象可以使用Map的方法传递
▲客户端必须具备以下几点:
·java客户端包含Hessian.jar的包。C#中引用hessianCSharp.dll
·具有和服务器端结构一样的接口。包括命名空间都最好一样
·利用HessianProxyFactory调用远程接口。
简单JAVA客户端例子:
新建一个名EasyHession的webProject项目,将Hessian.jar放入web-inf下的lib中
创建接口:
package app.demo;
public interface BasicAPI {
public void setGreeting(String greeting);
public String hello();
public User getUser();
}
实现接口:
package app.demo;
public class BasicService implements BasicAPI {
private String _greeting = "Hello, world";
public void setGreeting(String greeting)
{
_greeting = greeting;
System.out.println("set greeting success:"+_greeting);
}
public String hello()
{
return _greeting;
}
public User getUser() {
return new User("prance", "meshow");
}
}
创建一个实现Serializable的projo类也可以是Bean。
package app.demo;
import java.io.Serializable;
public class User implements Serializable{
String userName ="snoopy";
String password ="showme";
public User(Stringuser, String pwd) {
this.userName =user;
this.password= pwd;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}
接下来是配置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">
<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>app.demo.BasicService</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
为了测试可以在编辑一个简单的test.jsp
<%@ pageimport="com.caucho.hessian.client.HessianProxyFactory,
app.demo.BasicAPI"%>
<%@page language="java"%>
<%
HessianProxyFactory factory = newHessianProxyFactory();
String url = ("http://" +request.getServerName() + ":" +request.getServerPort() +
request.getContextPath() + "/hello");
out.println(url);
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class,url);
out.println("Hello: " + basic.hello());
out.println("Hello: " + basic.getUser() .getUserName() );
out.println("Hello: " +basic.getUser().getPassword() );
%>
将一切配置成功后,将项目发布到web 服务器上去,可以是Tomcat,Rain等等。
进入
结果如下:
Hello: Hello, world
Hello: snoopy
Hello: showme
说明服务器端已经编写成功。
创建一个名为HessianClient的JAVAProject,载入hessian.jar包
创建与服务器端一样的接口,及基础类
public interface BasicAPI{
public void setGreeting(String greeting);
public String hello();
public User getUser();
}
import java.io.Serializable;
public class User implements Serializable{
String userName ="snoopy";
String password ="showme";
public User(Stringuser, String pwd) {
this.userName =user;
this.password= pwd;
}
public String getUserName() {
return userName;
}
public String getPassword() {
return password;
}
}
importcom.caucho.hessian.client.HessianProxyFactory;
public class BasicClient {
public static void main(String[] args)
throwsException
{
String url ="http://127.0.0.1:8080/Hessian/hello";
HessianProxyFactory factory = new HessianProxyFactory();
BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);
System.out.println("Hello:" + basic.hello());
System.out.println("Hello:" + basic.getUser().getUserName());
System.out.println("Hello:" + basic.getUser().getPassword());
basic.setGreeting("HelloGreeting");
System.out.println("Hello:" + basic.hello());
}
}
运行结果:
Hello: Hello, world
Hello: prance
Hello: meshow
Hello: Hello Greeting
相关推荐
用LR对hessian接口做性能测试,使用JAVA协议,没有界面的性能测试
在Spring+iabtis框架中,增加hessian接口,要实现以下几点: 1.绕过系统本身的认证,拦截器直接将该实现方法的servlet直接调用,需要重写拦截器。 2.由于绕过了spring和Struts,请求没有经过封装的事物管理器实例化,...
Java的Hessian库通常集成在如Resin这样的应用服务器中,例如提供的链接所示的Resin 3.1和4.0版本的文档和API参考,可以帮助开发者深入理解如何在Java和Python之间建立和使用Hessian接口。通过这些接口,开发者可以...
这个压缩包包含了与Hessian接口相关的组件和示例,主要用于性能测试。 首先,我们看到的是`hkcss-client-1.0-SNAPSHOT.jar`,这是一个客户端库,它提供了与服务端进行Hessian通信的API。SNAPSHOT版本通常表示这是...
对于非X.509证书的加密,用户需要自定义类继承`HessianEnvelope`,并实现`wrap(Hessian2Output)`,`unwrap(Hessian2Input)`和`unwrapHeaders(Hessian2Input)`接口,以实现自己的加密逻辑。 **封装工具包** 虽然在...
`Hessian`可能是一个服务器端的实现,展示了如何将服务暴露为Hessian接口,让客户端可以通过HTTP进行二进制调用。而`HessianClient`则可能是客户端的示例,演示了如何连接到服务器并调用服务端的方法。 Hessian的...
4. **配置Spring**:在Spring的配置文件中,使用`<bean>`标签定义服务bean,并使用`<hessian:service>`或`<bean class="...">`标签暴露该服务为Hessian接口。 5. **客户端配置**:在客户端,同样需要引入Hessian...
- **Hessian接口** #### 三、HTTP接口的数据传递方式 HTTP接口数据传递主要通过两种方式:**GET**和**POST**。 1. **GET方式**:主要用于获取数据,如商品信息查询、搜索等场景。GET请求通常将参数附加在URL中。 ...
本教程将通过一个入门Demo来介绍如何使用Hessian进行远程接口调用。 首先,让我们理解Hessian的优势。与XML-RPC相比,Hessian使用二进制编码,因此在网络传输时占用的带宽更少,解析速度更快。此外,Hessian支持...
1. **服务器端**:服务器端需要实现Hessian服务接口,通过特定的HessianServlet或者HessianProxyFactory来创建服务暴露点。 2. **客户端**:客户端通过HessianProxyFactory创建一个代理对象,该对象可以像操作本地...
一个简单的例子学习hessian服务:服务端为Java,客户端为C#。 先要准备好C#和Java的第三方类库:... 创建一个通信接口IHello: package hessian.test.server; import java.util.ArrayList; p
这包括设置服务器端和客户端的Hessian服务,定义服务接口,处理序列化和反序列化的过程,以及调试可能出现的问题。在进行版本升级时,要注意兼容性问题,确保旧版本的服务仍能正常工作,同时充分利用新版本带来的...
通过简单的API,开发者可以轻松地创建服务端接口并暴露为Hessian服务,同时在客户端通过HessianProxyFactory来创建代理对象,调用远程服务就像调用本地方法一样。 3. **Python中的Hessian**:Python也有对应的...
- 在消费者端的代码中,你可以像调用本地方法一样直接调用服务接口的方法,Dubbo会通过Hessian协议将调用转换为HTTP请求发送给服务提供者。 - 由于Hessian的序列化特性,数据类型可以被准确地传输,包括基本类型、...
2. **动态类型**:Hessian支持动态类型,这意味着服务端和客户端无需预先定义接口或数据结构,可以自动处理不同类型的参数和返回值。 3. **简单高效**:Hessian协议的设计目标是简单且快速,它不包含复杂的XML层次...
2. **配置Hessian服务**: 在Spring的配置文件中,使用`<bean>`标签定义HessianExporter,暴露服务接口。 ```xml <property name="urlPath" value="/helloHessian" /> ``` 这里的`service`属性指向服务...
2. Hessian服务端:实现了Hessian协议的服务端接口,允许开发者创建远程服务并暴露给客户端调用。 3. Hessian客户端:提供了客户端接口,可以调用远程服务,获取服务返回的结果。 4. 类型映射:定义了不同语言之间...
2. **Web服务**:Hessian可以作为Web服务的底层通信协议,提供比RESTful或SOAP更高效的接口。 3. **微服务通信**:在微服务架构中,Hessian可作为服务间的通信协议,降低通信成本,提高系统响应速度。 Hessian的...
Hessian提供了一定的兼容性策略,但开发者仍需谨慎设计服务接口,避免因版本变化导致的不兼容问题。 8. **性能优化**: Hessian服务端的性能可以通过多种方式优化,例如减少不必要的数据序列化,优化网络通信,...
Hessian 协议格式 Hessian 协议是一种轻量级的 remoting on http 工具,使用简单的方法提供了 RMI 的功能。采用的是二进制 RPC 协议,所以它很适合于发送二进制数据。Hessian 主要用作面向对象的消息通信。 ...