论坛首页 入门技术论坛

Spring+Cxf 相关问题!

浏览 1850 次
精华帖 (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,接口调用之前的身份验证等,在这种情况下该如何实现呢?从哪里入手?

--------------------------------------------------------------------------
以上就是自己的一点点小经验,大困惑,希望大家一起讨论下。
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics