使用Eclipse建立Web Service
2008 7/17 就算工具無敵!也要會用才行!.... 咦!有押韻耶!
軟體環境
Eclipse IDE for Java EE Developers (Eclipse 3.4版)
JDK 6
Tomcat 5.5.26
Apache Axis2 1.4
以上是這次所使用的軟體環境!
接著就讓我們來看看怎麼用Eclipse來建立Web Service吧!
(所有圖片皆可以點擊放大!)
Step1.環境設定
先安裝好JDK,然後將Tomcat 及 Axis2 解壓縮
我將這兩個東西解壓縮在 C:\ 下
接著設定環境變數!
JAVA_HOME = C:\Program Files\Java\jdk1.6.0_03
AXIS2_HOME = C:\axis2-1.4
(以上請依造實際的版本及安裝位置設定)
Step2.Eclipse 環境設定
Window > Preferences
接著 Server > Runtime Environments > Add
選 Apache Tomcat v5.5 然後按下 "Next"
Tomcat installation directory:C:\tomcat5.5.26
JRE:jre1.6.0_03
(請選你實際安裝的位置及版本)
接著設定 Web Services部分
Window > Preferences
接著 Web Services > Axis2 Preferences
Axis2 runtime location:C:\axis2-1.4
Step3.建立專案
在 Project Explorer 右鍵 New > Dynamic Web Project
建立一個 Dynamic Web Project
專案名稱我取名為:ws
Step4.寫程式
建立一個 HelloWorld 類別吧!
寫個簡單的 echo 方法!
public String echo(String str){
return str;
}
Step5.建立執行環境
在下方的Server標籤頁建立一個Server
右鍵 > New > Server
選剛剛設定好的 Apache Tomcat v5.5
Step6.Create Web Service
對著剛剛寫好的 HelloWorld 按右鍵
Web Services > Create Web Service
點一下 Configuration 設定環境
Runtime 選 Axis2
Server 選剛剛建立好的 Server
按下 "Next" 繼續
這邊用預設就好了!
按下 "Next" 繼續
按下 Start Server 啟動伺服器
接著按下 finish 即可完成!
Step7.檢查是否成功
輸入 http://127.0.0.1:8080/ws/ 你會看到這樣的畫面!
接著點擊進入 Services
你會看到剛剛寫的 HelloWorld 出現在列表上!
點擊進入 HelloWorld
出現了!是WSDL文件!用來給Client使用的東西!
Step8.建立 Web Service Client
首先還是要先建立一個 Dynamic Web Project
在 Project Explorer 右鍵 New > Dynamic Web Project
我取名為 "wsClient"
不建立也可以,那就是把Client放在同一個專案裡面 (個人不建議這樣做)
接著在新建好的 "wsClient" 專案上
右鍵 > New > Web Service Client
建立 Web Service Client
在 Service definition 輸入剛剛產生 WSDL 文件的網址!
Configuration 一樣!
Runtime 選 Axis2
Server 選剛剛建立好的 Server
按下 "Next"
這邊用預設就好!
按下 finish 即會自動幫你產生 Client 端要用的程式!
左邊是Eclipse自動幫你產生的類別!
接著我們要自己寫一個程式來使用 Web Service 請 New 一個新類別!
中間紅線框起來的部分建議打勾!這樣比較快!
寫個程式來測試吧!
執行!
Console 視窗顯示的就是執行結果!
以上就是簡單的用 Eclipse 建立 JAVA Web Service 教學!
謝謝收看!
27 回應:
hi
你的文章很好
我想問的是, 如果我想把
範例中的
public String echo(String str){
return str;
}
改成
public String echo(){
return "Hello";
}
該如何重建Web Service呢?
我這邊不能直接'Create Web Service'重建,會有以下錯誤
IWAB0489E Error when deploying Web service to Axis runtime
axis-admin failed with {http://schemas.xmlsoap.org/soap/envelope/}Client The service cannot be found for the endpoint reference (EPR) http://localhost:8080/wsTest/services/AdminService
希望你能幫忙解決
HI~ 您好
改程式不用重建阿!
你只要之前的動作都對,有出現本文章
"Step7.檢查是否成功" 裡面的畫面後,接下來直接改程式,存檔後Eclipse會自動幫你搞定後面一切動作
你只要重新回到 "Step7.檢查是否成功" 這個步驟再檢查一下你新增的方法有沒有出現就可以囉!
(不過你上面提到的例子在這邊看不出來,要把WSDL轉成Client 才會知道參數有沒有改變)
也就是說,要改Web Service的程式,server端交給Eclipse,他會幫你重新產生WSDL,而client端則要根據重新產生的WSDL再重建一次
再補充一點,你在Create Web Service時Runtime 一定要確認是選 "AXIS2" 而不是 "AXIS" (請參考本文"Step6.Create Web Service")
我測試了一下,當我Runtime故意選錯為 "AXIS" 就會出現跟你一樣的錯誤訊息囉
IWAB0489E Error when deploying Web service to Axis runtime
axis-admin failed with {http://schemas.xmlsoap.org/soap/envelope/}Client The service cannot be found for the endpoint reference (EPR) http://localhost:8080/ws/services/AdminService
故研判你應該是Runtime選錯囉
希望這些資訊有解決你的問題
您好,感謝您的教學~^^對於新手來說這真的是很棒的文章。
可否請問一下,照這篇教學透過eclipse建立的web service 可以成功執行。
不過eclipse關掉之後似乎就無法執行,不知是否有辦法將自行產生的ws掛到目前主機的tomcat上,而不需透過eclipse呢?
謝謝^^
Eclipse本來就是去呼叫Tomcat來幫你執行web service的,所以當然可以把你寫的程式發佈到Tomcat去囉。
你可以把你寫的專案匯出成WAR擋在丟入Tomcat,也可以直接進到eclipse的資料夾下找出你的專案資料夾,把整個資料夾拉到Tomcat下
以上資訊希望能對你有幫助 ^^
謝謝^^我試成功了~感溫~
大大您好:
使用Axis2產生的WSDL文件,是否可以修改呢!!
因為我遇到在WSDL文件中接口的IP是捉Local IP,而非是對外的IP。
192.168.0.1 ==> 61.60.42.111
謝謝您。
您好:
我測試的結果是,還真的沒有選項可以修改他。
所以目前的方法就是將wsdl複製下來,然後修改好,在建立client的時候,匯入你修改過的wsdl,而不要直接使用網路上的wsdl,應該可以解決你的問題。
另外,我也還是初學者,所以如果有錯也請不吝指教。
您好…請教一下,
我照著您的step,做到了step7後,
要進service就發生error了,
網頁上出現 "Internal server error "
然後在eclipse裡一開始start server時,在console中有出現
"[ERROR] Servlet /ws threw load() exception
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet"
這樣的情況,
可以麻煩幫我解答嗎?謝謝!
我剛下載了最新的eclipse, tomcat 6.0 , JDK 6 但是我在eclipse中根據上述步驟設定了tomcat,但是當我start server時 eclipse 的console 都說正常起動,但我在IE 到http://localhost:8080/ 發現tomcat未有啟動.project也沒有被deploy到 tomcat的webapp directory
我用相同步驟在Myeclipse設定時,tomcat能正常啟動!可惜myeclipse不支援axis2
請問出了什麼問題
HI~
你的步驟非常的清楚明瞭。
有些error我不知道如何解決,
希望各位能給我提示一下。
謝謝!!
關於步驟5的部份~
為什麼我去建立一個新的server時會出現以下error訊息:
An error has occurred. See error log for more details.
Reason:
org.eclipse.jst.server.generic.internal.servertype.definition.ServerTypePackage
"[ERROR] Servlet /ws threw load() exception
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet"
這問題真的很詭異~~~我也有遇到~~
可是我把tomcat關掉 然後再打開~~就正常了!!!真的很詭異~~~~供大家參考
Thank You for your website.
I have the same issues as
Servlet /ws threw load() exception
java.lang.ClassNotFoundException: org.apache.axis2.transport.http.AxisAdminServlet"
I reference the below website to resolve the issues.
http://forums.sun.com/thread.jspa?threadID=5308003
thank you !
ws點開,
有一個wsdl的資料夾,
裡面有一個.wsdl的檔案,
可以在那裡修改wsdl.
把localhost改掉.
Hans您好,請教一下,小弟根據您的說明實作了一次,結果是成功的。但在步驟7查看HelloWorld的WSDL文件時,只出現「Please Type your service description here」,請問在設定上是哪裏出錯了?先謝謝您的幫忙嘍!
Hans 你好, 昨天我照你的步驟做有成功了!結果我手殘把project刪掉再創一個的時候, 在步驟8選service為axis2的地方出錯了!它寫說: The Apache Axis2 Web service runtime in Tomcat v7.0 Server does not support the service project ws.
請問是我什麼部份出錯了嗎?? 謝謝
PS. 我把server改成5.5或6.0都會出現同樣的問題......T_T
axis2目前只支援到servlet2.5
若使用新的eclipse建立 Dynamic Web Project時,Dynamic web module version會自動帶成3.0,
只要把它改成2.5,後面的就可以囉
你好~
我在建置wsClient的時候,出現"Exception occurred during code generation for WSDL : org.apache.axis2.AxisFault: No operation found in the portType element"的Error,不知你是否曾經遇過?
hi hans 你好
若要寫接資料庫的wsdl 可以找你幫忙嗎!!
謝謝!!!
問題1:
照步驟做完create Web Service 後並沒有產生wsdl資料夾及wsdl檔案,但從axis2平台中去點開services list 是可看到wsdl的xml,請問可能原因是什麼呢?
問題2:
如何將完成專案的wsdl及class 整個部署到axis2的目錄下(C:\axis2-1.4),再用tomcat 啟動使用呢?
by LULU
分常清楚 感謝大大分享
關於"Exception occurred during code generation for WSDL : org.apache.axis2.AxisFault: No operation found in the portType element"這個error我在設置環境的時候也有碰到~
後來解決了,是個粗心小錯誤~
就是HelloWorld那邊忘記save了
這樣你在點進去service/HelloWorld的時候就找不到echo了,save後echo就跑出來了,這個error也解決了^^
好文,大推
請問一下,如果我要設定參數nillable="false",要從哪設定?
謝謝分享
張貼留言