無題

          拿個學位是騙自己的。學問是一輩子的。

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          如何使用Eclipse開發Axis應用并部署到Tomcat

          這是我繼《如何在Tomcat上安裝配置Axis》之后的第二篇技術備忘,與大家分享。所涉及的所有軟件仍然都是開源軟件(開源傳萬世,因有我參與!)。本篇假設《如何在Tomcat上安裝配置Axis》中描述的所有步驟你都已完成。

          首先,列出在《如何在Tomcat上安裝配置Axis》所用軟件基礎之上還需要用到的軟件:
          1.Eclipse SDK:eclipse-SDK-3.2-win32.zip
          2.Eclipse SDK 語言插件:NLpack1-eclipse-SDK-3.2-win32.zip
          版本問題仍然需要關注,最好與上述一致,下面我們從安裝配置Eclipse開始:

          一.?安裝配置Eclipse
          將eclipse-SDK-3.2-win32.zip解壓,拷貝其下的eclipse文件夾到任何你所希望的安裝路徑,例如:D:\Eclipse。好了,現在已經可以通過運行D:\Eclipse\eclipse下的eclipse.exe啟動Eclipse了,但是如果還想安裝語言插件漢化它的話,現在最好先別啟動。先安裝語言插件,采用link方式,解壓NLpack1-eclipse-SDK-3.2-win32.zip,在D:\Eclipse\eclipse下新建兩個文件夾例如:links和Language Pack,將解壓得到的NLpack1-eclipse-SDK-3.2-win32文件夾拷貝到Language Pack文件夾中,并在links文件夾下新建一個文本文件,例如命名為:language pack.link,在文件中加入一行:path=D:\\Eclipse\\eclipse\\Language Pack\\NLpack1-eclipse-SDK-3.2-win32并保存,注意分隔符是兩個\。現在再啟動Eclipse,可以看到它已經被漢化了(如果還沒有被漢化,不要緊,可以先關閉它,然后帶參數-clean再啟動試試,目的達到后,以后啟動就不要帶這參數了,否則影響啟動速度)。

          二.?在Eclipse中創建Axis應用
          啟動Eclipse,選擇工作空間路徑(例如D:\My_Eclipse_WorkSpace),從歡迎界面轉至工作臺,必要的話,先通過窗口——首選項——Java中的編譯器和已安裝的JRE兩個設置,將編譯器一致性級別和JDK安裝路徑設置好(當然也可以設置JRE安裝路徑,不過這樣在編寫Java代碼時Eclipse的提示信息無法鏈接到類庫源碼,似乎不太方便)。
          接下來,選擇Java透視圖,新建一個Java項目,例如項目名為MoneyManage。鼠標右鍵單擊包資源管理器中的項目名MoneyManage,新建一個文件夾,命名為lib,選中lib文件夾,右鍵單擊,選擇導入命令,選擇常規下的文件系統作為導入源,單擊下一步瀏覽我們先前建好的C:\Tomcat5.0\webapps\axis\WEB-INF\lib目錄,勾選其中的所有jar文件,單擊完成。右擊項目名MoneyManage,選擇屬性——Java構建路徑——庫,點擊添加Jar按鈕,選中剛才導入到lib文件夾下的所有Jar文件,點擊確定將它們都加入項目構建路徑。這樣就將所有我們開發可能涉及到的庫都導入了項目。
          緊接著我們就可以在項目MoneyManage下新建一個包(例如也叫MoneyManage)在其中實現一些類來提供WS的方法了。
          例如,這里我們實現了4個類Action、Admin、MoneyManage和moneyClient。

          三.?將應用部署到Tomcat發布為WS
          例如,我們希望將moneyClient中的所有可訪問(public)方法作為WS發布。
          在項目中新建一XML文件,命名為server-config.wsdd,內容如下:

          ?1 <? xml?version="1.0"?encoding="UTF-8" ?>
          ?2 < deployment? xmlns ="http://xml.apache.org/axis/wsdd/"
          ?3 ?xmlns:java ="http://xml.apache.org/axis/wsdd/providers/java" >
          ?4 ? < globalConfiguration >
          ?5 ?? < parameter? name ="adminPassword" ?value ="admin" ? />
          ?6 ?? < parameter? name ="attachments.implementation"
          ?7 ???value ="org.apache.axis.attachments.AttachmentsImpl" ? />
          ?8 ?? < parameter? name ="sendXsiTypes" ?value ="true" ? />
          ?9 ?? < parameter? name ="sendMultiRefs" ?value ="true" ? />
          10 ?? < parameter? name ="sendXMLDeclaration" ?value ="true" ? />
          11 ?? < parameter? name ="axis.sendMinimizedElements" ?value ="true" ? />
          12 ?? < requestFlow >
          13 ??? < handler? type ="java:org.apache.axis.handlers.JWSHandler" >
          14 ???? < parameter? name ="scope" ?value ="session" ? />
          15 ??? </ handler >
          16 ??? < handler? type ="java:org.apache.axis.handlers.JWSHandler" >
          17 ???? < parameter? name ="scope" ?value ="request" ? />
          18 ???? < parameter? name ="extension" ?value =".jwr" ? />
          19 ??? </ handler >
          20 ?? </ requestFlow >
          21 ? </ globalConfiguration >
          22 ? < handler? name ="LocalResponder"
          23 ??type ="java:org.apache.axis.transport.local.LocalResponder" ? />
          24 ? < handler? name ="URLMapper"
          25 ??type ="java:org.apache.axis.handlers.http.URLMapper" ? />
          26 ? < handler? name ="Authenticate"
          27 ??type ="java:org.apache.axis.handlers.SimpleAuthenticationHandler" ? />
          28 ? <!-- ?服務名? -->
          29 ? < service? name ="moneyClient" ?provider ="java:RPC" >
          30 ?? <!-- ?服務類名? -->
          31 ?? < parameter? name ="className" ?value ="MoneyManage.moneyClient" ? />
          32 ?? <!-- ?允許訪問所有方法? -->
          33 ?? < parameter? name ="allowedMethods" ?value ="*" ? />
          34 ? </ service >
          35 ? < transport? name ="http" >
          36 ?? < requestFlow >
          37 ??? < handler? type ="URLMapper" ? />
          38 ??? < handler
          39 ???? type ="java:org.apache.axis.handlers.http.HTTPAuthHandler" ? />
          40 ?? </ requestFlow >
          41 ? </ transport >
          42 ? < transport? name ="local" >
          43 ?? < responseFlow >
          44 ??? < handler? type ="LocalResponder" ? />
          45 ?? </ responseFlow >
          46 ? </ transport >
          47 </ deployment >
          48


          注意以上文件中的service標簽,就代表了一個WS服務,服務名為moneyClient;第一個parameter子標簽,其value屬性為待發布成服務的方法所在的類名;第二個parameter子標簽表明將類的所有方法發布,允許服務調用者訪問第一個parameter子標簽指出類的所有可訪問方法。
          將編寫好的server-config.wsdd文件拷入C:\Tomcat5.0\webapps\axis\WEB-INF目錄,并將所有4個類都編譯為class文件后按包結構(可以在D:\My_Eclipse_WorkSpace\MoneyManage\bin下找到現成的)拷入C:\Tomcat5.0\webapps\axis\WEB-INF\classes目錄。
          注意,凡是開發中用到的額外第三方jar庫文件,除了在項目構建路徑中添加外,也要在C:\Tomcat5.0\webapps\axis\WEB-INF\lib下添加,也要在C:\Tomcat5.0\common\lib下添加。
          還算簡單,部署完成。

          四.?測試發布的WS
          可以測試了,看看我們是否發布成功。
          啟動Tomcat服務,如果服務已啟動,則先關閉它,并重新啟動。
          通過瀏覽器訪問http://localhost:8080/axis/services/moneyClient?wsdl,如果看到顯示出wsdl文件,則表明WS服務發布成功。
          進而,我們還可以通過具體編程來測試調用服務的某些方法。例如,下面這個類AccessTest就調用了我們發布的moneyClient服務中的getStatus方法來查看用戶名為admin密碼為change的帳戶的狀態是否可用。

          ?1 package ?MoneyManage;
          ?2
          ?3 import ?javax.xml.namespace.QName;
          ?4
          ?5 import ?org.apache.axis.client.Call;
          ?6 import ?org.apache.axis.client.Service;
          ?7
          ?8 public ? class ?AccessTest? {
          ?9 ???? public ? void ?Access()? {
          10 ???????? try ? {
          11 ????????????String?endPoint? = ? " http://localhost:8080/axis/services/moneyClient?wsdl " ;
          12 ????????????Service?service? = ? new ?Service();
          13 ????????????Call?call? = ?(Call)?service.createCall();
          14 ????????????call.setTargetEndpointAddress(endPoint);
          15 ????????????
          16 ????????????call.setOperationName( new ?QName( " moneyClient " ,? " getStatus " ));
          17 ????????????String?result? = ?(String)?call.invoke( new ?Object[]? {? " admin " ,
          18 ???????????????????? " change " ?}
          );
          19 ????????????System.out.println(result);
          20 ????????????
          21 ????????}
          ? catch ?(Exception?e)? {
          22 ????????????e.printStackTrace();
          23 ????????????System.out.println( " access?error! " );
          24 ????????}

          25 ????}

          26
          27 ???? public ? static ? void ?main(String?args[])? {
          28 ????????AccessTest?at? = ? new ?AccessTest();
          29 ????????at.Access();
          30 ????}

          31
          32 }


          我們也可以通過一些工具來對服務進行測試與調用,例如王詠剛編寫的wsCaller 1.0。

          我這樣利用Axis和Tomcat發布服務的方法是簡單的,因而,服務在可靠性、安全性和客戶容量等等方面都是脆弱的,如果要保證這些特性,還必須進一步深入對Axis和Tomcat進行更深層次的應用研究。似乎把應用服務器從Tomcat換為JBOSS會更好?

          posted on 2006-12-17 08:43 閱讀(3495) 評論(4)  編輯  收藏 所屬分類: Web Service

          評論

          # re: 如何使用Eclipse開發Axis應用并部署到Tomcat 2007-07-27 15:41 wxlbxp

          寫得很好啊!請問一下你在文中提到的四個類Action、Admin、MoneyManage和moneyClient代碼在哪里啊?我是新手想參考一下啊!謝謝!  回復  更多評論   

          # re: 如何使用Eclipse開發Axis應用并部署到Tomcat[未登錄] 2008-05-14 10:53 haha

          請問一下你在文中提到的四個類Action、Admin、MoneyManage和moneyClient代碼在哪里啊?我是新手想參考一下啊!謝謝!  回復  更多評論   

          # re: 如何使用Eclipse開發Axis應用并部署到Tomcat[未登錄] 2008-05-14 10:56 haha

          希望您能回復我,我的郵箱:jyli2007@yahoo.cn 也希望能和您交流,我的QQ:10052589 MSN:jyli2008@hotmail.com 謝謝您!  回復  更多評論   

          # re: 如何使用Eclipse開發Axis應用并部署到Tomcat 2008-05-14 12:52 fenghao

          @haha
          這4個類是我舉的例子,這4個類里面是不會包含任何與Axis相關的東西的,你用你自己的類的代碼相應地修改就可以了。  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 嘉峪关市| 汉阴县| 民丰县| 长春市| 宁南县| 香河县| 新昌县| 兴宁市| 高台县| 奇台县| 莎车县| 简阳市| 清新县| 寻乌县| 盘山县| 噶尔县| 长岛县| 西丰县| 蕉岭县| 建阳市| 泾源县| 永州市| 武强县| 漳浦县| 囊谦县| 忻州市| 武汉市| 蒙自县| 宣化县| 禹城市| 大竹县| 成安县| 清水河县| 白山市| 田阳县| 莱芜市| 咸宁市| 偃师市| 双辽市| 武胜县| 蒙山县|