<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        Axis2創建webService實例

        來源:懂視網 責編:小采 時間:2020-11-09 15:58:20
        文檔

        Axis2創建webService實例

        Axis2創建webService實例:一、Axis2的下載和安裝 1.可從http://ws.apache.org/axis2/下載Axis2的最新版本: 可以下載如下兩個zip包: axis2-1.5.4-bin.zip axis2-1.5.4-war.zip 其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.
        推薦度:
        導讀Axis2創建webService實例:一、Axis2的下載和安裝 1.可從http://ws.apache.org/axis2/下載Axis2的最新版本: 可以下載如下兩個zip包: axis2-1.5.4-bin.zip axis2-1.5.4-war.zip 其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.

        一、Axis2的下載和安裝 1.可從http://ws.apache.org/axis2/下載Axis2的最新版本: 可以下載如下兩個zip包: axis2-1.5.4-bin.zip axis2-1.5.4-war.zip 其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.5.4-war.zip文件用于將WebService

        一、Axis2的下載和安裝


        1.可從http://ws.apache.org/axis2/ 下載Axis2的最新版本:
        可以下載如下兩個zip包:
        axis2-1.5.4-bin.zip
        axis2-1.5.4-war.zip
        其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件,
        axis2-1.5.4-war.zip文件用于將WebService發布到Web容器中。


        2.將axis2-1.5.4-war.zip文件解壓到相應的目錄,將目錄中的axis2.war文件放到\webapps目錄中,
        并啟動Tomcat,在瀏覽器地址欄中輸入如下的URL:
        http://localhost:8080/axis2/,如看到axis2的主頁面則安裝成功。

        二、編寫和發布WebService


        (1)用POJO形式發布(無需配置)


        在Axis2中不需要進行任何的配置,就可以直接將一個簡單的POJO發布成WebService。
        其中POJO中所有的public方法將被發布成WebService方法。
        示例代碼如下:

        Java代碼

        1. public class HelloService {
        2. public String sayHello(){
        3. return "hello";
        4. }
        5. public String sayHelloToPerson(String name){
        6. if(name==null){
        7. name = "nobody";
        8. }
        9. return "hello,"+name;
        10. }
        11. }

        編譯HelloService類后,將HelloService.class文件放到\webapps\axis2\WEB-INF\pojo目錄中
        (如果沒有pojo目錄,則建立該目錄)。現在我們已經成功將HelloService類發布成了WebService。
        在瀏覽器地址欄中輸入如下的URL:
        http://localhost:8080/axis2/services/listServices


        在瀏覽器地址欄中輸入如下的兩個URL來分別測試sayHelloToPerson和sayHello方法:
        1.http://localhost:8080/axis2/services/HelloService/sayHello
        2.http://localhost:8080/axis2/services/HelloService/sayHelloToPerson?name=bill


        頁面顯示如下結果:

        Xml代碼

        1. hello,bill

        在編寫、發布和測試WebService時應注意如下幾點:
        1. POJO類不能使用package關鍵字聲明包。


        2. Axis2在默認情況下可以熱發布WebService,也就是說,將WebService的.class文件復制到pojo目錄中時,
        Tomcat不需要重新啟動就可以自動發布WebService。
        如果想取消Axis2的熱發布功能,可以打開\webapps\axis2\WEB-INF\conf\axis2.xml,
        找到如下的配置代碼:

        Xml代碼

        1. true

        將true改為false即可。要注意的是,Axis2在默認情況下雖然是熱發布,但并不是熱更新.
        也就是說,一旦成功發布了WebService,再想更新該WebService,就必須重啟Tomcat。
        這對于開發人員調試WebService非常不方便,因此,在開發WebService時,可以將Axis2設為熱更新。
        在axis2.xml文件中找到

        Xml代碼

        1. false

        將false改為true即可。


        3. 在瀏覽器中測試WebService時,如果WebService方法有參數,需要使用URL的請求參數來指定該WebService方法
        參數的值,請求參數名與方法參數名要一致,例如,要測試sayHelloToPerson方法,請求參數名應為name,如上面的URL所示。


        4. 發布WebService的pojo目錄只是默認的,如果讀者想在其他的目錄發布WebService,
        可以打開axis2.xml文件,并在元素中添加如下的子元素:

        Xml代碼

        上面的配置允許在\webapps\axis2\WEB-INF\my目錄中發布WebService。
        例如,將本例中的HelloService.class復制到my目錄中也可以成功發布
        (但要刪除pojo目錄中的SimpleService.class,否則WebService會重名)。

        (2)使用services.xml配置文件發布


        用Axis2實現Web Service,雖然可以將POJO類放在axis2\WEB-INF\pojo目錄中直接發布成Web Service,
        這樣做不需要進行任何配置,但這些POJO類不能在任何包中。這似乎有些不方便.
        為此,Axis2也允許將帶包的POJO類發布成Web Service。先實現一個POJO類,代碼如下:

        Java代碼

        1. package com.sinosoft.webservice;
        2. public class HelloServiceNew {
        3. public String sayHelloNew(){
        4. return "hello";
        5. }
        6. public String sayHelloToPersonNew(String name){
        7. if(name==null){
        8. name = "nobody";
        9. }
        10. return "hello,"+name;
        11. }
        12. public void updateData(String data){
        13. System.out.println(data+" 已更新。");
        14. }
        15. }

        要想將HelloServiceNew類發布成Web Service,需要一個services.xml文件,
        這個文件需要放在META-INF目錄中,該文件的內容如下:

        Xml代碼

        1. Web Service例子
        2. com.sinosoft.webservice.HelloServiceNew
        3. class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
        4. class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />

        其中元素用于發布Web Service,一個元素只能發布一個WebService類,
        name屬性表示WebService名,如下面的URL可以獲得這個WebService的WSDL內容:
        http://localhost:8080/axis2/services/HelloServiceNew?wsdl
        其中name屬性名就是上面URL中"?"和"/"之間的部分。
        元素表示當前Web Service的描述,元素用于設置WebService的參數,
        在這里用于設置WebService對應的類名。
        在這里最值得注意的是元素,該元素用于設置處理WebService方法的處理器。
        例如,sayHelloNew方法有一個返回值,因此,需要使用可處理輸入輸出的RPCMessageReceiver類,
        而updateData方法沒有返回值,因此,需要使用只能處理輸入的RPCInOnlyMessageReceiver類。

        使用這種方式發布WebService,必須打包成.aar文件,.aar文件實際上就是改變了擴展名的.jar文件。
        現在建立了兩個文件:HelloServiceNew.java和services.xml。
        將HelloServiceNew.java編譯,生成HelloServiceNew.class。
        services.xml和HelloServiceNew.class文件的位置如下:
        D:\ws\ com\sinosoft\webservice\HelloServiceNew.class
        D:\ws\META-INF\services.xml
        在windows控制臺中進入ws目錄,并輸入如下的命令生成.aar文件.

        jar cvf ws.aar .

        實際上,.jar文件也可以發布webservice,但axis2官方文檔中建議使用.aar文件發布webservice.
        最后將ws.aar文件復制到\webapps\axis2\WEB-INF\services目錄中,
        啟動Tomcat后,就可以調用這個WebService了。

        另外services.xml文件中也可以直接指定WebService類的方法,如可以用下面的配置代碼來發布WebService

        Xml代碼

        1. Web Service例子
        2. com.sinosoft.webservice.HelloServiceNew
        3. class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"/>

        如果想發布多個WebService,可以使用元素

        Xml代碼

        1. ...
        2. ...

        中間省略的代碼同上面services.xml文件的配置。

        三、 用Java實現調用WebService的客戶端程序


        WebService是為程序服務的,只在瀏覽器中訪問WebService是沒有意義的。調用WebService的客戶端代碼如下:

        Java代碼

        1. import javax.xml.namespace.QName;
        2. import org.apache.axis2.AxisFault;
        3. import org.apache.axis2.addressing.EndpointReference;
        4. import org.apache.axis2.client.Options;
        5. import org.apache.axis2.rpc.client.RPCServiceClient;
        6. public class TestMain {
        7. public static void main(String args[]) throws AxisFault{
        8. // 使用RPC方式調用WebService
        9. RPCServiceClient serviceClient = new RPCServiceClient();
        10. Options options = serviceClient.getOptions();
        11. // 指定調用WebService的URL
        12. EndpointReference targetEPR = new EndpointReference(
        13. "http://localhost:8080/axis2/services/HelloService");
        14. options.setTo(targetEPR);
        15. // 指定sayHelloToPerson方法的參數值
        16. Object[] opAddEntryArgs = new Object[] {"美女"};
        17. // 指定sayHelloToPerson方法返回值的數據類型的Class對象
        18. Class[] classes = new Class[] {String.class};
        19. // 指定要調用的sayHelloToPerson方法及WSDL文件的命名空間
        20. QName opAddEntry = new QName("http://ws.apache.org/axis2", "sayHelloToPerson");
        21. // 調用sayHelloToPerson方法并輸出該方法的返回值
        22. System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]);
        23. }
        24. }

        輸出結果為:
        hello,美女


        在編寫客戶端代碼時應注意如下幾點:

        1. 客戶端代碼需要引用很多Axis2的jar包,如果讀者不太清楚要引用哪個jar包,
        可以在Eclipse的工程中引用Axis2發行包的lib目錄中的所有jar包。


        2. 在本例中使用了RPCServiceClient類的invokeBlocking方法調用了WebService中的方法。
        invokeBlocking方法有三個參數,其中第一個參數的類型是QName對象,表示要調用的方法名;
        第二個參數表示要調用的WebService方法的參數值,參數類型為Object[];
        第三個參數表示WebService方法的返回值類型的Class對象,參數類型為Class[]。
        當方法沒有參數時,invokeBlocking方法的第二個參數值不能是null,而要使用new Object[]{}。


        3. 如果被調用的WebService方法沒有返回值,應使用RPCServiceClient類的invokeRobust方法,
        該方法只有兩個參數,它們的含義與invokeBlocking方法的前兩個參數的含義相同。


        4. 在創建QName對象時,QName類的構造方法的第一個參數表示WSDL文件的命名空間名,
        也就是元素的targetNamespace屬性值。

        四、用wsdl2java簡化客戶端的編寫


        Axis2提供了一個wsdl2java.bat命令可以根據WSDL文件自動產生調用WebService的代碼。
        wsdl2java.bat命令可以在/bin目錄中找到。
        在使用wsdl2java.bat命令之前需要設置AXIS2_HOME環境變量,該變量值是。
        在Windows控制臺輸出如下的命令行來生成調用WebService的代碼:
        %AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/axis2/services/HelloService?wsdl
        -p client -s -o stub
        其中-url參數指定了wsdl文件的路徑,可以是本地路徑,也可以是網絡路徑。
        -p參數指定了生成的Java類的包名,-o參數指定了生成的一系列文件保存的根目錄。
        在執行完上面的命令后,就會發現在當前目錄下多了個stub目錄,
        在stub/src/client目錄可以找到一個HelloServiceStub.java文件,
        該文件復雜調用WebService,可以在程序中直接使用這個類,代碼如下:

        Java代碼

        1. package client;
        2. public class StupTest {
        3. public static void main(String[] args) throws Exception
        4. {
        5. HelloServiceStub stub = new HelloServiceStub();
        6. HelloServiceStub.SayHelloToPerson gg = new HelloServiceStub.SayHelloToPerson();
        7. gg.setName("美女");
        8. System.out.println( stub.sayHello().get_return());
        9. System.out.println(stub.sayHelloToPerson(gg).get_return());
        10. }
        11. }

        輸出結果如下:
        hello
        hello,美女

        上面的代碼大大簡化了調用WebService的步驟,并使代碼更加簡潔。
        但要注意的是,wsdl2java.bat命令生成的Stub類將WebService方法的參數都封裝在了相應的類中,
        類名為方法名,例如,sayHelloToPerson方法的參數都封裝在了SayHelloToPerson類中,
        要想調用sayHelloToPerson方法,必須先創建SayHelloToPerson類的對象實例。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Axis2創建webService實例

        Axis2創建webService實例:一、Axis2的下載和安裝 1.可從http://ws.apache.org/axis2/下載Axis2的最新版本: 可以下載如下兩個zip包: axis2-1.5.4-bin.zip axis2-1.5.4-war.zip 其中 axis2-1.5.4-bin.zip文件中包含了Axis2中所有的jar文件, axis2-1.
        推薦度:
        標簽: 創建 例子
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 男女猛烈xx00免费视频试看| 亚洲国产精品久久久久网站| 在线jlzzjlzz免费播放| 日韩一级免费视频| 国产V亚洲V天堂无码久久久| 亚洲高清有码中文字| 未满十八私人高清免费影院| 免费人成毛片动漫在线播放| 成人免费男女视频网站慢动作| 免费v片视频在线观看视频| 久久久久久a亚洲欧洲aⅴ| 国内精品免费久久影院| 毛片基地免费观看| 亚洲国产一二三精品无码| 亚洲国产成人AV网站| 日本最新免费网站| 国产亚洲精品久久久久秋霞| 亚洲一级特黄特黄的大片| 青青操免费在线观看| 久久久久亚洲av无码尤物| CAOPORM国产精品视频免费| 97在线观免费视频观看| 亚洲成色999久久网站| av无码免费一区二区三区| 亚洲国产精品成人精品无码区在线| 182tv免费视频在线观看| 在线播放亚洲第一字幕| 久久免费精品一区二区| 亚洲区视频在线观看| 亚洲免费视频在线观看| 亚洲人成无码网WWW| 在线视频亚洲一区| 亚洲乱码无码永久不卡在线 | 国产精品亚洲AV三区| 亚洲国产精品13p| 亚洲国产综合AV在线观看| 在线视频观看免费视频18| 美女羞羞免费视频网站| 亚洲?V无码成人精品区日韩| 久久久久久亚洲精品无码| 无人在线观看免费高清视频|