- Introduction
- Quick Start
- Design
- Tutorial
- Spring MVC
- JSP/JSTL/Servlet
- JQuery and plugins
- Ajax
- Twitter Bootstrap CSS
- SiteMesh
- YUICompressor
- Spring Restful Service
- JAX-WS/CXF
- Spring Data JPA
- JPA/Hibernate
- MyBatis
- Database
- H2 Database
- Datasource
- Transaction
- Redis
- Cache Overview
- Guava Cache
- Ehcache
- Memcached
- Shiro Security
- Crypto
- Schedule/Quartz
- Jmx
- System Protection
- Hystrix
- Rate Limiter
- Monitoring and Metrics
- Metrics-library
- Graphite
- Logging/Slf4j/Logback
- Logstash
- Spring
- Validation Overview
- JQuery Validation
- Hibernate Validator
- General Utilizes
- JSON/JAXB
- Date
- Test Overview
- Unit Test/Mockito/AssertJ
- Selenium2
- BDD
- Performace-test
- JMeter
- Profiler
- Simulator Overview
- Nodejs
- Eclipse
- Maven
- Sonar
- git
- Travis CI
- Jetty
- Micro-Service Architecture/Executable War
- AssertJ
- CreateNewProject
- Dozer
- Graphite-Windows
- Hello-Everybody
- Jaxb
- Json
- Mock
JAX-WS/CXF
Apache CXF WebService
没有话说,享受沉默
showcase项目已演示了JAX-WS2.0 + CXF 的最重要特性, 其中客户端在测试用例里.
SOAP这个名字,本身就是个笑话,一点都不Simple。其他一些WS-*协议,包括安全,附件等都不再看好,因此SpringSide4.0没什么更新。
测试工具依然是SoapUI。
Tips
1. CXF自动生成的WSDL与WADL文件
web.xml里定义了/cxf/*都归CxfServelet管,所以,访问http://localhost:8080/showcase/cxf/ ,就能看到所有的WSDL与WADL.
2. 从WSDL生成Java 客户端代码
从wsdl生成java则见showcae的bin/wsdl2java.bat, 使用CXF的maven插件, 需要预先将wsdl 从http://localhost:8080/showcase/cxf/soap/accountservice?wsdl 保存到target/wsdl/accountservice.wsdl。
3. 既然是默认大于配置,为什么还要写些annotation
- 所有传输对象加上了XMLType(name="xxx"),因为CXF默认在wsdl时将所有类的名字都首字母小写,如果拿着这个WSDL来生成代码,在其他语言的生成工具如windows .Net可能会生成出一些首字母小写的类出来。
- 所有方法的参数都要加@WebParam, 是因为CXF默认只会反射出arg0这样的名称。
- 为什么要有接口类。其实annotation全部写在实现类也可以,但接口类可以交给客户,而且在写测试用例时能用于客户端Proxy,因此还是需要。
- 接口与接口实现类的Header中反复声明一些东西,是因为各自声明的是不一样的,见注释。比如如果在实现类不声明@WebService,wsdl会分开两个文件显示,不好。
4. 返回类命名
返回类不要命名为XXXResponse,因为WSDL里也会每个方法默认生成一个XXXXResponse的元素,会造成冲突,最好命名为XXXResult。
5. Target NameSpace
万一有同名的元素,用namesapce分开来,原意是很好的,对于有双向生成需求的Soap来说也是必须的。但如果没写好,在wsdl里充满各种namesapce声明非常烦人。最好的做法是统一定义唯一一个常量,然后在所有地方用了annotation的地方都添加namespace定义。
6. 打印输入输出的SOAP XML
CXF的文档有点out了,比如如果要转用slf4j,其实不需要特别的设置,jul-over-slf4j自己就会把java.util.loggging桥接过来,又比如,showcase演示了在server端打印xml,此时需要开启logger org.apache.cxf.services =INFO ,因为debug发现此时的logger名称是 "org.apache.cxf.services.AccountSoapService.AccountSoapServiceImpl"
资料
- Book: \ Dec.2009
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论