axis1 和 axis2 的簡單使用
晚上順便學(xué)習(xí)了下axis1 和 axis2,發(fā)現(xiàn)兩者的API相差很大,不知道現(xiàn)在更流行的是哪個,就晚上簡單的入門后覺得,axis2還是比axis1開發(fā)起來容易上手的多,axis1就單單對服務(wù)器發(fā)布.wsdd文件就相當(dāng)麻煩。下面分別就axis1和axis2說下如何集成到自己的項目里:
??? 一、集成axis1
????? 1、從官網(wǎng)下載項目http://ws.apache.org/axis/,最新的是1.4
????? 2、解壓下載的axis壓縮包,假設(shè)AXIS_HOME為解壓后的根目錄,demo為自己項目的名稱
????? 3、將AXIS_HOME/lib目錄下的所有jar包都復(fù)制到自己項目的WEB-INF/lib下
????? 4、將AXIS_HOME/webapps/axis/WEB-INF/web.xml中與axis相關(guān)的配置都復(fù)制粘貼到自己項目的web.xml中去。
????? 5、編寫需要發(fā)布SOAP服務(wù)的java類,注意要發(fā)布的方法需是public的。以下以Foo.java為例:
????? 6、接下來就是發(fā)布soap服務(wù)了,在axis1中有兩種發(fā)布方式,即時發(fā)布和定制發(fā)布,下面分別介紹兩種發(fā)布方式:
????? 6.1 即時發(fā)布:這樣方式非常簡單,將Foo.java的后綴名改成jws,即java.jws,然后把該文件放在項目里可以在客戶端直接訪問到的目錄下(如WEB-INF就不可以),比如直接放在項目demo的根目錄下,通過http://主機(jī)名/demo/Foo.jws訪問,如果看到Click to see the WSDL就說明發(fā)布成功了,點(diǎn)擊進(jìn)去就能看WSDL的描述文件了。接下來就可以寫客戶端測試代碼了:
測試代碼就不說明了,相信大家能看明白。即時發(fā)布方式非常簡單、快速,但前提是必須有需要發(fā)布soap服務(wù)的JAVA類的源文件,如果只有.class或者jar包,那顯然就不適用了。
????? 6.2 定制發(fā)布:定制發(fā)布相對于即時發(fā)布要發(fā)雜一些,需要手寫wsdd文件來描述web service,但是在犧牲了簡單、快速之后,帶來的卻是靈活性和適用性的大大提高。
?????? 首先在WEB-INF/目錄下創(chuàng)建deploy.wsdd文件,文件內(nèi)容如下:
??? 以上的三個set命令,設(shè)置變量值A(chǔ)XISCLASSPATH為axis相關(guān)jar包路徑集,java命令就是通過axis提供的工具類AdminClient來發(fā)布deploy.wsdd所描述的工具類,執(zhí)行上面的命令之后(保持服務(wù)器是啟動狀態(tài)),會在同一目錄下生成server-config.wsdd文件,說明發(fā)布成功??梢杂?.1即時發(fā)布中的客戶端測試代碼來測試剛發(fā)布的soap服務(wù),修改下path的值即可。
??? 二、集成axis2
??? 之前的準(zhǔn)備工作和集成axis1相同,就是axis2所帶的jar包非常之多,挑選必須的jar就可以了。
??? 仍然以Foo類為例,在項目的WEB-INF/目錄下建立名為pojo的目錄,然后將Foo.class文件放入pojo目錄中,這樣就發(fā)布完成了,可以通過在瀏覽器輸入http://主機(jī)名/demo/services/listServices來查看剛才發(fā)布的服務(wù)。簡單吧,這就是axis2帶來的無需任何配置,同樣適合.class文件的發(fā)布方式。下面就是在客戶端進(jìn)行測試:
??? 一、集成axis1
????? 1、從官網(wǎng)下載項目http://ws.apache.org/axis/,最新的是1.4
????? 2、解壓下載的axis壓縮包,假設(shè)AXIS_HOME為解壓后的根目錄,demo為自己項目的名稱
????? 3、將AXIS_HOME/lib目錄下的所有jar包都復(fù)制到自己項目的WEB-INF/lib下
????? 4、將AXIS_HOME/webapps/axis/WEB-INF/web.xml中與axis相關(guān)的配置都復(fù)制粘貼到自己項目的web.xml中去。
????? 5、編寫需要發(fā)布SOAP服務(wù)的java類,注意要發(fā)布的方法需是public的。以下以Foo.java為例:
????? 6、接下來就是發(fā)布soap服務(wù)了,在axis1中有兩種發(fā)布方式,即時發(fā)布和定制發(fā)布,下面分別介紹兩種發(fā)布方式:
????? 6.1 即時發(fā)布:這樣方式非常簡單,將Foo.java的后綴名改成jws,即java.jws,然后把該文件放在項目里可以在客戶端直接訪問到的目錄下(如WEB-INF就不可以),比如直接放在項目demo的根目錄下,通過http://主機(jī)名/demo/Foo.jws訪問,如果看到Click to see the WSDL就說明發(fā)布成功了,點(diǎn)擊進(jìn)去就能看WSDL的描述文件了。接下來就可以寫客戶端測試代碼了:
測試代碼就不說明了,相信大家能看明白。即時發(fā)布方式非常簡單、快速,但前提是必須有需要發(fā)布soap服務(wù)的JAVA類的源文件,如果只有.class或者jar包,那顯然就不適用了。
????? 6.2 定制發(fā)布:定制發(fā)布相對于即時發(fā)布要發(fā)雜一些,需要手寫wsdd文件來描述web service,但是在犧牲了簡單、快速之后,帶來的卻是靈活性和適用性的大大提高。
?????? 首先在WEB-INF/目錄下創(chuàng)建deploy.wsdd文件,文件內(nèi)容如下:
- set AXIS_HOME=D:\axis
- set AXIS_LIB=%AXIS_HOME%\lib
- set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar; ? %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
? %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar - java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient ???? -lhttp://localhost:8080/demo/services/AdminService deploy.wsdd
??? 以上的三個set命令,設(shè)置變量值A(chǔ)XISCLASSPATH為axis相關(guān)jar包路徑集,java命令就是通過axis提供的工具類AdminClient來發(fā)布deploy.wsdd所描述的工具類,執(zhí)行上面的命令之后(保持服務(wù)器是啟動狀態(tài)),會在同一目錄下生成server-config.wsdd文件,說明發(fā)布成功??梢杂?.1即時發(fā)布中的客戶端測試代碼來測試剛發(fā)布的soap服務(wù),修改下path的值即可。
??? 二、集成axis2
??? 之前的準(zhǔn)備工作和集成axis1相同,就是axis2所帶的jar包非常之多,挑選必須的jar就可以了。
??? 仍然以Foo類為例,在項目的WEB-INF/目錄下建立名為pojo的目錄,然后將Foo.class文件放入pojo目錄中,這樣就發(fā)布完成了,可以通過在瀏覽器輸入http://主機(jī)名/demo/services/listServices來查看剛才發(fā)布的服務(wù)。簡單吧,這就是axis2帶來的無需任何配置,同樣適合.class文件的發(fā)布方式。下面就是在客戶端進(jìn)行測試:
posted on 2010-10-08 16:17 tobyxiong 閱讀(2216) 評論(0) 編輯 收藏 所屬分類: java