web 服務(wù)是分布式應用程序組件,它們符合一定的標準,因而可供外部使用。分布式環(huán)境的激增對企業(yè)提出了新的要求,企業(yè)必須能夠通過開放式網(wǎng)絡(luò)將某個應用程序的全部或部分功能向其他應用程序公開。使用 web 服務(wù),可以解決獨立開發(fā)并在各種不同軟件和硬件平臺上運行的應用程序的集成問題。
netbeans ide 4.1 與基于 jsr-109 的 web 服務(wù)支持捆綁在一起,jsr-109 是一種開發(fā)范例,它適用于基于 jax-rpc (jsr-101) 的 j2ee 開發(fā)。netbeans ide 4.1 中的 web 服務(wù)功能是端到端 j2ee 功能集的一部分。在 netbeans ide 4.1 中使用 web 服務(wù)要比在 netbeans ide 4.0 中使用容易得多。例如,netbeans ide 4.1 提供了創(chuàng)建 web 服務(wù)和 web 服務(wù)客戶機的向?qū)А!?
在本教程中,將創(chuàng)建一個包含以下內(nèi)容之一的 j2ee 應用程序:
web 應用程序(使用 servlet 公開的服務(wù))
ejb 模塊(使用會話 bean 公開的服務(wù))
請注意,您必須選擇要生成這兩個方案中的哪一個。可以使用本教程創(chuàng)建 web 應用程序或 ejb 模塊。
本教程介紹了以下主題:
設(shè)置環(huán)境
開發(fā) web 服務(wù)
公開 web 服務(wù)
使用 web 服務(wù)
包裝應用程序
設(shè)置環(huán)境
在開始編寫代碼之前,您必須確保安裝了所需的所有軟件并且正確設(shè)置了服務(wù)器。
安裝軟件
在開始安裝之前,需要在計算機中安裝以下軟件:
· netbeans ide 4.1(下載)
· sun java system (sjs) application server platform edition 8 2005q1(下載)
· java standard development kit (jdktm) 1.4.2 版(下載)或 5.0 版(下載)
注冊 sun java system application server
在編譯 web 服務(wù)之前,必須先注冊 sjs application server 的本地實例。如果安裝了 netbeans ide 4.1/sjs application server 包,則會自動注冊本地應用服務(wù)器。
1. 從主窗口中選擇“工具”>“服務(wù)器管理器”。
2. 單擊“添加服務(wù)器”。選擇 "sun java systems application server 8.1",并為此實例指定一個名稱。然后單擊“下一步”。
3. 指定服務(wù)器信息、應用服務(wù)器本地實例的位置以及要部署的域。
開發(fā) web 服務(wù)
對 web 服務(wù)進行編碼非常容易。ide 會處理所有實現(xiàn)細節(jié),因此您可以集中精力對 web 服務(wù)的業(yè)務(wù)邏輯進行編碼。
創(chuàng)建項目
1. 決定是將 web 服務(wù)作為 web 應用程序?qū)崿F(xiàn),還是作為會話 bean 實現(xiàn)。
2. 選擇“文件”>“新建項目”(ctrl-shift-n),然后執(zhí)行以下操作之一:
o 在“類別”下選擇 "web"。在“項目”下選擇“web 應用程序”。單擊“下一步”。
o 在“類別”下選擇“企業(yè)”。在“項目”下選擇“enterprise javabeans 模塊”。單擊“下一步”。
3. 將項目命名為 hiws,將“項目文件夾”更改為計算機中的任意文件夾,并確保在“服務(wù)器”下拉列表中選擇了 "sun java system application server"。單擊“完成”。
創(chuàng)建 web 服務(wù)
1. 右鍵單擊項目節(jié)點,然后選擇“新建”>“web 服務(wù)”。將 web 服務(wù)命名為 hiws,在“包”字段中鍵入 org.me.hi,然后單擊“完成”。將在源編輯器中打開一個名為 hiwsimpl.java 的實現(xiàn)類(在 web 應用程序中),或者打開一個名為 hiwsbean.java 的會話 bean(在 ejb 模塊中)。
2. 在“項目”窗口中,展開“web 服務(wù)”節(jié)點,右鍵單擊 hiws web 服務(wù)節(jié)點,然后選擇“添加操作”。在“名稱”字段中鍵入 sayhi,然后在“類型”組合框中選擇“字符串”。單擊“添加”,定義一個名為 s 的 java.lang.string 型參數(shù)。單擊“確定”創(chuàng)建操作框架。
3. 展開“源包”節(jié)點和 org.me.hi 節(jié)點。雙擊 hiwssei.java 節(jié)點,可以注意到已經(jīng)在接口類中聲明了操作。
4. 在源編輯器中,將操作框架填寫到實現(xiàn)類或會話 bean 中。要執(zhí)行此操作,請在 sayhi 操作的主體中將 "return null;" 替換為以下代碼:
5. return "hi " + s + "!";
6. 現(xiàn)在代碼應如下所示:
package org.me.hi;
public class hiwsimpl implements hiwssei {
public string sayhi(java.lang.string s) {
return "hi " + s + "!";
}
}
生成和配置 soap 消息處理程序
1. 右鍵單擊項目節(jié)點并選擇“新建”>“文件/文件夾”。在“類別”下選擇“web 服務(wù)”。在“文件類型”下選擇“消息處理程序”。單擊“下一步”。
2. 將消息處理程序命名為 hiwslogger,在“包”下拉列表中選擇 org.me.hi,然后單擊“完成”。將創(chuàng)建一個名為 hiwslogger.java 的實現(xiàn)類,并在源編輯器中將其打開。
3. 在 handlerequest 方法中,請注意按如下方式定義要記錄的消息:
4. stringbuffer message = new stringbuffer();
5. while (childelems.hasnext()) {
6. child = (soapelement) childelems.next();
7. message.append(new date().tostring() + "--");
8. formlogmessage(child, message);
9. }
10.
11. system.out.println("message: " + message.tostring());
12.
13. 在“項目”窗口中,展開“web 服務(wù)”節(jié)點,右鍵單擊該 web 服務(wù)的節(jié)點,然后選擇“配置處理程序”。在“配置 soap 消息處理程序”對話框中,單擊“添加”,然后瀏覽到 hiwslogger 類。單擊“確定”。
將在對話框中列出消息處理程序類。
單擊“確定”完成 soap 消息處理程序的配置。
公開 web 服務(wù)
在公開 web 服務(wù)時,可以使其供客戶機使用。可以使用 ide 作為客戶機,以便在部署后對其進行測試。
部署 web 服務(wù)
根據(jù) web 服務(wù)的實現(xiàn)方式,請執(zhí)行以下操作之一:
· 對于作為 web 應用程序?qū)崿F(xiàn)的 web 服務(wù),請執(zhí)行以下操作:
1. 在“項目”窗口中右鍵單擊 hiws 項目節(jié)點,然后選擇“屬性”。在“項目屬性”對話框中,選擇“運行”窗格。在“上下文路徑”文本框和“相對 url”文本框中均鍵入 /hiws。單擊“確定”。
2. 在“項目”窗口中右鍵單擊 hiws 項目,然后選擇“運行項目”。
這將啟動符合 j2ee 的服務(wù)器并部署 web 服務(wù)。在 ide 的缺省瀏覽器中應該會顯示一條類似于以下內(nèi)容的消息:
invalid wsdl request http://localhost:8080/hiws/hiws for web service hiws
· 對于作為會話 bean 實現(xiàn)的 web 服務(wù),請在“項目”窗口中右鍵單擊 hiws 項目,然后選擇“部署項目”。這將啟動符合 j2ee 的服務(wù)器并部署 web 服務(wù)。
請注意,必須將 web 服務(wù)保持部署狀態(tài),以便在下一部分中創(chuàng)建 web 服務(wù)客戶機。
注冊和測試 web 服務(wù)
1. 在“項目”窗口中,展開“web 服務(wù)”節(jié)點,右鍵單擊 hiws web 服務(wù)節(jié)點,然后選擇“添加到注冊表”。
您可能會收到一條類似于以下內(nèi)容的錯誤消息:
unable to add web service to registry. make sure it has been deployed,
the server is running, and the correct wsdl url was entered.
如果收到此錯誤消息,請確保已經(jīng)部署了 web 服務(wù),然后再次選擇“添加到注冊表”。
將出現(xiàn)一個對話框,其中推薦了可用于注冊 web 服務(wù)的 url。
2. 記下該 url,因為稍后在創(chuàng)建 web 服務(wù)客戶機時需要使用它。單擊“確定”。
3. 在“運行環(huán)境”窗口中,展開“web 服務(wù)”節(jié)點,然后繼續(xù)展開節(jié)點,直至找到 sayhi 節(jié)點。右鍵單擊 sayhi 節(jié)點,然后選擇“測試操作”。在“測試 web 服務(wù)操作”對話框的“值”文本框中鍵入 "john",然后單擊“提交”。將在對話框底部顯示結(jié)果 "hi john!"。
4. 展開“服務(wù)器”節(jié)點,右鍵單擊 sun java system application server 8.1 節(jié)點,然后選擇“查看服務(wù)器日志”。將會顯示 server.log 文件,其中包括一條類似于以下內(nèi)容的消息:
5. message: wed jan 12 16:56:48 cest 2005--sayhi string_1:john |#]
這是由上一部分中創(chuàng)建的 soap 消息處理程序生成的日志消息。
在對操作進行測試之后,如果您對該 web 服務(wù)感到滿意,則可以將其功能集成到 web 服務(wù)客戶機中。
使用 web 服務(wù)
使用 web 服務(wù)是指客戶機在使用 web 服務(wù)時所執(zhí)行的操作。使用 ide 可以很容易地設(shè)置客戶機,以使其使用 web 服務(wù)。可以使用向?qū)韺朊枋?web 服務(wù)接口的 wsdl 文件。然后,可以將其集成到客戶機中,以使該 web 服務(wù)完成一些有用的工作。
創(chuàng)建 web 應用程序項目
· 選擇“文件”>“新建項目”(ctrl-shift-n)。在“類別”下選擇 "web"。在“項目”下選擇“web 應用程序”。將項目命名為 hiwsclient,將“項目文件夾”更改為計算機中的任意文件夾,并確保在“服務(wù)器”下拉列表中選擇了 "sun java system application server"。單擊“完成”。
搜索有關(guān) web 服務(wù)的信息
1. 右鍵單擊項目節(jié)點,然后選擇“新建”>“web 服務(wù)客戶機”。復制正在運行的 web 服務(wù)的 url,并將其粘貼到 wsdl url 文本框中,然后單擊“檢索 wsdl”。如果“本地文件名”文本框中填寫了 wsdl 文件名,則說明已經(jīng)正確檢索到了 wsdl 文件。在“包”字段中鍵入 org.me.hi,然后單擊“完成”。
2. 展開“web 服務(wù)引用”節(jié)點,然后繼續(xù)展開節(jié)點,直至找到 sayhi 節(jié)點。右鍵單擊 sayhi 節(jié)點,然后選擇“測試操作”。在“測試 web 服務(wù)操作”對話框的“值”文本框中鍵入 "john",然后單擊“提交”。將在對話框底部顯示結(jié)果 "hi john!"。在對操作進行測試之后,如果您對公開的 web 服務(wù)感到滿意,則可以創(chuàng)建一個客戶機來使用它。
3. 右鍵單擊 hiwsclient 項目節(jié)點,然后選擇“新建”> "servlet"。將 web 服務(wù)命名為 hiservlet,在“包”字段中鍵入 org.me.hi,單擊“下一步”,然后單擊“完成”。將在源編輯器中打開 servlet hiservlet.java。
創(chuàng)建 web 服務(wù)客戶機
1. 在源編輯器中,在 hiservlet 類的 processrequest 操作中單擊鼠標右鍵。選擇“web 服務(wù)客戶機資源”>“調(diào)用 web 服務(wù)操作”,選擇 sayhi 操作,然后單擊“確定”。剪切并粘貼框架操作,將其放在 out.close(); 行的上方。
2. 現(xiàn)在可以填寫框架操作,使其如下所示:
3. try {
4. out.println(gethiwsseiport().sayhi("ludwig"));
5. } catch(java.rmi.remoteexception ex) {
6. out.println("
caught an exception
" + ex);
7. }
8. (可選)如果您希望用戶能夠與 web 服務(wù)進行交互,請將上述代碼刪除,并在 processrequest 方法的 標記之間添加以下代碼:
|
包裝應用程序
(可選)可以在 ear 文件中包裝應用程序并對其進行部署。或者,也可以單獨部署 web 服務(wù)和 web 服務(wù)客戶機。
創(chuàng)建 j2ee 應用程序項目
1. 選擇“文件”>“新建項目”(ctrl-shift-n)。在“類別”下選擇“企業(yè)”。在“項目”下選擇“空的企業(yè)應用程序”。將項目命名為 hiapp,然后將“項目文件夾”更改為計算機中的任意文件夾。單擊“完成”。
2. 展開 hiapp 項目節(jié)點,然后右鍵單擊“j2ee 模塊”節(jié)點。選擇“添加 j2ee 模塊”。選擇 "hiwsclient" 并單擊“確定”。然后重復此步驟并選擇 "hiws"。
部署 j2ee 應用程序
1. 在“項目”窗口中右鍵單擊 hiapp 項目節(jié)點,然后選擇“屬性”。在“項目屬性”對話框中,選擇“執(zhí)行”。確保在“客戶機模塊 uri”文本框中填寫了 hiwsclient.war。在“相對 url”文本框中鍵入 /hiservlet。單擊“確定”。
2. 在“項目”窗口中右鍵單擊 hiapp 項目,然后選擇“運行項目”。
您可能會收到一條類似于以下內(nèi)容的錯誤消息:
deploying application in domain failed; cannot deploy. application already exists.
please select the redeploy option. ; requested operation cannot be completed
如果收到此錯誤消息,請在“運行環(huán)境”窗口的“服務(wù)器注冊”節(jié)點中展開 sun java system application server 8 節(jié)點。然后展開“應用程序”節(jié)點,再展開“企業(yè)應用程序”節(jié)點和“web 應用程序”節(jié)點。如果列出了 hiapp、hiws 或 hwsclient,則需要將其卸下。右鍵單擊這些節(jié)點,然后選擇“卸下”。在“項目”窗口中,再次運行 hiapp 項目。
將啟動符合 j2ee 的服務(wù)器,對應用程序進行部署,并在 ide 的缺省 web 瀏覽器中顯示部署結(jié)果。
3. 如果在應用程序中添加了用戶接口(如前一部分所述),請輸入一個名稱,然后單擊“提交”。客戶機將使用 web 服務(wù)中的 "hi" 和 "!" 字符串,在其中插入您所輸入的名稱,并在瀏覽器中顯示問候語。如果未添加用戶接口,瀏覽器將顯示消息 "hi ludwig!"。
新聞熱點
疑難解答
圖片精選