Spring整合webservice服務
阿新 • • 發佈:2018-12-01
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({泛型的實現類位元組碼檔案})