生成webservice介面以及通過客戶端呼叫介面。
阿新 • • 發佈:2019-02-11
1:新建Maven專案
目錄結構
lib包是cxf相關JAR包。
:使用CXF+Spring編寫併發布WebService
在web.xml中配置如下:
- <servlet>
- <servlet-name>CXFServlet</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
-
</
- <servlet-mapping>
- <servlet-name>CXFServlet</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
-
package Service;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
public String sayHi();
}
接著,在建立TestServiceImpl.java,程式碼如下:
-
package Service;
import java.util.Date;
import javax.jws.WebService;
@WebService(endpointInterface="Service.HelloWorld",serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {
public String sayHi() {
// TODO Auto-generated method stub
return "你好世界。"+new Date();
}
}
@WebService:宣告webservice介面;
@WebService(endpointInterface="Service.HelloWorld",serviceName="HelloWorld"):宣告這個類是TestService介面的實現類。
其次,在WEB-INF下新建cxf-servlet.xml檔案,程式碼如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:jaxws="http://cxf.apache.org/jaxws"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">
- <importresource="classpath:META-INF/cxf/cxf.xml"/>
- <importresource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
- <importresource="classpath:META-INF/cxf/cxf-servlet.xml"/>
-
<jaxws:server id="HelloWorld"
serviceClass="Service.HelloWorld" address="/helloWorld">
<jaxws:serviceBean>
<bean class="Service.HelloWorldImpl" />
</jaxws:serviceBean>
</jaxws:server> - </beans>
然後,在web.xml中配置啟動時載入cxf-servlet.xml,並配置Spring的監聽器,程式碼如下:
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/cxf-servlet.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
web.xml檔案的完整內容如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appversion="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/cxf-servlet.xml</param-value>
- </context-param>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <servlet>
- <servlet-name>CXFServlet</servlet-name>
- <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>CXFServlet</servlet-name>
- <url-pattern>/*</url-pattern>
- </servlet-mapping>
- </web-app>
最後,釋出到tomcat中並啟動,在瀏覽器中輸入http://localhost:8080/cxftest/services/testService?wsdl,釋出成功!
2:進行服務端的呼叫
2.1:新建Java專案。new Web Service Client.輸入wsdl地址。自動生成相關程式碼。紅色框就是根據你的客戶端所生成的程式碼。
2.2:新建Main方法呼叫HelloWorldPoxy進行測試即可。
2.3:結果如圖:
3:本質理解
一次Web service請求的流程
一次web service請求的本質:
1)客戶端向伺服器端傳送了一個soap訊息(http請求+xml片斷)
2) 服務器端處理完請求後, 向客戶端返回一個soap訊息
那麼它的流程是怎樣的呢?