This example will lead you through creating your first service with Spring. You'll learn how to:
* Set up your build for CXF
* Writing a simple JAX-WS service 【设计与开发 JAX-WS 2.0 Web 服务】
* Set up the HTTP transport
具体参考 http://cxf.apache.org/docs/writing-a-service-with-spring.html
可以采用以下两种方法之一开发 Web 服务:
* 契约优先:从 WSDL 契约着手,生成 Java 类来实现服务。
* 代码优先:从 Java 类着手,使用 Annotation 来生成 WSDL 文件和 Java 接口。
[Developing a Service-Java First Development]
JAX-WS2.0 入门 (JAX-WS : Java API for XML Web Services)
接口定义:
1.@WebService(name = "UserService",targetNamespace = Constants.WS_NAMESPACE)
2. public interface UserWebService {
3. @WebResult(name = "user")
4. public UserDTO getUser(@WebParam(name = "userId") Integer userId);
5.}
* @WebService 必须,(name="UserService")可选,配置Service的名称,默认为类名。targetNamespace可选,默认为 http:// package的倒序,可在一个自己的Constants里定义统一的namespace. 如http://www.iteye.com
* 默认接口的所有方法均输出为WebService。
* @WebResult 可选,配置方法的返回值在WSDL的名称,CXF默认为result。
* @WebParam 可选,配置参数在WSDL的名称,CX比较笨F默认为arg0,arg1....
* @WebMethod 可选,有一个方法有此注释,则其他无注释的方法非WebService。
接口实现:
1.@WebService(endpointInterface = "com.javaeye.test.ws.user.UserWebService",targetNamespace = Constants.WS_NAMESPACE)
2.public class UserWebServiceImp
* @WebService(endpointInterface="") 必须,指定实现的接口。
* 在ServiceImpl中,最好命名@ServiceName 和 @PortName,否则默认以此类名来命名Service,如UserWebServiceImp,比较难看。
小结:
接口与实现类都需要@WebService(targetNamespace = Constants.WS_NAMESPACE),接口还需要属性name,实现需要属性endpointInterface。
CXF不会自动反射方法的参数名,每个方法的参数都需要重新标注。
JAXB2.0入门 (JAXB : Java Architecture for XML Binding)
1.@XmlType(name = "User")
2.public class UserDTO {
3.}
* JAXB的智能化较高,基本上不需要手工映射。
* 默认的@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER )根据公共getter/setter与公共属性反射
(XmlAccessType.PROPERTY根据getter/setter反射,XmlAccessType.FIELD 根据成员变量反射)
* 如果有需要注释@XMLElement,@XMLAttribute,需配合XmlAccessorType定义,默认的PUBLIC_MEMBER,需要在getter/setter上定义,如果要写在成员变量上定义,则XmlAccessType改为FIELD。
* 用@XmlType定义 DTO名,否则名称默认小写。@XmlType(name = "User") 指定WSDL上的类型名称。
* @XmlTransient 可以注释某个字段,取消该字段的反射。
其他:
JAX-RPC 2.0 renamed to JAX-WS 2.0
jnn 写道
JAX-WS2.0 (JSR 224 )是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222 ),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173 ),同时它还完全支持schema规范。
引自:JAX-WS
【转载地址】
http://alimama.iteye.com/blog/841896
【总结】
http://tonylian.iteye.com/blog/680916