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

Hessian入门(与Spring集成)

2013-10-11 16:36 477 查看



分类: Open Source Java 网络通讯2011-04-19
17:33 2486人阅读 评论(2) 收藏 举报
springstringclassbeanservletservice

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" />
</bean>

<!-- 可以配置多个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"));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: