最近公司業務上使用webservice 頻繁。由于之前都是自己建立webservice 自己定義提供幫對方服務,現在則相反需求都是根據人家提供的wsdl 文件來生成 我們系統必須提供的接口。剛起初不知道如何生成soapui調用wsdl需要安全驗證,為了一個webservice 服務,而建立多種環境如: xfire,jaxws,axis,cxf , 幾種都搭建出來,一種一種比較生成wsdl 的格式,最好確認了格式,又得確定方式,對象,服務名,一系列下來的花上 1-2天時間。
言歸正傳,首先普及一下,webservice 規范,無論他們所使用的語言、 平臺或外部協議是何種, 都可以互相交換數據。
換句話說,人家提供的wsdl ,我們生成的基本條件為 調用的服務名,端口,方法名得跟 提供的wsdl 一致,這樣就能通訊. 所以不必糾結使用哪個框架 生成,選我們很熟悉的webservice ,這里我使用的是apache-cxf-2.7.11
生成 根據人家提供的wsdl 一樣的接口與服務 , 測試服務接口硬件soapui-4.5.2 , apache-cxf-2.7.11
1. 在官方下載apache-cxf-2.7.11 完成后,配置環境變量(和java 配置環境變量一樣)
新建環境變量CXF_HOME = 你的路徑/apache-cxf-2.7.11
2. 在Path 后面添加 %CXF_HOME%/bin ,保存退出
3. cmd 一下 看能否有此界面,如果有則順利了
4. 啟動soapui-4.5.2\bin\soapui.bat , 新建 New soapUI project
5. 點ok 后,生成如下圖soapui調用wsdl需要安全驗證,然后選中項目選取apache cxf
6. 點擊tools,選中cxf 路徑,ok后,在后面礦 選擇輸出文件模式,填寫包路徑,勾選 生成 generates client ,generates server, generates implement, 點擊generates
7. 這就完成了。其實soapUI 也并非用apache-cxf 命令生成。也可以用apache-cxf bin 下生成目錄.
8. 引入jar 包 ,我這兒使用的是 maven
org.apache.cxf
cxf-api
2.7.11
org.apache.cxf
cxf-rt-frontend-jaxws
2.7.11
org.apache.cxf
cxf-rt-bindings-soap
2.7.11
org.apache.cxf
cxf-rt-transports-http
2.7.11
org.apache.cxf
cxf-rt-ws-security
2.7.11
9. 復制至工程后。 新建文件名applicationContext-cxf.xml ,
http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://cxf.apache.org/jaxws?http://cxf.apache.org/schemas/jaxws.xsd">
10. 與spring 的applicationContext.xml 文件一個目錄, 再在applicationContext.xml 里面引用
http://www.springframework.org/schema/beans?http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context?http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop?http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx?http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
">
11. 在項目里配置 web.xml
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
CXFServlet
/services/*
完成前面步驟之前首先你的ssh 工程得走的上去。最少得有spring 支持。我使用的是 spring mvc + mybatis
按上面來不會有出錯. 在瀏覽器輸入:8080/tsmweb/services/sptsmstubws?wsdl
路徑名稱 servlet url pattern +applicationContext-cxf.xml address
顯示如下。成功
引用:
本文來自電腦雜談,轉載請注明本文網址:
http://www.pc-fly.com/a/tongxinshuyu/article-140906-1.html