回到首頁
關於我
我的Picasa
留言板
訂閱我的文章
放大字型
原始字型
回到最上層

控制主頁

公告

感謝各位網友的造訪與回應,由於工作的關係實在沒有心力繼續維護這個BLOG。對於各位的留言,有時候真的感到心有餘而力不足,所以沒有回應的部分,還請眾網友們多多包涵。Hans在這邊感謝你們的參與~~ 2011.12.20 Hans

2008年7月17日 星期四

使用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

希望你能幫忙解決

Hans 提到...

HI~ 您好

改程式不用重建阿!
你只要之前的動作都對,有出現本文章
"Step7.檢查是否成功" 裡面的畫面後,接下來直接改程式,存檔後Eclipse會自動幫你搞定後面一切動作

你只要重新回到 "Step7.檢查是否成功" 這個步驟再檢查一下你新增的方法有沒有出現就可以囉!

(不過你上面提到的例子在這邊看不出來,要把WSDL轉成Client 才會知道參數有沒有改變)

也就是說,要改Web Service的程式,server端交給Eclipse,他會幫你重新產生WSDL,而client端則要根據重新產生的WSDL再重建一次

Hans 提到...

再補充一點,你在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呢?
謝謝^^

Hans 提到...

Eclipse本來就是去呼叫Tomcat來幫你執行web service的,所以當然可以把你寫的程式發佈到Tomcat去囉。

你可以把你寫的專案匯出成WAR擋在丟入Tomcat,也可以直接進到eclipse的資料夾下找出你的專案資料夾,把整個資料夾拉到Tomcat下

以上資訊希望能對你有幫助 ^^

匿名 提到...

謝謝^^我試成功了~感溫~

匿名 提到...

大大您好:

使用Axis2產生的WSDL文件,是否可以修改呢!!
因為我遇到在WSDL文件中接口的IP是捉Local IP,而非是對外的IP。

192.168.0.1 ==> 61.60.42.111

謝謝您。

Hans 提到...

您好:

我測試的結果是,還真的沒有選項可以修改他。

所以目前的方法就是將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

jackshih 提到...

"[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改掉.

J.S. 提到...

Hans您好,請教一下,小弟根據您的說明實作了一次,結果是成功的。但在步驟7查看HelloWorld的WSDL文件時,只出現「Please Type your service description here」,請問在設定上是哪裏出錯了?先謝謝您的幫忙嘍!

Terry 提到...

Hans 你好, 昨天我照你的步驟做有成功了!結果我手殘把project刪掉再創一個的時候, 在步驟8選service為axis2的地方出錯了!它寫說: The Apache Axis2 Web service runtime in Tomcat v7.0 Server does not support the service project ws.
請問是我什麼部份出錯了嗎?? 謝謝

Terry 提到...

PS. 我把server改成5.5或6.0都會出現同樣的問題......T_T

Unknown 提到...

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,不知你是否曾經遇過?

hank 提到...

hi hans 你好

若要寫接資料庫的wsdl 可以找你幫忙嗎!!
謝謝!!!

lulu chang 提到...

問題1:
照步驟做完create Web Service 後並沒有產生wsdl資料夾及wsdl檔案,但從axis2平台中去點開services list 是可看到wsdl的xml,請問可能原因是什麼呢?

問題2:
如何將完成專案的wsdl及class 整個部署到axis2的目錄下(C:\axis2-1.4),再用tomcat 啟動使用呢?

by LULU

匿名 提到...

分常清楚 感謝大大分享

TCCC 提到...

關於"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",要從哪設定?

Rely Ky 提到...

謝謝分享