`

hessian系列之三:与Spring集成

    博客分类:
  • java
阅读更多
Spring封装了hessian客户端和服务端的通用代码,把实现者和调用者作为bean放到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

相关推荐

    Spring集成Hessian案例

    Spring集成Hessian案例

    spring 集成 hessian例子

    Hessian是一个轻量级的remoting onhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。参考文档地址...

    Hessian和Spring集成示例

    这是Hessian和Spring集成的示例,具体步骤请参考本人博客: http://blog.csdn.net/jjasun/article/details/29593083

    Spring中集成Hessian的问题

    NULL 博文链接:https://wo-niu.iteye.com/blog/2200720

    Hessian(Spring集成的)的应用与研究

    NULL 博文链接:https://zwustudy.iteye.com/blog/1611651

    spring集成Hessian插件配置改成自动注入。

    NULL 博文链接:https://xiaofancn.iteye.com/blog/2356498

    hessian学习实例

    hessian学习实例,hessian框架例子,与Spring集成。包括了server端和client端

    hessian3.0.1.jar

    hessian3.0.1.jar, 可以和spring1.x集成,不会报错

    一个简单的Hessian示例

    一个简单的Hessian,简单介绍了Hessian的使用方式,介绍了Hessian和Spring集成的使用方式,以及单独使用Hessian的方式。

    hessian-demo示例

    hessian-demo工程示例,已集成内置jetty插件,可以直接运行。 spring4,hessian4.0.7

    Spring 实现远程访问详解——rmi

    Spring为各种远程访问技术提供集成工具类。Spring远程访问通过使用普通POJOs,能更容易的开发远程访问服务。目前,Spring远程访问的主要技术如下: 1. 远程调用RMI(Remote Method Invocation): 通过使用 ...

    spring jar 包详解

    (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、 Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。 (12) ...

    Hessian 使用小结

    Hessian 是一种轻量级的二进制RPC通讯框架,基于HTTP使用servlet 暴漏web service. 本文描述了单独使用和及spring集成使用,并介绍了证书加密,签名及非证书类如DES加密方式. 文尾附官方实例链接.

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

    可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...

    最新最全的spring开发包

    可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。...

    Spring-Reference_zh_CN(Spring中文参考手册)

    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. ...

    Spring 2.0 开发参考手册

    17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...

    Spring中文帮助文档

    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. ...

    spring chm文档

    17. 使用Spring进行远程访问与Web服务 17.1. 简介 17.2. 使用RMI暴露服务 17.2.1. 使用 RmiServiceExporter 暴露服务 17.2.2. 在客户端链接服务 17.3. 使用Hessian或者Burlap通过HTTP远程调用服务 17.3.1. 为...

    Spring API

    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. ...

Global site tag (gtag.js) - Google Analytics