博學而篤志,好問而近思

          【原創】關于Web Services技術中的Axis2的使用及Web服務的發布!

          ????????????????????關于 Web Serviece?以及?Axis2 技術(修定1.2v)

          ?? 本人的公司在最近的一個金融項目上用到了AXIS2 1.0版,在Tomcat上部署AXIS2,用來發布Web Services
          我下載了AXIS2 1.0 的?War發布包 成功的安裝了AXIS2并且發布了一些Web Services。

          我了解到現在很多同仁都曾經用過或將要用到AXIS2技術開發Web Services,為了給更多的想要了解AXIS2技術的人提供方便,鑒于個人的能力和知識有限,我制造此貼并熱情的邀請使用過AXIS的
          同仁們能來此發表你們的心得和看法。


          以下是我發布一個簡單的Web Services的過程跟大家分享:
          一 .? 從www.Apache.org下載Axis2的War發布包并解壓縮到D:/Axis2。

          二 .? 將整個Axis2目錄都復制到 D:\Tomcat 5.5\webapps 目錄下。(我的Tomcat裝在D盤D:\Tomcat 5.5目錄下,以下目錄問題我將不多解釋,大家應該能看得明白)

          三 .? 在D:\Tomcat 5.5\conf\Catalina\localhost目錄下創建配置文件axis2.xml, 文件內容如下:
          <Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />

          四 .? 此時已經把Axis2安裝到Tomcat上了,下面啟動Tomcat在IE中輸入
          "http://localhost:8080/Axis2"來驗證一下!(出來的畫面有Axis標題)

          五 .下面開使來發布一個簡單的Web Services(關鍵是需要打包成.aar格式
          ??????(1)創建Web服務的工作類MyService.java,如下:

          public class MyService{
          ??? public void ping(OMElement element){
          ???? ......? //這是一個用來獲取對方地址的Web服務方法
          ??? }
          ??? public OMElement echo(OMElement element){
          ???? ......? //這是一個發送請求并返回結果的Web服務方法
          ??? }
          }
          ????? (2)寫配置文件services.xml
          <service >
          ??? <description>
          ??????? This is a sample Web Service with two operations, echo and ping.
          ??? </description>
          ??? <parameter name="ServiceClass" locked="false">AxisDemo.MyService</parameter>
          ??? <operation name="echo">
          ??????? <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
          ??????? <actionMapping>urn:echo</actionMapping>
          ??? </operation>
          ???? <operation name="ping">
          ??????? <messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
          ??????? <actionMapping>urn:ping</actionMapping>
          ??? </operation>
          </service>
          ????? (3)做到這里就可以打包發布了,有人會問,把我這兩個文件放到一個自己建的文件夾然后打包嗎?我想那樣做可能也可以,但是我推薦還是用這樣一個包結構比較好(由于圖示考到文本框中后顯示空白我只好口頭描述了):
          ????????? a.先在D:盤中建一個文件夾AxisDemo
          ????????? b.在AxisDemo下面建一個文件夾META-INF,并把MyService.java放在這里
          ????????? c.在META-INF下放配置文件services.xml

          六 .? 打包:
          ????? 1.在你的Windows開始菜單中點擊"運行",輸入 cmd? 命令打開命令操作器,在命令操作器中輸入 cd\ 命令退到C:>? (根目錄),再輸入 D: 轉到D:> (我們的AxisDemo就在D:盤中,我們要將文件夾中的東東打包)
          ????? 2.然后輸入打包命令:
          jar ?cvf? MyAxisDemo.aar??AxisDemo/.千萬不要丟了最后那個點啊),此時你會發現D:盤下生成了一個MyAxisDemo.aar文件 (打包完成)

          七 . 發布:
          ????? (1)發布時我們打開IE輸入 http://localhost:8080/axis2? 然后點擊 Administration 進入AXIS2管理界面,
          輸入用戶名:Admin? 密碼:Axis2? 登陸進去,再點擊第一個 鏈接 Upload Service ,然后點瀏覽找到你想要發布的Web Service文件(即.aar文件),點Upload發布它!
          ?
          ?????? (2)重啟你的Tomcat服務然后在IE中輸入"http://localhost:8080/Axis2",點擊那個Services鏈接吧,你就可以看到你剛發布的名為MyService的Web服務了!



          ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ----冰川
          ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 2006/6/26

          ?

          posted on 2006-06-26 17:52 冰川 閱讀(11345) 評論(71)  編輯  收藏

          評論

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-26 17:59 冰川

          我真心的希望有更多的朋友在這里得到收獲!  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-26 22:57 lizongbo


          axis2好像還不支持httpGet :(

            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 08:29 冰川

          @lizongbo:
          是嗎,謝謝你的回貼。
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 10:44 shrimp

          可是點擊MyService看不到WSDL文件的形式啊?
          還有,它的異步傳輸模式是怎么實現的,客戶端是監聽嗎  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 12:32 冰川

          @shrimp:
          1.我的可以看到WSDL文件啊,你那里報了什么錯嗎?
          2.異步傳輸模式我還沒用到,下次去看看
          3.客戶端應該是監聽的  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 16:04 冰川

          @shrimp:
          關于AXIS2中客戶端API同步/異步問題
          同步/異步(或阻塞/非阻塞)行為是基于在web service請求的線程,同步服務將會阻塞,等待相關消息到達。另一方面,異步請求僅僅返回,等待相關消息被后臺另一個不同線程執行。
          同步請求很簡單:請求在相關消息到達前等待,并且可以像本地過程調用一樣被編碼。但是異步消息的相互關系就比較復雜,客戶端必須處理這種復雜性。盡管如此,通過一些額外工作來處理這種復雜情況仍是必要的。

          應答式消息可以表現為以下四種方式:

          1.雙向In-Out 同步
          2.雙向In-Out 異步
          3.單向In-Out 同步
          4.單向In-Out 異步

          下面的代碼實例說明這些案例怎樣被Axis2尋址,注意客戶端API的四種屬性怎樣被使用。

          1.In-Out同步,HTTP作為雙向傳輸方式

          OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false);OMElement result = (OMElement) call.invokeBlocking( operationName.getLocalPart(), payload);

          這里,SOAP消息經由同一個HTTP連接傳播,地址屬性沒有指定,所以它們在服務器方缺省為匿名,客戶端API將被鎖定直到回復消息到達。

          2.In-Out異步,HTTP使用HTTP作為雙向傳送

          //this is the payload goes on the body of SOAP message OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, false);Callback callback = new Callback() { public void onComplete(AsyncResult result) { //what user can do to result } public void reportError(Exception e) { //on error }};call.invokeNonBlocking(operationName.getLocalPart(), payload, callback);

          和前面相同,SOAP消息經由同一個HTTP連接傳輸并且不需要尋址,一旦回復消息到達客戶端API不會阻塞并且回調將被執行。

          3.In-Out, 異步HTTP 作為單向傳輸

          OMElement payload = .... Call call = new Call();call.setTo( new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, true);Callback callback = new Callback() { public void onComplete(AsyncResult result) { .... } public void reportError(Exception e) { ... }};call.engageModule(new Qname("addressing"));call.invokeNonBlocking(operationName.getLocalPart(), method, callback);

          在這個案例中,SOAP消息通過兩個HTTP連接傳輸,尋址是強制的,ReplyTo標題出現指示服務器端經由單獨的通道發送回應。客戶端沒有阻塞,當回應消息到達時,喚起回調。

          4.In-Out, 同步 HTTP 作為單向傳送

          OMElement payload = .... Call call = new Call();call.setTo(new EndpointReference(AddressingConstants.WSA_TO, "HTTP://...));call.setTransportInfo(Constants.TRANSPORT_HTTP, Constants.TRANSPORT_HTTP, true);OMElement result = (OMElement) call.invokeBlocking( operationName.getLocalPart(), payload);

          在這種場合下使用"In-Out,異步HTTP作為單向傳送"類型,在結果到達第二種連接時喚起阻塞,執行并返回結果。

          總結

          總而言之,web wervice消息行為建立在三種因素上:消息交互模式,客戶端同步異步模式和傳送行為。Asis2建立核心在不一定要任何MEP類型,不過為MEPs的廣泛支持:單向和應答提供了客戶端API支持,這篇文章解釋Axis2消息支持概念和客戶端API的使用。

            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 16:10 冰川

          以上回復中的代碼由于復制過來后忘了排版,造成了閱讀不方便,我很抱歉。
          請大家把代碼自行復制,然后排一下版再看吧  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 16:22 冰川

          大家也可以像我那樣以回貼的形式,發表自己關于AXIS2的使用心得或經驗以供其他人共享!

          我想讓急需了解AXIS2技術的人能夠在一個地方得到盡可能多的有關AXIS2的知識和代碼實例,這樣可以節約他們的時間,給他們帶來便利。

          希望用過AXIS2 和 對AXIS2有一定研究的同仁們多多來這里發表經典回貼 !

            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 17:08 shrimp

          我試驗的時候 ,看的是axis2里自帶的userguide,客戶端調用的代碼感覺和你上面給的不一樣,沒有Call的實例創建,倒是有Options 。我用的是Axis2 的1.0版本 ,你用的是這個版本嗎?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 17:10 shrimp

          文檔中描述在客戶端API可以支持WSDL1.1和WSDL2.0,可是在某些地方看到的說目前沒有WSDL2.0的reader,目前到底是一個什么階段啊?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-27 19:32 shrimp

          @冰川
          部署后,點擊MyService,顯示的信息如下,并沒有wsdl文件的形式,而它的版本version服務倒可以顯示wsdl.

          <error>
          <description>Unable to generate WSDL for this service</description>
          <reason>Either user has not dropped the wsdl into META-INF or operations use message receivers other than RPC.</reason>
          </error> 回復
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-28 09:06 冰川

          @shrimp:

          1. 我用的是AXIS2 1.0版
          2. www.w3.org(萬維網組織全球辦事處)上有WSDL2.0的Reader具體網址:
          http://www.w3.org/TR/wsdl20/
          3. 你的錯誤信息說WSDL文件沒有進入到META-INF文件夾,還說什么你用了其他的RPC接受信息,我也搞不懂,你試試用AXIS2另一種發布方法吧!
          步驟如下:
          (1)前面的操作一直到打包都按照首帖上面的做。
          (2)發布時我們不把.aar文件考過去了,而是打開IE輸入http://localhost:8080/axis2進入Axis2界面(Tomcat要開啟),然后點擊
          Administration,輸入用戶名:Admin 密碼:Axis2登陸進去,再點擊第一個
          鏈接Upload Service,然后點瀏覽找到你想要發布的Web Service文件(即.aar文件),點Upload發布它!
          (3)在IE輸入http://localhost:8080/axis2后點Service去確認一下吧
          上帝會保佑你的,阿門~~~

            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-28 15:38 小青蛙

          上面的方法也解決不了問題,這是AXIS V1的一個BUG去下一個Nightly Builds的版本可解決問題。

          BTW第三步在TOMCAT5中是非必需的,可自動部署  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-28 17:00 冰川

          @小青蛙:
          樓主在這里謝謝你的支持!  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-28 19:34 shrimp

          @冰川
          @小青蛙
          下載了nightlybuild的war文件,復制到webapps目錄下,查看http://localhost:8080/axis2 時出現以下的錯誤提示,連service 列表都顯示不了。
          org.apache.jasper.JasperException
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-28 19:37 shrimp

          @冰川
          客戶端代碼,我是在axis2-std-1.0-bin\samples\userguide\src\userguide\clients目錄下的客戶端調用的代碼感覺和你上面給的不一樣,沒有Call的實例創建,倒是有Options,這個是不是0.95版本上的,它們的差別是什么?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-29 11:22 冰川

          @shrimp:

          1。你就按我的首貼做就好了,我修改并測試過了的。
          2。具體Call,和Options的意思和用法可以去查看你下載的發布包中的類說明文檔,就在javadocs文件夾中。
          3。下面是調用Web Service的客戶端代碼示例,大家有什么使用經驗或者好的代碼示例也可以寫回帖共享啊!

          用非阻塞、雙向方式調用Web Service方法:"Echo" 的客戶端程序
          (本人以及Userguide都推薦使用,也是比較常用的客戶端寫法)
          try{
          OMElement payload = ClientUtil.getEchoOMElement();

          Options options = new Options();
          options.setTo(targetEPR); // 左邊的參數:targetEPR == "http:/..."
          options.setTransportInProtocol(Constants.TRANSPORT_HTTP);
          options.setUseSeparateListener(true);
          options.setAction("urn:echo"); //這是我們在 service.xml 里的 Action 映射

          //Callback to handle the response
          Callback callback = new Callback(){
          public void onComplete(AsyncResult result){
          System.out.println(result.getResponseEnvelope());
          }

          public void onError(Exception e){
          e.printStackTrace();
          }
          };

          //非阻塞方式
          sender = new ServiceClient();
          sender.engageModule(new QName(Constants.MODULE_ADDRESSING));
          sender.setOptions(options);
          sender.sendReceiveNonBlocking(payload,callback);

          //等待,直到接受到響應消息
          while(!callback.isComplete()){
          Thread.sleep(1000);
          }

          //在這里需要關閉客戶端

          }catch(AxisFault axisFault){
          axisFault.printStackTrace();
          }catch(Exception ex){
          ex.printStackTrace();
          }
          finally{
          try{
          sender.finalizeInvoke();
          }catch(AxisFault axisFault){
          //此處代碼省略
          }
          }

          希望大家多多貢獻關于Axis2的知識(:  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-30 13:55 shrimp

          @冰川
          仔細看了你上面的部署之前的操作,關于第5,第6 的說明感覺有些不對,文件的具體位置并沒有說明白,明明是jar cfv MyService.aar ,怎么會生成AxisDemo.aar文件呢,example1 的目錄是什么層次,不如說直接把axis2給的userguide下example1中的實例直接拷過去 ,我就是直接復制過去的。不知道會有什么差別?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-30 16:47 冰川

          @shrimp:
          哈哈,是錯了,謝謝提出來,我實現后語句有的不記得的只好考了userguide里的語句,結果出了這種BUG,哈哈哈
          2.直接考過去也可以的,看你的Tomcat是什么版本,可以自動發布的就行,
          我沒修改前發布那段寫的就是用考的后來改了,這次又要改咯!

            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-30 17:08 冰川

          @shrimp:
          你還可以看看你上樓的那篇回貼,是客戶端調用Web Services的代碼例子。
          (即 2006-06-29 11:22 | 冰川 那篇帖子)

          另外:大家還有更好的客戶端調用Web Services代碼例子也請貼到這邊來啊!
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-30 17:21 嘎崩豆

          axis2的1.0版本自己部署的服務不能生成wsdl文件,而version倒是可以生成wsdl文件,后來將部署服務的wsdl文件復制到META-INF目錄下就可以了,因為是使用已有的例子,但不知道axis2下的Java2WSDL工具如何使用,還是沒有此工具?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-06-30 17:51 冰川

          @嘎崩豆:
          這個...Java2WSDL工具有是有,不過一般不直接用,而是在Eclipse中可以用到這個功能,我沒具體用過,希望遇到高人給你解答

          你先下個文檔看看吧:
          http://ws.apache.org/axis2/download/1_0/download.cgi

          下到本地接壓縮后再打開這個本地路徑看看(下面是目錄結構)
          xdocs\tools\1_0\CodegenToolReference.html
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-04 11:20 嘎崩豆

          axis1.x 版本下是否支持異步傳輸模式,別人說在1.x下是有的。
          或許自己編程在客戶端調用來實現
          ?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-04 15:16 happy

          報錯如下:(
          Invalid service MyService.aar due to services.xml not found for service   回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-12 18:46 冰川

          @happy:
          我這段時間在忙項目開發,沒有時間來回答你們的問題
          抱歉!這個錯誤是MyService.aar里的配置文件寫錯了,請檢查!
          你再按我首貼的步驟試試,我測試過整個過程的,最后生成MyAxisDemo.arr
          文件再發布。

          再次希望,有高人路過時幫我解決一下大家的問題,不然我寫這篇討論貼
          就變成我唱獨角戲了,此貼也就失去了意義
          再次誠心邀請有使用過AXIS2的同仁一起來參加我們的討論!
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-12 18:50 冰川

          難道是這里缺乏高手嗎?
          我想不會的,這里可是blogjava-專注于java技術的社區啊!  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-18 21:03 Shooper.Java

          你上面第三步不對

          三 . 在D:\Tomcat 5.5\conf\Catalina\localhost目錄下創建配置文件axis2.xml, 文件內容如下:
          <Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />

          應該是

          <Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2" />  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-18 21:06 Shooper.Java

          你跑起來是因為你把應用拷到了Tomcat 5.5\webapps 下,這個目錄下,tomcat啟動時會自動發布應用  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-19 12:50 冰川

          @Shooper.Java:
          謝謝,我想是這樣的,不過如果不在Axis2下發布就不需要拷到Webapps下了。  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-24 10:07 Owen.ou

          部署后,點擊MyService,顯示的信息如下,并沒有wsdl文件的形式,而它的版本version服務倒可以顯示wsdl.
          <error>
          <description>Unable to generate WSDL for this service</description>
          <reason>Either user has not dropped the wsdl into META-INF or operations use message receivers other than RPC.</reason>
          </error>

          之前看到過一篇文章,作者介紹說遇到這種情況沒什么關系,部署后的Web Service可以正常被調用,我做過試驗,確實可以。

          本人最近也在學習Axis2和SOAP,歡迎各位朋友交流經驗!
          我的MSN:ouxingning@hotmail.com


            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-27 18:14 冰川

          @Owen.ou
          是嗎?我沒有試過,這樣也可以啊。
            回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-28 17:31 seanzhuxukai

          不用顯示WSDL是可以的

          請問用.net能調用AXIS2寫的WebServices嗎?  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-31 08:33 冰川

          @seanzhuxukai
          我不會.NET的,不好意思  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-07-31 10:27 XFly

          @嘎崩豆
          eclipse中生成wsdl很容易的,通過axis2的插件很方便就可以做到,只是我用的時候好像有個bug,就是如果生成包含自定義類型的wsdl不是正確的,其中包括重復的service標簽,這個刪掉就行了.  回復  更多評論   

          # re: 關于Web Services技術中的Axis2的使用及Web服務的發布!(此為討論貼,請高人加入討論) 2006-08-03 09:15 冰川

          @XFly
          謝謝你的支持
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-08-26 09:55 binbin

          @嘎崩豆
          部署服務的wsdl文件 在什么地方?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-08-26 10:40 binbin

          想和大家交個朋友,我的qq:232203251
          先跟大家學習axis2。  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-08-27 09:53 彬彬

          @冰川
          我覺得這個文章沒什么用,全是最基本的東西。對與開發webservice起不到什么作用。
          你怎么不寫個,axis2怎么傳遞對象,怎么傳遞list set之類的對象。
          寫個怎么簡單的文章沒有什么實質的作用。。  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-08-27 10:50 冰川

          @彬彬:
          謝謝你的建議,最近一直在趕項目
          時間比較緊張,所以才只寫了最基本的發布
          等以后有時間了我在寫一些深一點的內容
          很抱歉。
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-08-27 15:02 彬彬

          @冰川
          上面有我的qq號碼,你加我吧,我請教幾個問題。
          我的qq:232203251  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布(此為討論貼,請高人加入討論) 2006-09-01 10:31 冰川

          @彬彬:
          我很少上QQ的,另外我剛剛寫了一篇關于Axis2的客戶端和服務器端具體實現的帖子,你有時間的話可以看看,好長的,呵呵。

            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-13 14:29 啊啊

          三 . 在D:\Tomcat 5.5\conf\Catalina\localhost目錄下創建配置文件axis2.xml, 文件內容如下:
          <Context path="/axis2" reloadable="true" docBase="D:\Tomcat 5.5\webapps\Axis2\axis2-web" />
          這個東西根本不用加.  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-16 12:46 zhms999

          按照的你方法,是無法看見wsdl文件的,
          http://localhost:8080/axis2/services/MyService?wsdl

          會提示如下信息
          - <error>
          <description>Unable to generate WSDL for this service</description>
          <reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the META-INF directory, then please make sure that the name of the service in services.xml (/serviceGroup/service/@name) is the same as in the custom wsdl's service name (/wsdl:definitions/wsdl:service/@name).</reason>
          </error>  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-19 20:37 冰川

          @啊啊
          謝謝你的意見,如果你是用的eclipse自動配置的項目就可以不用這句的.
          @zhms999
          你是否啟動了遠程方法調用(RPC)服務啊?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-21 22:43 zhms999

          肯定啟動了的啊,難道你的可以嗎?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-22 13:39 冰川

          @zhms999
          哦,你的.wsdl文件是怎么寫的?你把這個文件放在哪個目錄下的?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-22 16:51 soa

          我按照你的service.xml配置我的服務,老是配置不成功,這是怎么回事,都是報錯,郁悶慘了  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-22 16:55 soa

          org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar'; nested exception is: org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar' at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:124) at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:620) at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:195) at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:207) at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:155) at org.apache.axis2.deployment.DeploymentEngine.loadServices(DeploymentEngine.java:91) at org.apache.axis2.deployment.WarBasedAxisConfigurator.loadServices(WarBasedAxisConfigurator.java:142) at org.apache.axis2.context.ConfigurationContextFactory.createConfigurationContext(ConfigurationContextFactory.java:42) at org.apache.axis2.transport.http.AxisServlet.initConfigContext(AxisServlet.java:213) at org.apache.axis2.transport.http.AxisServlet.init(AxisServlet.java:182) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3917) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4201) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) Caused by: org.apache.axis2.deployment.DeploymentException: services.xml not found for service 'C:\Tomcat 5.5\webapps\axis2\WEB-INF\services\Hello.jar' at org.apache.axis2.deployment.repository.util.ArchiveReader.processServiceGroup(ArchiveReader.java:121) ... 35 more   回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-22 16:57 soa

          我就是簡單的一個hello程序,返回問候語。
          配置文件為:
          <service name="Hello">
          <parameter name="ServiceClass" locked="xsd:false">
          com.test.hello.Hello
          </parameter>
          <operation name="SayHello">
          <messageReceiver
          class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
          </operation>
          </service>

          我快要瘋掉了:(((((  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-22 17:06 zhms999

          wsdl?
          org.apache.axis2.rpc.receivers.RPCMessageReceiver

          用了這個axis2服務器是可以自己生成的wsdl的啊.
          為什么這個例子不能自己生成wsdl呢??

          我是初學者,想知道你例子中哪兒介紹了生成wsdl呢?
          我在axis2網站上看了,和你的一樣.是否需要另外生成?
          為什么org.apache.axis2.rpc.receivers.RPCMessageReceiver這種方式axis2就可以自己生成wsdl  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-22 17:09 zhms999

          (3)做到這里就可以打包發布了,有人會問,把我這兩個文件放到一個自己建的文件夾然后打包嗎?我想那樣做可能也可以,但是我推薦還是用這樣一個包結構比較好(由于圖示考到文本框中后顯示空白我只好口頭描述了):
          a.先在D:盤中建一個文件夾AxisDemo
          b.在AxisDemo下面建一個文件夾META-INF,并把MyService.java放在這里
          c.在META-INF下放配置文件services.xml

          請問b項里面應該放MyService.java文件,還是放MyService.class文件.
          ????????????????
          有沒有你的demo提供下載,  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-22 22:27 soa

          我現在只要是打包發布就要拋異常。。。

          我把網上說的配置文件全部都試過了,都不行!!!!

          不知道誰能指點一下  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-23 09:32 soa

          搞定了 呵呵  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-03-23 11:11 冰川

          @zhms999
          .wsdl文件可以由axis里面的org.apache.axis.wsdl.Java2WSDL這個類來生成,Java2WSDL這個命令根據已有的Java類文件生成WSDL文件。
          理論上是放MyService.class文件,但實際應用時放MyService.java文件也行。
          @soa
          呵呵,搞定了?問題是自己搞定的一定很有成就感吧,哈哈。。。
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-03-25 17:13 soa

          我想問問:
          冰川,使用過soap來調用web service嗎?

          我寫好代碼了,但是就拋異常
          Exception in thread "main" [SOAPException: faultCode=SOAP-ENV:Protocol; msg=Unsupported response content type &quot;text/html; charset=utf-8&quot;, must be: &quot;text/xml&quot;. Response was:
          &lt;html&gt;&lt;head&gt;&lt;title&gt;Apache Tomcat/5.5.17 - Error report&lt;/title&gt;&lt;style&gt;&lt;!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--&gt;&lt;/style&gt; &lt;/head&gt;&lt;body&gt;&lt;h1&gt;HTTP Status 500 - &lt;/h1&gt;&lt;HR size=&quot;1&quot; noshade=&quot;noshade&quot;&gt;&lt;p&gt;&lt;b&gt;type&lt;/b&gt; Exception report&lt;/p&gt;&lt;p&gt;&lt;b&gt;message&lt;/b&gt; &lt;u&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;description&lt;/b&gt; &lt;u&gt;The server encountered an internal error () that prevented it from fulfilling this request.&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;exception&lt;/b&gt; &lt;pre&gt;org.apache.axiom.om.OMException: SOAPEnvelope must contain a body element which is either first or second child element of the SOAPEnvelope.
          org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getBody(SOAPEnvelopeImpl.java:142)
          org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.addChild(SOAPEnvelopeImpl.java:103)
          org.apache.axiom.soap.impl.llom.SOAPEnvelopeImpl.getHeader(SOAPEnvelopeImpl.java:82)
          org.apache.axis2.engine.AxisEngine.createFaultMessageContext(AxisEngine.java:183)
          org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:168)
          org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:153)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
          javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
          &lt;/pre&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;note&lt;/b&gt; &lt;u&gt;The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.&lt;/u&gt;&lt;/p&gt;&lt;HR size=&quot;1&quot; noshade=&quot;noshade&quot;&gt;&lt;h3&gt;Apache Tomcat/5.5.17&lt;/h3&gt;&lt;/body&gt;&lt;/html&gt;
          ]
          at org.apache.soap.rpc.Call.getEnvelopeString(Unknown Source)
          at org.apache.soap.rpc.Call.invoke(Unknown Source)
          at com.test.TClient3.main(TClient3.java:29)   回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-04-02 19:23 herry

          問一下樓主:
          如果每個方法都這樣去寫service.xml,以及每個方法都要寫,那豈不是很費勁.有沒有自動生成的工具?
          以前用axis1.x部署服務的時候,只要構建一個server-config.wsdd部署文件,里面只需要寫類型映射的javabeans,然后axis就可以根據這個wsdd文件生成wsdl文件,里面就包含所有發布的服務接口. axis2中有類似的發布方式嗎?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-04-02 22:02 冰川

          @soa:
          錯誤是說你的服務響應文件的類型是text/html的而不是SOAP所要求的text/xml類型.
          @herry:
          wsdl文件可以用命令來生成,如:
          java2wsdl –cp . -cn [package].StockQuoteService –of ..\wsdl\StockQuoteService.wsdl

          另外,最近很忙,沒有太多時間來照看BLOG,僅提供兩個關于AXIS2的學習連接:
          英文的:http://ws.apache.org/axis2/
          中文的:http://www.ibm.com/developerworks/cn/webservices/
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-04-27 04:07 maser

          我覺的比較別扭,還必須使用工具生成arr文件,而且還必須手動放到WEB-INF\services目錄,難道就不可以,不用打arr包嗎,這點我不是很理解,請兄弟們指正,反正jdk新版本里對WebService支持就簡單多了,用注釋語句就可以啦。
          問題1,在eclipse中,我們難道沒次打包都要自己去拽class和service.xml到
          .arr包中嗎,或者在里面加ant build.xml來代替手工?
          問題2,我們在WEB-INFO/classes目錄下服務文件XXXXservice.class,除了打包到.arr里,放到工程中是不是有浪費空間的嫌疑

          xfire就不這樣,只需配置將服務services.xml放到src\META-INF\xfire\下,同時web.xml就配置一下servlet,就可以啦,不需要打打.arr包,我覺的打.arr包簡直就是多此一舉,最初是怎么設計的?是不是還有什么非常有利的地方?
          當然xfire問題一大堆,建議大家不要用,最嚴重的是目前它僅僅支持到spring1.2.6,如果你的項目中使用了spring2.0以上的版本,那么你幾乎沒法用xfire,除此之外,還有好幾個jar包沖突,我就是沒辦法才來用axis2.0的
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-05-26 22:38 kitty

          各位,有誰知道如何該Axis2 console用戶名和密碼, lz給的Admin,Axis 2無法登陸  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-07-20 14:45 emike

          應該是admin/axis2  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-08-07 15:40 忠巖

          QQ 475903393
          各位,問個問題,我將冰心的程序發布到外網后,會出現以下錯誤
          the host did not accept the connection with timeout 60000 ms
          不知道怎么解決,還請指點,

          再有,axis2工程發布后,點擊服務名稱也會出現
          <error>
          <description>Unable to generate WSDL for this service</description>
          <reason>If you wish Axis2 to automatically generate the WSDL, then please use one of the RPC message receivers for the service(s)/operation(s) in services.xml. If you have added a custom WSDL in the META-INF directory, then please make sure that the name of the service in services.xml (/serviceGroup/service/@name) is the same as in the custom wsdl's service name (/wsdl:definitions/wsdl:service/@name).</reason>
          </error>
          我用java2wsdl 處理后wsdl已放入到META-INF 為什么還會有此問題呢.

          請各位指點指點,謝謝
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2007-11-12 09:26 andrew

          我有問題,axis2到底支持spring2.0嗎?為什么會接續不了spring的配置文件??  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-11-26 11:06 林行天下

          為什么我在.services.xml里面1.org.apache.axis2.rpc.receivers.RPCMessageReceiver:打包發布成功
          2.org.apache.axis2.receivers.RawXMLINOutMessageReceiver:打包發布失敗
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2007-12-13 09:52 milo

          jar cvf MyAxisDemo.aar AxisDemo/.
          這樣的打包命令在我的電腦里面打完的包是錯誤的
          在我的電腦里面是這樣的
          首先進入D:AxisDemo目錄
          然后
          jar cvf MyService.aar .
          后面有一個點  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2008-03-13 09:44 Axis2 初學者

          你的命令應該是
          >[%java_home%]\bin\jar.exe cvf MyService.aar .(必須要點)
          不然提示說找不到jar命令  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2008-03-13 09:50 Axis2 初學者

          @忠巖
          我的做法是把生成的XX.aar文件拷貝至Asix2\WEB-INF\services中,在容器啟動之后,可以動態載入。
          個人感覺wsdl主要是為了生成客戶端存在的,是作為服務器代碼和客戶端代碼的關聯,不知道這樣理解對不對啊。
          java2wsdl 服務端生成wsdl文件
          wsdl2java 由wsdl文件生成客戶端文件  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2008-03-13 09:57 Axis2 初學者

          @冰川
          web services是可以客戶端監聽的嗎?
          個人感覺不是,soap協議是無狀態的協議,相當于http,不能理解為什么客戶端能監聽?
          我的理解是客戶端發送請求給服務器端,服務器可以同步或異步響應,客戶端在接到響應后,可以同步或異步處理!
          請教!  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布![未登錄] 2008-03-24 20:43 chen

          nested exception is: org.apache.axis2.deployment.DeploymentException: services.xml not found for service


          我也碰到了打包成aar文件之后,部署時出現問題,是不是因為沒有打包成功啊?  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2008-03-27 22:02 juanjuan

          打包成功,發布出現This Web axisService has deployment faults 哪里錯了啊  回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2008-04-16 15:43 somber

          @soa
          請問你怎么搞定的?我發布的服務遇到了和一樣的拋出異常
          請指教!!
            回復  更多評論   

          # re: 【原創】關于Web Services技術中的Axis2的使用及Web服務的發布! 2011-05-05 17:19 11

          有一個webservice類,這個類調用了其他類,我想用services.xml發布這個webservice類,它引用的其他類放在哪里?  回復  更多評論   


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


          網站導航:
           
          <2007年4月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統計

          常用鏈接

          留言簿(14)

          隨筆檔案

          BlogJava的幫助

          朋友的博客

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          快樂工作—享受生活
          主站蜘蛛池模板: 蒙城县| 宣恩县| 刚察县| 修文县| 理塘县| 鲁山县| 四平市| 北海市| 娄烦县| 治县。| 文昌市| 同德县| 乌拉特中旗| 南宫市| 溧水县| 方正县| 泉州市| 连州市| 陕西省| 绥江县| 安顺市| 梁山县| 高要市| 文登市| 金山区| 托克托县| 龙江县| 芜湖市| 建德市| 民丰县| 通海县| 东平县| 清涧县| 九龙坡区| 定南县| 南郑县| 梨树县| 金寨县| 东兰县| 新绛县| 东乡县|