轉 http://www.biliyu.com/article/986.html
1、環境
- IntelliJ IDEA 14.0.2
- JAVA 1.6
- Tomcat 7
2、新建項目
進入File > New Project…
菜單打開新建項目窗口,依次選擇Java
、WebServices
,Version
項選擇Apache Axis,Libraries
項選擇 Download。然后點擊Next
按鈕進入下一頁。
在下一頁中輸入項目名稱,然后點擊Finish
按鈕開始下載依賴包。依賴包下載完成后進入新建的項目。
3、項目初始結構
src/example
目錄下自動創建了一個 HelloWold 類:
package example;/** * Created by Administrator on 2015/7/30. */ public class HelloWorld { public String sayHelloWorldFrom(String from) { String result = "Hello, world, from " + from; System.out.println(result); return result; } }
web/WEB-INF
目錄下創建一個server-config.wsdd
服務配置文件。
4、生成 WSDL 文件
在HelloWorld.java
文件上點擊右鍵,選WebServices > Generate Wsdl From Java Code
。
然后在出現的窗口里點擊確定
按鈕。
在HelloWorld.java
所在目錄會生成一個HelloWorld.wsdl
文件。
5、啟動服務
啟動服務這里稍微有點復雜,因為要配置 Tomcat 服務器。先喝口茶再繼續往下看。
選擇Run > Edit Configurations…
菜單,打開Run/Debug Configurations
窗口。
在Run/Debug Configurations
窗口里添加+
按鈕,在出現的菜單里選擇Tomcat Server > Local
。如果看不到Tocmat Server
菜單項,則點擊最下面的29 items more (irelevant)…
菜單項查找。
然后在添加的Tomcat Server
配置頁面中添加配置的Name
、Application server
和HTTP Port
。如果Application server
為空,將本地的 Tomcat 安裝地址添加進來。如果本地沒有,從網上下載 Tomcat 7:
https://tomcat.apache.org/download-70.cgi
這時配置頁面底部可能會顯示有Warning:No Artifacts marked for deployment
(警告:沒有標記要部署的產物)。
點擊警告信息右側的Fix…
按鈕切換到Deployment標簽頁。
在Deployment標簽頁點擊Deploy at the server startup
區的+
按鈕,選擇Artifacts
添加 Artifact 后的界面如下,已經沒有警告了。點擊OK
完成運行參數的配置。
到這個時候,然后可以運行起服務了,但是訪問服務頁面時還是會報錯。因為還要給部署的 Artifact 添加 Apache Axis 包的依賴。
選擇File> Project Structure…
菜單。
在出現的窗口中選擇Project Settings > Artifacts
,會到在新的警告信息。點擊警告信息右側的Fix…
按鈕。
在彈出菜單里選擇Add 'JAX-WS-Apache Axis' to the artifact
。
修復完成后警告消失。
點擊工具欄上的運行或調試按鈕運行服務。
然后在瀏覽器里輸入:
http://localhost:8080/services
訪問結果如下:
6、從 WSDL 文件生成服務端代碼
WSDL 文件可以用來生成客戶端代碼,也可以用來生成服務端代碼。客戶端代碼用於訪問遠程服務,服務端代碼用於提供遠程服務。在 IntelliJ IDEA 里這兩個操作是類似的。這里主要講述服務端代碼的生成。
一個 WSDL 文件對應一個 JAVA 類,比如前面的HelloWorld.wsdl
文件對應HelloWorld.java
。復雜的 WSDL 文件除了對應有一個主類外,還會有輔助類,比如主類方法中使用到的 Bean 等。
這里假設要將主類生成到 services 包目錄下,那么在src/services
(沒有的自己創建一個)目錄上點擊右鍵,在出現在的菜單中選擇WebService > Genarete Java Code From Wsdl…
:
在出現的窗口是選擇遠程 WSDL 的地址,或者選擇本地的 WSDL 文件,然后選擇Output mode(輸出模式)
。這里作者選擇成功server
生成服務端代碼, 用於對外提供服務。當然也可以選擇client
生成客戶端代碼用於訪問遠程服務。
下面是電信 TSM WebService 的 WSDL 文件生成的代碼文件列表:
點擊OK
按鈕后生成對應的文件。其中包含一個名為deploy.wsdd
的文件,將該文件中的service
標簽復制到web/WEB-INF/service-config.wsdd
文件的<deployment>
標簽下,用於對外發布。
運行項目的結果如下:
7、輸出 WSDL 文件
如果手動寫的service-config.wsdd
文件,可能不能訪問 WSDL 文件。這個時候可以在server-config.wsdd
文件的<deployment>
標簽下手動添加<transport>
標簽。內容如下:
<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <transport name="http"> <requestFlow> <handler type="java:org.apache.axis.handlers.http.URLMapper"/> </requestFlow> </transport> ... </deployment>