1.导入坐标,服务端(rs)
<!-- 使用CXF RS开发 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>3.0.1</version>
</dependency>
<!-- 在CXF扩展提供者,提供转换json接口 -->
<dependency>
<groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-extension-providers</artifactId>
<version>3.0.1</version>
</dependency>
<!-- cxf 扩展提供者 转换json 默认需求一个工具包 -->
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.7</version>
</dependency>
2.web.xml配置
<servlet>
<servlet-name>CXFService</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFService</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
3.接口的配置
3.1 path无参数
@POST
@Path("/user")
@Consumes({ "application/xml", "application/json" })
public void saveUser(User user);
@PUT
@Path("/user")
@Consumes({ "application/xml", "application/json" })
public void updateUser(User user);
@GET
@Path("/user")
@Produces({ "application/xml", "application/json" })
public List<User> findAllUsers();
3.2 path有参数(两种传参方法)
@POST
@Path("/user/{id}")
public void saveUser(@PathParam("id") String id);
调用服务方法:http://localhost:XXXX/项目名/webxml配置(service)/ApplicationContext文件中address的路径(Service1)/接口上的path路径/参数
@PUT
@Path("/user")
public void saveUser(@QueryParam("id") String id);
@GET
@Path("/user")
@Produces({ "application/xml", "application/json" })
public List<User> findAllUsers();
4.ApplicationContext.xml文件配置
<jaxrs:server id="abcCustomerService" address="/Service1"><!-- web.xml后配置的路径 -->
<jaxrs:serviceBeans>
<!-- webservice 接口方法实现类 -->
<bean class="cn.itcast.bos.service.take_delivery.impl.PromotionServiceImpl"></bean>
</jaxrs:serviceBeans>
<jaxrs:inInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingInInterceptor"></bean>
</jaxrs:inInterceptors>
<jaxrs:outInterceptors>
<bean class="org.apache.cxf.interceptor.LoggingOutInterceptor"></bean>
</jaxrs:outInterceptors>
</jaxrs:server>
5.接口上方法参数意义
@PathParam和@QueryParam处理简单参数类型,如String、Integer等
8种原始类型+8种包装类型+String
@Consumes处理自定义对象类型,如User、Car等
6.调用服务(导入坐标和调用格式)
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>${cxf.version}</version>
</dependency>
调用服务方法:
WebClient.create(http://localhost:XXXX/项目名/webxml配置(service)/ApplicationContext文件中address的路径(Service1)/接口上的path路径/参数
)
注意事项:
1.如果是要通过webservice服务传输的pojo类,需要加上注解
@XmlRootElement
2.如果自己封装的实体类里面有泛型,需要加上注解
@XmlSeeAlso({泛型的实现类字节码文件})