Hessian:hessian是一个轻量级的remoting onhttp工具。
一、hessian简单示例:
1.服务端接口:
public interface IAlarm {
public String saveAlarm(String alarmStr);
public String firstAlarm(String alarmStr);
}
2.服务端实现类
public class AlarmImpl extends HessianServlet implements IAlarm{
public String saveAlarm(String alarmStr) {
return alarmStr+",保存成功。";
}
public String firstAlarm(String alarmStr) {
return alarmStr+",通知。";
}
}
3.服务端web.xml需要添加的配置
<servlet>
<servlet-name>Alarm</servlet-name>
<servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
<init-param>
<param-name>home-class</param-name>
<param-value>my.hessian.service.impl.AlarmImpl</param-value>
</init-param>
<init-param>
<param-name>home-api</param-name>
<param-value>my.hessian.service.IAlarm</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Alarm</servlet-name>
<url-pattern>/Alarm</url-pattern>
</servlet-mapping>
4.客户端接口(跟服务端接口一致,接口所在包路径可不同)
public interface IAlarm {
public String saveAlarm(String alarmStr);
public String firstAlarm(String alarmStr);
}
5.客户端调用
HessianProxyFactory factory = new HessianProxyFactory();
String url="http://192.168.2.243/knowledgePoints/Alarm";
IAlarm alarm=(IAlarm)factory.create(IAlarm.class, url);
System.out.println(alarm.saveAlarm("超速报警"));
6.示例说明
服务端和客户端都需要引入hessian-4.0.7.jar包。该示例可运行。
二、hessian与spring整合示例:
1.服务端接口
public interface ITripAgent {
public String saveTrip(String tripStr);
}
2.服务端实现类
public class TripAgent extends HessianServlet implements ITripAgent{
public String saveTrip(String tripStr){
return tripStr+",保存成功";
};
}
3.服务端WEB-INF下加一个remoting-servlet.xml文件
<?xml version = "1.0" encoding = "UTF-8" ?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop = "http://www.springframework.org/schema/aop"
xmlns:tx = "http://www.springframework.org/schema/tx"
xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >
<!-- 定义普通的bean实例 -->
<bean id="Trip" class="my.hessian.service.impl.TripAgent"/>
<!-- 使用HessianServiceExporter 将普通bean导出成Hessian服务-->
<bean name="/remoting" class="org.springframework.remoting.caucho.HessianServiceExporter">
<!-- 需要导出的目标bean-->
<property name="service" ref="Trip"/>
<!-- Hess;ian服务的接口-->
<property name="serviceInterface" value="my.hessian.service.ITripAgent"/>
</bean>
</beans>
4.服务端web.xml添加如下配置
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <!--添加监听器 -->
</listener>
<!-- 指定spring的配置文件在哪里,在这个配置文件中导出了Hessian服务 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:my/hessian/config/spring/bean/remoting-servlet.xml</param-value>
</context-param>
<!-- Hessian通过Servlet提供远程服务,需要将某个匹配的模式映射到hessian服务中,spring的dispatcherServlet能完成此功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务,web.xml只是定义了“请求转发器”,该转发器将匹配/remoting/*的请求截获,转发给context的bean处理。而HessianServiceExporter提供bean服务。 -->
<servlet>
<servlet-name>remoting</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>remoting</servlet-name>
<url-pattern>/remoting/*</url-pattern>
</servlet-mapping>
5.客户端接口(跟服务端接口一致,接口所在包路径可不同)
public interface ITripAgent {
public String saveTrip(String tripStr);
}
6.客户端添加一个remoting-client.xml文件
<?xml version = "1.0" encoding = "UTF-8" ?>
<beans xmlns = "http://www.springframework.org/schema/beans"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop = "http://www.springframework.org/schema/aop"
xmlns:tx = "http://www.springframework.org/schema/tx"
xsi:schemaLocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" >
<bean id="myServiceClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl">
<!--下面的value是客户端要访问服务端的请求 knowledgePoints是服务端的项目访问名 ,remoting与服务端的一致,客户端请求服务端,匹配的请求到达服务端后,对于能匹配的请求,会通过spring的DispatcherServlet转发hessian服务-->
<value>http://192.168.2.243/knowledgePoints/remoting</value>
</property>
<property name="serviceInterface">
<value>my.hessianClient.ITripAgent</value>
</property>
</bean>
</beans>
7.客户端web.xml中添加一下代码
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> <!--添加监听器 -->
</listener>
<!-- 指定spring的配置文件在哪里,在这个配置文件中导出了Hessian服务 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/remoting-client.xml</param-value>
</context-param>
</web-app>
8.客户端调用
ApplicationContext context = new ClassPathXmlApplicationContext("my/hessianClient/remoting-client.xml");
ITripAgent trip = (ITripAgent) context.getBean("myServiceClient");
System.out.println(trip.saveTrip("白石洲到茂华大厦的行程"));
9.示例说明
服务端和客户端都需要引入spring的jar包(多个,不知道需要哪些,就把spring的jar全引入) ,服务端需要hessain的jar包(1个)。该示例可运行。
三、其他(在包下找文件的两种写法)
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/my/hessianClient/remoting-client.xml</param- value>
</context-param>
中/WEB-INF/classes/my/hessian/config/spring/bean/remoting-servlet.xml
与 classpath:my/hessian/config/spring/bean/remoting-servlet.xml 是等价的
四、遇到的奇怪问题
hessian与spring整合的示例中, remoting-servlet.xml放在包路径my.hessian.config.spring.bean下时,二(7) 中配置 classpath:my/hessian/config/spring/bean/remoting-servlet.xml会报找不到 WEB_INF/remoting-servlet.xml文件的错误,报的路径找不到与我配置的路径是不一样的,这个错报的很离谱,将remoting-servlet.xml放到WEB-INF下时,就不会报错了,有知道原因的,请回复我,3q。
分享到:
相关推荐
在IT行业中,Hessian是一种高效的二进制RPC(Remote Procedure Call)协议,它允许Java应用程序之间进行远程调用,就像调用本地方法一样便捷。Hessian由Caucho公司开发,其目标是提供轻量级、快速且简洁的通信方式。...
"HessianDemo"可能是整个示例的主程序或者测试用例,包含了Hessian协议的完整流程,包括服务器启动、客户端连接、数据交换等步骤。 总之,Hessian为Java和C#之间的跨平台通信提供了便利,通过高效的数据序列化和反...
标题中的“HessianCSharp_Test.rar_Hessian java”暗示了这是一个关于使用C#(.Net)通过Hessian协议与Java进行交互的示例或测试项目。Hessian是一种二进制的Remoting协议,旨在提高远程过程调用(RPC)的效率,它...
Java Hessian小试(转) Java Hessian是一种二进制的RPC(远程过程调用)协议,由Caucho...在压缩包子文件"**Hessian**"中,可能包含了一些示例代码或者Hessian的实现细节,对于学习和研究Hessian的源码有一定的帮助。
Hessian是一种轻量级的RPC(远程过程调用)协议,它由Caucho公司开发,主要用于实现Java和Java之间,以及Java和其他语言之间的高效、跨平台的远程通信。Hessian提供了一种二进制的序列化格式,使得在网络上传输的...
通过上述示例,我们展示了如何在Java中设置Hessian服务端和客户端。了解并掌握Hessian,可以帮助你构建更加高效、灵活的分布式系统。在实际项目中,根据需求,还可以结合Spring框架等进行更高级的集成和配置。
这个"PHP与Java通信Demo源码"是基于Hessian协议实现的一个示例,展示了如何在PHP和Java之间建立通信。现在,我们将深入探讨Hessian协议以及如何使用它在PHP和Java之间进行数据交换。 首先,Hessian协议由Caucho ...
Java Hessian远程调用是一种高效的、轻量级的RPC(Remote Procedure Call)解决方案,它允许Java应用程序通过网络进行跨语言的通信。Hessian是BEA Systems开发的一种二进制Web服务协议,它提供了序列化和远程方法...
现在,让我们通过一个简单的Java示例来了解如何使用Hessian。在这个例子中,我们将创建一个服务器端服务并暴露一个方法,然后在客户端调用这个远程方法。 1. 首先,我们需要在服务器端定义一个服务接口和实现类。...
Spring Boot 整合 Hessian 的示例 在本文中,我们将通过实例代码来介绍如何将 Hessian 集成到 Spring Boot 应用程序中。Hessian 是一个基于 RPC(Remote Procedure Call,远程过程调用)的轻量级框架,它提供了一个...
这是一个Hessian入门学习的实例,程序包是一个web工程,使用intellij idea + Maven开发,其中通过两个方式展示了使用...对于Hessian Servlet的使用也展示了两种方式,一种是在web.xml中配置,一种是在java代码中配置。
Hessian是一种二进制协议,它被广泛应用于分布式系统中,特别是Java和.NET平台之间,用于实现高效、轻量级的远程方法调用(RPC)。Hessian的目标是提供一种快速、简洁的数据序列化和网络传输机制,使得服务端和...
在IT行业中,Hessian和Spring的集成是服务端开发中常用的一种技术,它允许我们将Java对象作为远程服务进行调用,极大地提高了开发效率和系统的可扩展性。下面将详细讲解Hessian与Spring集成的关键知识点。 首先,...
- **二进制序列化**:Hessian的二进制序列化机制将Java对象转换为紧凑的二进制形式,这种方式不仅比XML等文本格式更节省空间,而且提高了序列化的速度。 - **远程调用模型**:Hessian提供了客户端和服务端两部分组件...
你可以通过阅读开源的Hessian库,如Caucho Hessian的Java实现,来了解其底层细节。 至于"工具",有一些工具可以帮助开发者测试和调试Hessian服务,例如,Hessian Proxy工具允许你通过HTTP代理的方式交互Hessian服务...
本示例将介绍如何在Java中利用Dubbo的Hessian协议进行HTTP请求的实现。 首先,我们需要理解Hessian协议的基本原理。Hessian是一种高效的序列化协议,它将Java对象转换为二进制流,通过网络传输,然后在另一端还原为...
7. **示例代码**:在压缩文件“zxecf”中,很可能包含了实现最小二乘法的Java源代码。这份代码可能包括了数据读取、矩阵运算和结果输出等部分,供初学者学习和参考。 通过理解以上知识点并结合提供的代码示例,初学...
7. **实际应用**:在"Test3"、"PyDome1"和"Test1"这些文件中,可能包含了实际的代码示例或者测试用例,展示了如何在Java和Python中设置Hessian服务和客户端,以及如何进行调用。通过这些例子,开发者可以深入理解...
在本示例中,"ExampleImp.java"和"Example.java"代表Java端的服务接口和服务实现,而"Test.java"是客户端代码,用于调用Web服务。 为了在Java中使用Hessian,我们首先需要引入Hessian库。"hessian-3_2-snap.jar...
Hessian是Apache项目下的一个轻量级的RPC(Remote Procedure Call,远程过程调用)框架,它提供了一种高效的二进制协议,用于在网络之间传递Java对象。下面我们将详细介绍Hessian的实现原理以及如何在实际开发中运用...