您的位置:首页 > 编程语言 > Java开发

Hessian入门(与Spring集成)

2016-02-11 14:29 471 查看
Hessian入门(与Spring集成)
                                                                                                                      By:wtang
说明 :
1.    讲述如何配置Hessian的服务器端(与Spring集成).
2.    讲述客户端如何调用
①   使用HessianProxyFactory  Hessian代理工厂直接调用
②   使用HessianProxyFactoryBean Hessian代理工厂Bean来完成接口调用.
 
1.    讲述如何配置Hessian的服务器端(与Spring集成).
 
 



 
 
 
接口定义类: com.wtang.isay. Isay:
 

[java] view plaincopy

package com.wtang.isay;  
  
public interface Isay {  
    public String sayHello(String arg1,String arg2);  
}  

 
接口具体实现类: com.wtang.isay. IsayImpl

[java] view plaincopy

package com.wtang.isay;  
  
public class IsayImpl implements Isay {  
  
    public String sayHello(String arg1, String arg2) {  
        return "Hello:" + arg1 + arg2;  
    }  
}  

配置Web.xml:

[java] view plaincopy

<servlet>  
    <servlet-name>remote</servlet-name>  
    <!-- 使用Spring的代理Servlet -->  
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
    <init-param>  
        <param-name>namespace</param-name>  
        <param-value>classes/remote-servlet</param-value>  
    </init-param>  
    <load-on-startup>1</load-on-startup>  
</servlet>  
  
<servlet-mapping>  
    <servlet-name>remote</servlet-name>  
    <url-pattern>/remote/*</url-pattern>  
</servlet-mapping>  

配置remote-servlet.xml[该文件位于src目录下,即编译后存在与classes下]:

[java] view plaincopy

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
    <!-- 接口的具体实现类 -->  
    <bean id="impl" class="com.wtang.isay.IsayImpl" />  
    <!-- 使用Spring的HessianServie做代理 -->  
    <bean name="/helloSpring"  
    class="org.springframework.remoting.caucho.HessianServiceExporter">  
        <!-- service引用具体的实现实体Bean-->  
        <property name="service" ref="impl" />  
        <property name="serviceInterface" value="com.wtang.isay.Isay" />  
    </bea
4000
n>  
      
    <!-- 可以配置多个HessianServiceExporter代理Bean -->  
</beans>  

注:
      这个文件为什么叫remote-servlet.xml呢?
因为我们在web.xml中有配置:<servlet-name>remote</servlet-name>。
所以remote-servlet.xml的文件名必须以
<servlet-name>中配置的servlet-name作为文件名的开头,
且文件名的格式必须是[servlet-name]-servlet.xml格式,否则检测不到。
    即:
<param-value>classes/remote-servlet</param-value>
所以文件名为remote-servlet.xml。
 
 
2.    讲述客户端如何调用
        ① 使用HessianProxyFactory  Hessian代理工厂直接调用
 即:
       

[java] view plaincopy

package com.wtang.test;  
  
import java.net.MalformedURLException;  
import com.caucho.hessian.client.HessianProxyFactory;  
import com.wtang.isay.Isay;  
  
public class NormalClient {  
    public static void main(String[] args) throws MalformedURLException {  
        //Spring Hessian代理Servelet  
        String url = "http://localhost:8080/HessianSpring/remote/helloSpring";  
        HessianProxyFactory factory = new HessianProxyFactory();  
        Isay api = (Isay) factory.create(Isay.class, url);  
  
        System.out.println(api.sayHello("chen", "weitang"));  
    }  
}  

 
输出Hello:chenweitang
 
2.    讲述客户端如何调用
        ② 使用HessianProxyFactoryBean Hessian代理工厂Bean来完成接口调用.
配置客户端 remote-client.xml:

[java] view plaincopy

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">  
<beans>  
    <!-- 客户端Hessian代理工厂Bean -->  
    <bean id="clientSpring" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">  
        <!-- 请求代理Servlet路径 -->          
        <property name="serviceUrl">  
<value>http://localhost:8080/HessianSpring/remote/helloSpring</value>  
        </property>  
        <!-- 接口定义 -->  
        <property name="serviceInterface">  
            <value>com.wtang.isay.Isay</value>  
        </property>  
    </bean>  
</beans>  

 
调用:

[java] view plaincopy

package com.wtang.test;  
  
import org.springframework.context.ApplicationContext;  
import org.springframework.context.support.ClassPathXmlApplicationContext;  
import com.wtang.isay.Isay;  
  
public class SpringClient {  
    public static void main(String[] args) {  
        ApplicationContext contex = new ClassPathXmlApplicationContext(  
                "remote-client.xml");  
  
        // 获得客户端的Hessian代理工厂bean  
        Isay i = (Isay) contex.getBean("clientSpring");  
        System.out.println(i.sayHello("chen", "weitang"));  
    }  
}  

 
输出Hello:chenweitang
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hessian spring