- 浏览: 1236876 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (193)
- ant/maven (6)
- algorithm (5)
- tomcat/weblogic/jboss (6)
- javascript/jquery (13)
- java (33)
- flex/flash (0)
- JPA/Hibernate/myBatis (18)
- java concurrent (7)
- test (2)
- windows/linux (6)
- java collection (7)
- design pattern (2)
- life/health (3)
- database (12)
- IDE (4)
- spring/ejb (20)
- html/css/ckeditor (7)
- jsp/servlet (3)
- java io (13)
- java security (4)
- jni (0)
- svn/git (2)
- english (2)
- java jmx (1)
- xml (1)
- struts/springmvc (9)
- middleware (2)
- cache (1)
- cglib (3)
最新评论
-
jlotusYo:
博主,真感谢。
Java 密码扩展无限制权限策略文件 -
senninha:
这个。。是api说明吧。。
ScheduledExecutorService 源码分析 -
zoutao2008:
请问大文件如何处理?按你这种方式的话,文件超过200M时就会报 ...
hessian系列之二:上传文件 -
lwj1113:
lwj1113 写道谢谢博主这么细致的demo;在系列五中通过 ...
myBatis系列之五:与Spring3集成 -
lwj1113:
谢谢博主这么细致的demo;在系列五中通过testng测试类跑 ...
myBatis系列之五:与Spring3集成
Spring封装了hessian客户端和服务端的通用代码,把实现者和调用者作为bean放到spring容器中管理,简化了开发。
实际生产情况,接口项目里面只定义接口,分别为服务端项目和客户端项目所引用:
1. 接口项目:
pom.xml文件:
2. 服务端项目:
pom.xml文件:
web.xml
hessian-simple.xml:
启动服务端项目:
浏览器输入:http://localhost/hessian/addService.htm,查看是否可以调用。
3. 客户端项目:
pom.xml文件
spring-beans.xml文件
测试类:
运行测试方法,查看是否调用成功。
附:
客户端Hessian bean的配置也可以放到接口项目中,这样一来,调用hessian的工程只需添加对接口项目的引用,而后在spring配置文件中导入:
实际生产情况,接口项目里面只定义接口,分别为服务端项目和客户端项目所引用:
1. 接口项目:
pom.xml文件:
<groupId>com.john.spring</groupId> <artifactId>hessian-intf</artifactId> <version>1.0.0</version> <packaging>jar</packaging>
public interface AddService { public int add(int a, int b); public long add(long a, long b); }
2. 服务端项目:
pom.xml文件:
<groupId>com.john.spring</groupId> <artifactId>hessian-server</artifactId> <version>1.0.0</version> <packaging>war</packaging> <properties> <testng.version>6.4</testng.version> <hessian.version>4.0.7</hessian.version> <spring.version>3.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>com.john.spring</groupId> <artifactId>hessian-intf</artifactId> <version>1.0.0</version> </dependency> <dependency><!-- DispatcherServlet在spring-webmvc包中 --> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>${hessian.version}</version> </dependency> </dependencies>
public class AddServiceImpl implements AddService { @Override public int add(int a, int b) { System.out.println("add(int a, int b) is invoked"); return a + b; } @Override public long add(long a, long b) { System.out.println("add(long a, long b) is invoked"); return a + b; } }
web.xml
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>hessian</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/hessian-simple.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>hessian</servlet-name> <url-pattern>*.htm</url-pattern> </servlet-mapping> </web-app>
hessian-simple.xml:
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="addService.htm" class="com.john.spring.hessian.service.impl.AddServiceImpl" /> <bean name="/addService.htm" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="addService.htm" /> <property name="serviceInterface" value="com.john.spring.hessian.service.intf.AddService" /> </bean> </beans>
启动服务端项目:
浏览器输入:http://localhost/hessian/addService.htm,查看是否可以调用。
3. 客户端项目:
pom.xml文件
<groupId>com.john.spring</groupId> <artifactId>hessian-client</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <properties> <testng.version>6.4</testng.version> <hessian.version>4.0.7</hessian.version> <spring.version>3.1.2.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>com.john.spring</groupId> <artifactId>hessian-intf</artifactId> <version>1.0.0</version> </dependency> <dependency><!-- HessianProxyFactoryBean在spring-web包中 --> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>com.caucho</groupId> <artifactId>hessian</artifactId> <version>${hessian.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>${testng.version}</version> <scope>test</scope> </dependency> </dependencies>
spring-beans.xml文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="addService" class="org.springframework.remoting.caucho.HessianProxyFactoryBean"> <property name="serviceUrl" value="http://localhost:8080/hessian/addService.htm" /> <property name="serviceInterface" value="com.john.spring.hessian.service.intf.AddService" /> <!-- By default the value is false. As a matter of fact, it doesn't influence the test result, the overloaded method still be supported --> <property name="overloadEnabled" value="false" /> </bean> </beans>
测试类:
@ContextConfiguration(locations={"classpath:conf/spring/spring-beans.xml"}) public class AddServiceTest { @Autowired AddService addService; @Test public void test() { int r = addService.add(4, 5); System.out.println("The result is " + r); } }
运行测试方法,查看是否调用成功。
附:
客户端Hessian bean的配置也可以放到接口项目中,这样一来,调用hessian的工程只需添加对接口项目的引用,而后在spring配置文件中导入:
<import resource=”classpath*:conf/spring/spring-*.xml” />
评论
1 楼
hl174
2016-06-02
启动服务端项目:
浏览器输入:http://localhost/hessian/addService.htm,查看是否可以调用。
这里报错了
javax.servlet.ServletException: No adapter for handler [day0602.IHelloServiceImpl@738cf5]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
浏览器输入:http://localhost/hessian/addService.htm,查看是否可以调用。
这里报错了
javax.servlet.ServletException: No adapter for handler [day0602.IHelloServiceImpl@738cf5]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
发表评论
-
Netty系列之二、Netty组件
2014-10-12 19:55 0Netty主要由以下几个组件构成: Bootstrap o ... -
Netty系列之二:传输方式
2014-09-17 22:35 0NIO (Non-blocking I/O) io.netty ... -
Java正则表达式实例
2014-08-25 22:50 1887题目: 有两个文件context.txt和words ... -
quartz系列之九:存储
2014-08-05 13:16 0这里以1.8.x为例: 任务 ... -
JVM 四种引用
2014-04-24 19:56 17151. 强引用 指通过普通 ... -
Proxy 源码分析
2014-04-21 10:47 0public class Proxy implements ... -
NIO UDP 编程
2014-04-17 23:18 4201和TCP的SocketChannel类似,UDP的Dat ... -
Matcher 源码分析
2014-04-15 14:45 0首先看下接口: public interface Matc ... -
BTrace 使用
2014-03-20 18:03 0简介 Btrace (Byte Trace)是Sun推出的一款 ... -
NIO Socket 编程
2014-04-11 22:48 1601Java NIO (Nonblocking IO)解决了常规I ... -
hessian系列之二:上传文件
2014-02-17 17:16 6146hessian较早版本通过 byte[] 进行文件传输;4.0 ... -
hessian系列之一:Hello world
2014-01-06 20:51 2253Hessian是一个Web Service的轻量级二进制协议, ... -
XStream:自定义转换器
2013-12-30 22:47 0XStream是一款不错的oxm (Object-XML ma ... -
Http连接工具类
2013-12-28 16:13 0public class HttpConnUtil { ... -
Integer源码分析
2013-12-26 19:59 0private static String toU ... -
全排序
2013-12-23 21:02 0写一个函数, 如 foo(String str), 打印出 s ... -
logback系列之四:输出日志到不同文件
2013-12-03 16:25 68752logback系列之一:输出日志到控制台 logback系列之 ... -
Properties 源码分析
2013-11-26 10:32 01. Properties类扩展了Hashtable,用来保存 ... -
logback系列之三:输出日志到文件(滚动)
2013-11-16 23:37 64258logback系列之一:输出日志到控制台 logback系列之 ... -
logback系列之二:输出日志到文件
2013-11-15 15:20 30232logback系列之一:输出日志到控制台 logback系列之 ...
相关推荐
Spring集成Hessian案例
Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...
这是Hessian和Spring集成的示例,具体步骤请参考本人博客: http://blog.csdn.net/jjasun/article/details/29593083
NULL 博文链接:https://wo-niu.iteye.com/blog/2200720
NULL 博文链接:https://zwustudy.iteye.com/blog/1611651
NULL 博文链接:https://xiaofancn.iteye.com/blog/2356498
hessian学习实例,hessian框架例子,与Spring集成。包括了server端和client端
hessian3.0.1.jar, 可以和spring1.x集成,不会报错
一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。
hessian-demo工程示例,已集成内置jetty插件,可以直接运行。 spring4,hessian4.0.7
Spring为各种远程访问技术提供集成工具类。Spring远程访问通过使用普通POJOs,能更容易的开发远程访问服务。目前,Spring远程访问的主要技术如下: 1. 远程调用RMI(Remote Method Invocation): 通过使用 ...
(11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...
Hessian 是一种轻量级的二进制RPC通讯框架,基于HTTP使用servlet 暴漏web service. 本文描述了单独使用和及spring集成使用,并介绍了证书加密,签名及非证书类如DES加密方式. 文尾附官方实例链接.
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...
13.1.1. 与其他web框架的集成 13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. ...
17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...
13.1.1. 与其他MVC实现框架的集成 13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. ...
17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...
13.1.1. 与其他MVC实现框架的集成 13.1.2. Spring Web MVC框架的特点 13.2. DispatcherServlet 13.3. 控制器 13.3.1. AbstractController 和 WebContentGenerator 13.3.2. 其它的简单控制器 13.3.3. ...