b.客户端在调用Ӟ每次调用q程接口都要用以下代码吗Q?/p>
昄是不需要的?br />
我们可以通过加入~存的方式对其进行改良,我们也可以通过Spring在客L(fng)理它?/p>
一、完善hessian服务端实玎ͼ(x)
1.首先修改ServiceRemote接口Q?/p>
callService为统一入口Q在此做如下U定Q?br />
1)target字符串ؓ(f)要调用的service的完整类路径+要调用的Ҏ(gu)?br />
2)service的方法均用以下方法签名:(x)
public Map ***(Map inputMap);
入参为MapQ返回g为MapQ基本可以满x(chng)有情况了(jin)。(臛_入参为MapQ很适合调用iBatis来对DBq行操作。)(j)
2.修改接口实现cServiceQ此cM做具体业务,而是反射调用具体业务c:(x)
3.举个例子Q服务端提供业务cDisplayUserService.java
Hessian是一个轻量的remoting onhttp工具Q用简单的Ҏ(gu)提供?jin)RMI的功? 相比WebServiceQHessian更简单、快捗?br /> 采用的是二进制RPC协议Q因为采用的是二q制协议Q所以它很适合于发送二q制数据?/p>
本文分Z下几个内容:(x)
一、一个简单的Hessian调用例子
二、Spring+Hessian的例?br />
三、我们的调用变得通用
W一部分Q一个简单的Hessian调用例子
建立web工程HessianService?br />
q里Z(jin)单v见,我将q程接口cR接口实现类都定义在此web工程下?/p>
个h觉得一个比较好的做法是web工程分开Q此web工程只定义对外的接口q提供服务,而实现类新徏一个Java工程存放?br /> q样web工程依赖此Java工程Q且客户端也依赖此Java工程?/p>
1) q程接口c?ServiceRemote.java
2) 实现c?Service.java
3) web.xml配置
l过以上3步,hessian服务部v是完成?jin),在tomcat下发布?/p>
4) 调用方代?/p>
执行代码Q结果如下:(x)
{NAME=Hessian}
说明调用q程代码成功?jin)?/p>
二、Spring+Hessian的例?br /> 1) web工程HessianService 的ServiceRemote 和ServicecM变。对web.xmlq行修改Q?br />
q里要注意的?
a)dispatcher-servlet.xmlq个文g的命名。servlet配置为dispatcherQ则此文件定义规则ؓ(f)****-servlet.xml.
b)另外是Spring和hessian的版本问题?br />
spring版本?.5.6Q需要在此web工程下引入:(x)spring-2.5.6.jar、spring-webmvc-2.5.6.jar、commons-logging-1.1.1.jar?br />
hessian的版本是hessian-3.1.6.jarQhessian的低版本?hessian-3.0.13和此Spring版本不合。(我试验了(jin)是配|不成功的。)(j)
2) dispatcher-servlet.xml
3) 客户端代码可以保持原样不变,把调用hessian服务的url变换一下即可:(x)
http://localhost:8080/HessianService/remote/service
http://IP:port/发布工程?web.xml中配|的url-pattern/****-servlet.xml bean的ID?/p>
三、我们的调用变得通用 在下一中介绍?/p>