`

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的过程主要包括以下几个步骤: 1. **定义服务接口**:首先,我们需要创建一个Java接口,包含服务提供者需要暴露给消费者的方法。例如,我们可以定义一个名为`UserService`的接口,包含用户查询、...

    Hessian和Spring集成示例

    下面将详细讲解Hessian与Spring集成的关键知识点。 首先,理解Hessian是什么至关重要。Hessian是一个二进制的Web服务协议,由Caucho公司开发。它提供了轻量级、高效的RPC(Remote Procedure Call)框架,使得Java...

    Spring中集成Hessian的问题

    **Spring与Hessian的集成** 在Spring中集成Hessian,通常需要以下步骤: 1. **创建服务接口和服务实现:** 首先,你需要定义一个Java接口,其中包含你希望暴露给客户端的方法。然后实现这个接口,提供实际的业务...

    Hessian与Spring整合需要jar包

    在将Hessian与Spring进行整合时,我们需要确保引入了正确的jar包。这些jar包通常包括以下几个核心组件: 1. **Hessian库**:这是实现Hessian RPC的基础,包含了序列化和反序列化的类以及远程调用的相关接口。主要的...

    Hessian的Spring配置

    在Spring框架中集成Hessian,我们需要进行以下步骤: 1. **创建服务接口和服务实现**: 首先,你需要定义一个服务接口,然后实现这个接口。例如,我们有一个`HelloHessianService`接口,包含一个`sayHello`方法。 `...

    spring 集成 hessian例子

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

    在 Spring Web Flow 项目中应用 Hessian 服务

    综上所述,将Hessian服务应用于Spring Web Flow项目,能够有效提升前端与后端之间的通信效率,同时利用SWF的强大流程管理能力,为用户提供顺畅的交互体验。然而,这也需要开发者对Spring、Spring Web Flow以及...

    hessian与spring整合的jar包

    当我们将Hessian与Spring进行整合时,主要目标是利用Spring的依赖注入(Dependency Injection, DI)和组件管理能力来简化Hessian服务的创建和管理。以下是一些关键知识点: 1. **Spring核心模块**(spring-core-...

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

    二、Spring集成Hessian Spring通过其AOP(面向切面编程)和IoC(控制反转)理念,为Hessian提供了便捷的整合方式。在Spring中,我们可以定义一个Service Bean,然后使用HessianExporter或者HessianProxyFactoryBean...

    Hessian与spring整合

    8. **测试与监控**:为了确保服务的稳定性和可靠性,我们需要编写单元测试和集成测试,同时可以借助Spring Boot Actuator等工具,监控服务的运行状态和性能指标。 综上所述,"Hessian与Spring整合"的核心是利用...

    spring aop hessian 基础demo 部署即可运行

    **Spring AOP与Hessian的结合** 在Spring中,Hessian通常用来实现远程服务调用。通过AOP,我们可以对Hessian服务进行拦截,添加如日志、性能监控等额外功能。以下是一个基本的步骤: 1. **创建Hessian服务**:首先...

    hession例子,源码,最新的jar包,还有web例子与spring结合的例子

    6. **Spring集成**: 在Spring中使用Hessian,通常需要配置一个HessianExporter,它会暴露一个Spring Bean作为Hessian服务。客户端可以通过HessianProxyFactoryBean创建对服务的代理,然后像调用本地方法一样调用远程...

    Hessian 使用小结

    4. **客户端调用**:客户端可以选择与Spring集成,通过Spring的`ApplicationContext`获取代理对象,或者直接使用Hessian工具生成代理。 **安全机制** Hessian提供了基于X.509证书的加密和签名机制,这包括`X509...

    轻量级远程服务调用Hessian的入门实例和与Spring整合的实例.zip

    这个压缩包文件包含了关于Hessian的入门实例以及如何将其与Spring框架整合的教程。 一、Hessian入门实例 Hessian的入门实例主要展示了如何创建一个简单的服务提供者和消费者。首先,我们需要定义一个服务接口,例如...

    hessian3.1和spring2.5的结合

    标题 "Hessian3.1与Spring2.5的整合" 涉及的是在Java开发环境中,如何将Hessian远程调用服务与Spring框架相结合,以便实现高效、轻量级的分布式服务通信。Hessian是一种二进制协议,它允许远程方法调用(RMI)在HTTP上...

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

    总之,Spring集成Hessian插件并改用自动注入可以极大简化服务的管理和调用。通过合理的配置和注解,我们可以实现服务的自动发现和依赖注入,提升代码的灵活性和可维护性。同时,理解并熟练掌握这一技术对于提升开发...

    Hessian多个版本打包下载

    此外,可能会有对其他开源项目如Spring的更好集成,使得在企业级应用中部署更加便捷。 Hessian4.0.7是相对比较新的一个版本,它可能包含了更多的改进和新功能。例如,安全性的强化可能是一个重点,如加密传输以保护...

    spring、hessian通过tomcat的简单环境应用源代码

    【标题】"spring、hessian通过tomcat的简单环境应用源代码"涉及到的是在Java Web开发中使用Spring框架和Hessian服务序列化技术在Tomcat服务器上的集成与应用。Spring是一个广泛使用的开源Java应用程序框架,它提供了...

    spring+hessian+maven整合.zip

    【描述】:在描述中,我们看到"spring+hessian+maven整合.zip",这表明压缩包中可能是一个示例项目,用于演示如何将Spring、Hessian和Maven集成到一起。Spring是Java领域广泛使用的IoC(Inversion of Control)和AOP...

    spring整合hessian进行远程通讯

    Spring框架提供了强大的依赖注入和AOP(面向切面编程)能力,可以帮助开发者轻松地集成各种服务,包括Hessian。在Spring中整合Hessian,首先需要在Spring配置文件中定义Hessian的服务和客户端bean。 1. **Hessian...

Global site tag (gtag.js) - Google Analytics