浏览 1851 次
锁定老帖子 主题:Spring+Cxf 相关问题!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-12-20
最近在弄一个web service的项目,框架选择了CXF。实现服务端跟客户端,两者分开部署。 没有经验,都是网上资料查阅后按步就班的来,服务端感觉简单,普通的接口定义+实现,然后在配置cxf的配置文件,interface,impl类中加以@WebService的相关注释就可以成功。 服务端的接口定义最好类似: public @WebResult(partName = "MyBean") List<MyBean> getClinicalEncounters( @WebParam(name = "name") String name, @WebParam(name = "sex") String sex, @WebParam(name = "birthday") String birthday ) throws MyException; 如果不指定每个参数的名称,这样在wsdl文件中跟之后生成的客户端代码中,接口的参数就是arg1,arg2这样的不好读的格式。 然后通过CXF自带的wsdl2java工具,编译生成了客户端。 如果服务端有自定义异常的话,最好添加@WebFault注释,然后在其中添加一个封装Fault故障信息的简单Bean. 并添加一个getFaultInfo()方法 (一定要这个名字) @WebFault public class MyException extends Exception { private MyFault myFault; public MyFault getFaultInfo() { return myFault; } } 这样你在生成客户端代码的时候,你的异常类就不会是MyException_Exception的格式了。具体的没做过的大家试下就清楚了。 二:客户端部分 wsdl2java -p com.study.webservice -d F:\works\ -client http://localhost:8080/his/service/InterService?wsdl 上面-p后面指定了包名称,那么生成的文件的包名就跟指定的一样了。不指定的话,就默认服务端你的服务名称的倒序来命名,比较麻烦。 现在疑惑地方如下描述,新来这里还没有分,希望大家有经验的分享一下,不胜感谢! 1.关于客户端部分,是不是除了用动态代理之外,都需要通过wsdl2java之类工具,生成客户端调用代码到单独的client项目里。 2.生成的客户端代码里,就有直接调用服务器的impl类,只需稍加修改,就可以使用。但是看到很多种客户端调用方式, 不知道那种是比较优的。比如客户端也是spring的,是直接只用这个wsdl2java直接生成的,还是怎么选择呢? 3.在使用wsdl2java的生成的代码作为客户端的时候,创建连接的部分代码大概如下: private InterService ss; //public class InterService extends Service private InterServiceInterface interservice; public InterServiceInterfaceImpl(URL wsdlURL) { ss = new InterService(wsdlURL, SERVICE_NAME); interservice = ss.getInterServicePort(); } 通过InterServiceInterface interservice接口就可以类似本地的直接调用server端的接口了。 但是我想实现time out,接口调用之前的身份验证等,在这种情况下该如何实现呢?从哪里入手? -------------------------------------------------------------------------- 以上就是自己的一点点小经验,大困惑,希望大家一起讨论下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |