一、工程简介
这是一个实现Hession服务端和客户端调用的Web示例项目,包含完整的代码和依赖包,如需工程请到源码页“相关下载”进行下载工程或源码,在线javadoc文档进入其他页,工程结构如下所示
二、源码分析
1. 首先在项目的web.xml注册SearchServiceImpl的实现类服务,配置如下
<?xml version="1.0" encoding="UTF-8"?>@b@<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">@b@<web-app>@b@ <servlet>@b@ <servlet-name>SearchService</servlet-name>@b@ <display-name>SearchRpcService</display-name>@b@ <servlet-class>com.xwood.search.service.impl.SearchServiceImpl </servlet-class>@b@ <init-param>@b@ <param-name>home-api</param-name>@b@ <param-value>com.xwood.search.service.ISearchService</param-value>@b@ </init-param>@b@ <init-param>@b@ <param-name>home-class</param-name>@b@ <param-value>com.xwood.search.service.impl.SearchServiceImpl</param-value>@b@ </init-param>@b@ </servlet>@b@ <servlet-mapping>@b@ <servlet-name>SearchService</servlet-name>@b@ <url-pattern>/search</url-pattern>@b@ </servlet-mapping> @b@</web-app>
2. 如上对应的home-api、home-class对应搜索接口及服务实现类(必须继承com.caucho.hessian.server.HessianServlet),如下所示
ISearchService.java接口
package com.xwood.search.service;@b@public interface ISearchService {@b@ String invoke(String kword);@b@}
SearchServiceImpl.java服务实现类
package com.xwood.search.service.impl;@b@@b@import com.caucho.hessian.server.HessianServlet;@b@import com.xwood.search.service.ISearchService;@b@@b@public class SearchServiceImpl extends HessianServlet implements ISearchService {@b@ @Override@b@ public String invoke(String kwords) {@b@ return kwords+" 搜索结果:************";@b@ }@b@}
3. 客户端远程调用类(SearchClientTest.java)测试基于HessianProxyFactory代理工厂类统一调用服务开发接口,具体如下
package com.xwood.search.client;@b@@b@import java.net.MalformedURLException;@b@@b@import com.caucho.hessian.client.HessianProxyFactory;@b@import com.xwood.search.service.ISearchService;@b@@b@public class SearchClientTest {@b@ @b@ public static void main(String[] args) throws MalformedURLException {@b@ String remoteUrl = "http://localhost:8080/HessionRpcService/search";@b@ HessianProxyFactory factory = new HessianProxyFactory();@b@ ISearchService searcher = (ISearchService) factory.create(ISearchService.class, remoteUrl);@b@ System.out.println(searcher.invoke("小木人"));@b@ }@b@@b@}
运行后结果如下所示
小木人 搜索结果:************