Hessian探究(一)Hessian与Spring结合
原创
©著作权归作者所有:来自51CTO博客作者归田归田的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇博客Hessian探究(一)Hessian入门示例我们初步简单的介绍了一下Hessian的使用入门示例,由于Spring现在使用的实在是太广泛了,接下来我们介绍一下Hessian和Spring一起开发的过程。
在上一篇博客中我们是通过如下代码来调用Hessian发布的服务:简单来说就是通过URL进行访问来使用Hessian发布的服务。
package com.tianjunwei.hessian.client;
import java.net.MalformedURLException;
import com.caucho.hessian.client.HessianProxyFactory;
import com.tianjunwei.hessian.server.HelloService;
public class HelloServiceMain {
public static void main(String [] args) throws MalformedURLException{
String url = "http://localhost:8080/hessian";
System.out.println(url);
HessianProxyFactory factory = new HessianProxyFactory();
HelloService helloService = (HelloService) factory.create(HelloService.class, url);
System.out.println(helloService.helloWorld("jimmy"));
}
}
在Spring下我们又是如何来使用Hessian的服务端来发布的服务的。
(1)Hessian给我们提供了在Spring下使用的HessianProxyFactoryBean,其实就是一个代理工厂,生成代理类。在spring的ApplicationContext.xml中进行如下配置,其实就是两个信息serviceUrl为Hessian暴露服务的连接,serviceInterface为暴露服务的接口。
<!-- 客户端Hessian代理工厂Bean -->
<bean id="clientSpring" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<!-- 服务端请求地址 -->
<property name="serviceUrl">
<span style="white-space:pre"> </span><value>http://localhost:8080/hessian</value>
</property>
<!-- 接口定义 -->
<property name="serviceInterface">
<span style="white-space:pre"> </span><value>com.tianjunwei.hessian.server.HelloService</value>
</property>
</bean>
(2)经过第一步配置之后,接下来我们就可以在Spring中像使用普通的Bean一样来进行远程调用了,示例代码如下:
package com.tianjunwei.hessian.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.tianjunwei.hessian.server.HelloService;
public class SpringClient {
public static void main(String[] args) {
ApplicationContext contex = new ClassPathXmlApplicationContext(
"applicationContext.xml");
// 获得客户端的Hessian代理工厂bean
HelloService helloService = (HelloService) contex.getBean("clientSpring");
System.out.println(helloService.helloWorld("world"));
}
}
运行结果:
hello,world