`
stardyun
  • 浏览: 2985 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

Spring整合Hessian

阅读更多
Spring让Hessian变得不但强大,而且易用,但是易用背后,却有不少陷阱!

这个例子很简单,但实际上的确花费了我超过一小时的时间,排除了种种问题,最后问题终于水落石出。

整合以下篇Hello Hessian为基础,加入Spring框架,进行改进。
一、环境
jdk1.6
二、整合

1、写Spring的发布Hessian服务的配置文件

hessian-servlet.xml
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
        <bean id="defaultHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
        <bean id="helloService" class="lavasoft.suths.service.HelloService"/>
        <bean name="/hello" class="org.springframework.remoting.caucho.HessianServiceExporter">
                <property name="service" ref="helloService"/>
                <property name="serviceInterface" value="lavasoft.suths.service.Hello"/>
        </bean>
</beans>

2、配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
                 version="2.5">
        <context-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>
                        /WEB-INF/hessian-servlet.xml
                </param-value>
        </context-param>
        <servlet>
                <servlet-name>hessian</servlet-name>
                <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
                <load-on-startup>4</load-on-startup>
        </servlet>

        <servlet-mapping>
                <servlet-name>hessian</servlet-name>
                <url-pattern>/hessian/*</url-pattern>
        </servlet-mapping>
</web-app>

陷阱:
a)hessian-servlet.xml的文件名必须以<servlet-name>hessian</servlet-name>名字开头,并且加上-servlet.xml一段,组成完整的文件名。
b)hessian-servlet.xml的文件名格式必须是[servlet-name]-servlet.xml格式,否则出错。
三、部署应用

因为涉及到类加载顺序问题,好用IDEA启动Tomcat测试老失败,不知道为啥!这次不用IDEA嵌入式启动Tomcat了,直接自己部署测试。
部署后,启动界面如下:

三、写测试

这次测试,可以在上个例子的基础上进行修改来测试,根据上面的配置,那么请求HelloService的URL应该是:http://localhost:8080/hessianapp/hessian/hello

package lavasoft.suths.service.client;

import com.caucho.hessian.client.HessianProxyFactory;
import lavasoft.suths.service.Hello;

import java.net.MalformedURLException;

/**
* 客户端调用(会依赖服务接口)
*
* @author leizhimin 2009-8-14 12:29:33
*/
public class Client {
        public static void main(String[] args) throws MalformedURLException {
                String url = "http://localhost:8080/hessianapp/hessian/hello";
                HessianProxyFactory factory = new HessianProxyFactory();
                Hello hello = (Hello) factory.create(Hello.class, url);
                System.out.println(hello.sayHello("Hessian"));
        }
}

运行结果:
Hello Hessian!

Process finished with exit code 0

还有一种测试方法,就是在客户端也使用Spring,需要做个配置remoting-client.xml:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
        <bean id="helloServiceClient" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
                <property name="serviceUrl" value="http://localhost:8080/hessianapp/hessian/hello"/>
                <property name="serviceInterface" value="lavasoft.suths.service.Hello"/>
        </bean>
</beans>

然后写个测试类:
package lavasoft.suths.service.client;

import lavasoft.suths.service.Hello;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
* Spring整合Hessian,客户端测试
*
* @author leizhimin 2009-8-14 15:32:46
*/
public class TestClient {
        public static void main(String[] args) {
                try {
                        ApplicationContext context = new ClassPathXmlApplicationContext("/remoting-client.xml");
                        Hello hello = (Hello) context.getBean("helloServiceClient");
                        System.out.println(hello.sayHello("Spring Hession"));
                }
                catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

运行结果:
Hello Spring Hession!

Process finished with exit code 0

陷阱:
实际上,看着代码好好,程序有时候还是不能跑,原因是Hessian的版本问题,这里推荐使用Spring自带的版本,就不会有问题了。
整个工程所以依赖的包:
log4j-1.2.15.jar
spring-aop.jar
spring-beans.jar
spring-context.jar
spring-context-support.jar
spring-core.jar
spring-jdbc.jar
spring-jms.jar
spring-orm.jar
spring-test.jar
spring-tx.jar
spring-web.jar
spring-webmvc.jar
spring-webmvc-portlet.jar
spring-webmvc-struts.jar
hessian-3.1.3.jar
aopalliance.jar
commons-logging.jar
分享到:
评论

相关推荐

    Spring集成Hessian案例

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

    spring 集成 hessian例子

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

    spring整合hessian进行远程通讯

    标题中的“spring整合hessian进行远程通讯”是指在Spring框架中使用Hessian库来实现远程过程调用(RPC)。这是一个常见的技术组合,用于构建分布式系统,使得应用组件之间可以跨网络进行高效通信。 Hessian是一种二...

    Spring整合Hessian访问远程服务

    首先,让我们理解Spring整合Hessian的基本原理。Spring通过其强大的IoC(Inversion of Control)容器管理服务和客户端,而Hessian则提供了一种二进制的序列化方式,使得远程服务调用更为高效。整合这两者,我们可以...

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

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

    Spring整合Hessian(Maven Web工程)

    一个Spring整合Hessian的Demo,同时包含Hessian服务端与客户端。是一个Maven工程,IDE使用的Eclipse,运行前需要安装Eclipse的Maven插件。可以结合文章一起学习,地址是...

    Spring中集成Hessian的问题

    在Spring框架中集成Hessian是为了实现远程方法调用(Remote Method Invocation, RMI),这是一种轻量级的序列化协议,可以高效地传输Java对象。Hessian使得服务提供者和服务消费者之间能够通过网络进行快速的数据...

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

    - **简单易用**:Hessian提供了简单易用的API,便于开发和集成。 **Spring AOP与Hessian的结合** 在Spring中,Hessian通常用来实现远程服务调用。通过AOP,我们可以对Hessian服务进行拦截,添加如日志、性能监控等...

    Spring和Hessian的整合案例

    Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。 本例子使用spring 整合hessian使开发更加的容易。

    spring+hessian+maven整合.zip

    在Spring整合中,我们可以使用HessianExporter来暴露服务,HessianProxyFactoryBean来创建服务客户端。 3. **Maven**:Maven的pom.xml文件定义了项目依赖、构建过程和插件设置。在这个项目中,它会管理Spring、...

    struts2+ibatis+spring+Hessian 整合项目

    struts2+ibatis+spring+Hessian 整合项目 web项目整合,服务端用hessian协议远程调用服务端的方法,hessian是用spring代理整合,struts2+ibatis+spring的整合项目,用作学习和开发基础平台构建很有用处,工程导入...

    基于spring+hessian框架的webservice实例

    本实例重点探讨的是基于Spring框架和Hessian协议的Web Service实现,这是一种轻量级、高效的远程调用解决方案。 首先,我们要理解Spring框架。Spring是Java领域的一个核心框架,它提供了全面的编程和配置模型,用于...

    Hessian的Spring配置

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

    hessian与spring整合的jar包

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

    Spring配置hessian远程服务

    使用eclipse maven工程搭建hessian远程服务demo 分服务端的整合和客户端 建议阅读相关博客http://blog.csdn.net/heisemuyangquan/article/details/79460528

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

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

    Hessian与Spring整合需要jar包

    3. **Spring Web库**:如果Hessian服务是通过HTTP提供,那么还需要`spring-web.jar`,它提供了Web相关的支持,如Servlet API的集成。 4. **Servlet容器库**:如`servlet-api.jar`,如果你的应用运行在传统的Java EE...

    flex_spring_hessian框架(Java部分)

    在Java开发中,Flex-Spring-Hessian框架常常被用于构建富客户端应用,它整合了Adobe Flex前端与Spring后端服务,利用Hessian协议进行二进制RPC通信,提高了数据传输效率。本篇文章将围绕这三个关键组件,深入探讨...

Global site tag (gtag.js) - Google Analytics