hessian应用
目前hessian算一个比较热的应用。利用它可以很方便的实现远程服务。目前,开发的系统(项目)多处利用了hessian。一个简单的场景是,应用A通过hessian调用应用B的服务,然后B的服务请求公司对外统一的gateway进行请求转发,把请求分发到外部合作公司。hessian还可以利用多线程实现数据同步(或者说是数据推送)。下面,给出一个简单例子,说明hessian的用法。具体hessian适合用在哪些场景,则看看之前发表的 远程服务 相关的文章。
?
首先,简简单单的利用sevlet就OK。但需要准备好hessian.*.*.jar,spring.jar , common.logging和jdk等
?
(1)编写服务端
声明接口和方法:
?
public interface RemoteHessianService { String sayHello(String name);}?
?
实现接口:
?
public class RemoteHessianServiceImpl implements RemoteHessianService {public String sayHello(String name) { return "hello " + name}}?
配置web.xml
?
<?xml version="1.0" encoding="GB2312"?><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"><web-app> <!-- hessian 服务 --><servlet><servlet-name>remote</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><!-- hessian 服务 --><servlet-mapping><servlet-name>remote</servlet-name><url-pattern>/remote/*</url-pattern></servlet-mapping></web-app>
?在WEB-INFO下面新增remote-servlet.xml,配置其内容如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><bean id="remoteHessian"/></property><property name="serviceInterface"><value>com.myCompany.service.interfaces.RemoteHessianService</value></property></bean></beans>
?上面的配置主要是完成了servlet的名称与URL的映射配置,以及利用spring配置初始化bean而已。
?
?
到此,启动利用JBOSS启动web应用,服务端已经到此OK。
?
?
(2)编写客户端:
?
纯粹的利用JDK,而不依赖spring的客户端代码如下:
public class Say { /** * @param args */ public static void main(String[] args) { com.caucho.hessian.client.HessianProxyFactory proxyFactory = new com.caucho.hessian.client.HessianProxyFactory(); RemoteHessianService service = null; try { service = (RemoteHessianService) proxyFactory.create(RemoteHessianService.class, "http://localhost:jobss_port/remote/remoteHessianService"); } catch (MalformedURLException e) { e.printStackTrace();//no recommended } if (service != null) { System.out.println(service.sayHello("hessian")); }}
?编译运行客户端吧,应该可以看到hell hessian的输出了吧。那就大功告成!
?
再利用 spring集成一下客户端吧。
?
增加一个beans-config.xml的配置在工程目录下:
<?xml version="1.0" encoding="GBK" ?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean name = "hessianService" name="code">public class Say { /** * @param args */ public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext("beans-config.xml"); RemoteHessianService service = (RemoteHessianService) context.getBean("hessianService"); System.out.println(service.sayHello("richie")); }}
?编译运行就OK拉。。。一个简单的例子就到此结束。
?
注意,访问端口一定要使用jboss或者tomcat之类的端口,不可以使用apache等端口。