剛開始學webservice時就據說了cxf,一直沒有嘗試過,這兩天試了一下,還不錯,總結以下:
要使用cxf固然是要先去apache下載cxf,下載完成以後,先要配置環境變量,有如下三步:
1.打開環境變量配置窗口,點擊新建,新建%CXF_HOME%變量,值爲你下載的cxf所在的目錄,個人是D:\tools\apache-cxf-3.1.0
2.在Path變量中新加一句%CXF_HOME%\lib,注意要和已有的path變量用;隔開
3.在CLASSPATH中新加一句%CXF_HOME%\lib\cxf-manifest.jar,這裏也要和已有的classpath變量用;隔開
好了,至此配置已經完成,接下來咱們新建一個web項目,把下載的cxf文件夾中的lib文件夾下的全部jar文件拷貝到WEB-INF中的lib文件夾中。下來就能夠正式開發了,先看看工程目錄結構:java
IMyServer.javaweb
@WebService public interface IMyServer { @WebResult(name="addResult") public int add(@WebParam(name="a")int a,@WebParam(name="b")int b); }
MyServerImpl.javaspring
@WebService(endpointInterface="cxf.lenve.test.IMyServer") public class MyServerImpl implements IMyServer { @Override public int add(int a, int b) { System.out.println("服務端..."+a+"+"+b+"="+(a+b)); return a+b; } }
寫一個接口一個實現類就能夠了,至於發佈則在配置文件中完成便可apache
beans.xml瀏覽器
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="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"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-servlet.xml" /> <!-- 定義webservice服務,至關於發佈 --> <jaxws:server id="MyServer" address="/MyServer" serviceClass="cxf.lenve.test.IMyServer"> <!--發佈服務類 --> <jaxws:serviceBean> <bean class="cxf.lenve.test.MyServerImpl"></bean> </jaxws:serviceBean> </jaxws:server> </beans>
好了,文檔已經發布,剩下的就是配置web.xml文件了,看:app
web.xmlide
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <context-param> <param-name>contextConfigLocation</param-name> <param-value>WEB-INF/beans.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <!--cxfservlet的做用就是解析webservice請求 --> <servlet> <servlet-name>cxf</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- 全部前綴爲ws的請求都被解析爲webservice請求 --> <servlet-mapping> <servlet-name>cxf</servlet-name> <url-pattern>/ws/*</url-pattern> </servlet-mapping> </web-app>
好了,至此一個cxf整合spring的webservice的應用編寫成功了,運行該網站,在瀏覽器中查看wsdl文檔:工具
服務端成功發佈,客戶端該怎樣訪問呢?從前咱們使用wsimport將wsdl導出爲java文件,如今使用cxf,能夠直接使用cxf中自帶的工具wsdl2java導出wsdl文件。
先建立一個客戶端工程,在命令行進入該工程的src文件夾中,而後,使用以下命令導出java文件:網站
刷新客戶端工程,就能夠看到導出的java文件了。 url
直接調用便可:
public class Client1 { public static void main(String[] args) { IMyServer iMyServer = new IMyServerService().getIMyServerPort(); System.out.println(iMyServer.add(3, 4)); } }
這即是cxf整合spring的一個簡單項目。