Spring 整合Hession

1.1   Hession的作用

      Hession是基于HTTP的轻量级远程服务解决方案。致力于解决借助于尽可能简单的API和通信协议来简化Web服务。Hession   和RMI一样,使用二进制进行客户端和服务器的交互。但与其他的二进制远程调用技术不同,他的二进制消息是可以一直到其他的非java的语言中包括(C#,C++)。

1.2     Spring整合JMS

     Hession做了一个简要介绍之后,接下来就讲一下Spring整合Hession的具体过程。所使用的依赖利用Maven来进行管理,具体依赖如下:

      <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.7</version>
        </dependency>

<!--         <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-oxm</artifactId>
            <version>4.0.1.RELEASE</version>
        </dependency> -->
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
 
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.7</version>
        </dependency>
    接口定义类: com.wl.spring.hession:IHello

    package com.wl.spring.hession;

    public interface IHello {  
       public String sayHello(String param);  
    }
接口具体实现类: com.wl.spring.hession.HelloImpl

package com.wl.spring.hession;

public class HelloImpl implements IHello {

    public String sayHello(String param) {
            return "Hello " +param;
        }
}
配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
    
     <context-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>
                     /WEB-INF/remoteHession-servlet.xml
             </param-value>
     </context-param>
 
    <servlet>  
        <servlet-name>remoteHession</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>remoteHession</servlet-name>  
        <url-pattern>/remoteHession/*</url-pattern>  
    </servlet-mapping>  

</web-app>


配置 remoteHession-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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

  <bean id="impl" class="com.wl.spring.hession.HelloImpl" />  

 <bean name="/helloSpring"  
      class="org.springframework.remoting.caucho.HessianServiceExporter"
    p:service-ref="impl"
    p:serviceInterface="com.wl.spring.hession.IHello" />

</beans>


客户端调用有两种方式 :

① 使用HessianProxyFactory  Hessian代理工厂直接调用

public class HessionClient{

    public static void main(String[] args) throws MalformedURLException {  
        //Spring Hessian代理Servelet  
        String url = "http://localhost:8080/remoting-hessian/remoteHession/helloSpring";  
        HessianProxyFactory factory = new HessianProxyFactory();  
        IHello api = (IHello) factory.create(IHello.class, url);  
 
        System.out.println(api.sayHello("wangl"));
/*       ApplicationContext contex = new ClassPathXmlApplicationContext(  
                "dispatcher-servlet.xml");  
 
        // 获得客户端的Hessian代理工厂bean  
        IHello i = (IHello) contex.getBean("clientSpring");  
        System.out.println(i.sayHello("wangl"));  */
    }  

}

运行结果 显示

Hello wangl
②通过spring 使用HessianProxyFactoryBean Hessian代理工厂Bean来完成接口调用.
        <!--  客户端Hessian代理工厂Bean -->
    <bean id="clientSpring" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
         <!-- 请求代理Servlet路径   -->       
        <property name="serviceUrl" value ="http://localhost:8080/remoting-hessian/remoteHession/helloSpring"/>  
          <!-- 接口定义   -->
         <property name="serviceInterface" value = "com.wl.spring.hession.IHello"/>  
    </bean>


输出结果 :Hello wangl

备注:在服务器端remoteHession-servlet.xml 名称 要是xml中 <servlet-name>配置的开头+  ‘-servlet.xml’命名的,

在客户端调用的时候如果采用第二种方式调用spring的配置文件如果在WEB-INF下采用 main函数验证时 必须把sping的配置copy到resources目录下编译 。以上仅是个人理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值