Skip to content
springside edited this page Sep 13, 2012 · 14 revisions

#Apache CXF WebService ##没有话说,享受沉默 showcase项目已演示了JAX-WS2.0 + CXF的最重要特性.

其中客户端在测试用例里.

从wsdl生成java则见bin/wsdl2java.bat, 使用CXF的maven插件, 需要预先将wsdl,从http://localhost:8080/showcase/soap/accountservice?wsdl 保存到target/wsdl/accountservice.wsdl)。

SOAP这个名字,本身就是个笑话,其他一些WS-*协议,包括安全,附件等都不再看好,因此SpringSide4.0没什么更新。

所以暂时不准备写文档,请直接参阅相关资料。

测试工具依然是SoapUI。

Tips

###1. 既然是默认大于配置,为什么还要写有些annotation

  • 所有传输对象全部加了XMLType(name="xxx"),因为CXF默认在wsdl时将所有类的名字都首字母小写,如果拿着这个WSDL来生成代码,在其他语言的生成工具如windows .net可能会生成出一些首字母小写的类出来。
  • 所有方法的参数都要加@WebParam, 是因为CXF默认只会反射出arg0这样的名称
  • 接口与接口实现类的Header中反复声明一些东西,是因为各自声明的是不一样的,见注释。如果在实现类不声明@WebService,wsdl会分开两个文件显示,不好。

###2. 返回类命名 返回类不要命名为XXXResponse,因为WSDL里也会每个方法默认生成一个XXXXResponse的元素,会造成冲突,最好命名为XXXResult。

###3. Target NameSpace 万一有同名的元素,用namesapce分开来,原意是很好的,对于有双向生成需求的Soap来说也是必须的。但如果没写好,在wsdl里充满各种namesapce声明非常烦人。最好的做法是统一定义唯一一个常量,然后在所有地方用了annotation的地方都添加namespace定义。

返回参考手册