AXIS2之WSDL2JAVA

WSDL2Java操作指南

1. 安裝JDK1.5, 配置系統環境變量:
   下載安裝JDK後, 設置環境變量:
   JAVA_HOME=C:/Program Files/Java/jdk1.5.0_02
   Path=%Path%;%JAVA_HOME%/bin(這裏的%Path%指你係統已經有的一系列配置)
   CLASSPATH=%JAVA_HOME%/lib

2. 下載axis, 配置系統環境變量:
   下載axis後,配置如下:
   AXIS_LIB=F:/Java/axis/axis-1_4/lib
   然後在CLASSPATH裏添加axis的8個jar:
   CLASSPATH=%JAVA_HOME%/lib;
 %AXIS_LIB%/axis.jar;
 %AXIS_LIB%/axis-ant.jar;
 %AXIS_LIB%/commons-discovery-0.2.jar;
 %AXIS_LIB%/commons-logging-1.0.4.jar;
 %AXIS_LIB%/jaxrpc.jar;
 %AXIS_LIB%/log4j-1.2.8.jar;
 %AXIS_LIB%/saaj.jar;
 %AXIS_LIB%/wsdl4j-1.5.1.jar;
   
3. 添加附加的3個jar:
   自己去獲取activation.jar, mail.jar, xerces.jar, 放到AXIS_LIB所指的目錄下,
然後在CLASSPATH裏添加:
   CLASSPATH=%JAVA_HOME%/lib;
 %AXIS_LIB%/axis.jar;
 %AXIS_LIB%/axis-ant.jar;
 %AXIS_LIB%/commons-discovery-0.2.jar;
 %AXIS_LIB%/commons-logging-1.0.4.jar;
 %AXIS_LIB%/jaxrpc.jar;
 %AXIS_LIB%/log4j-1.2.8.jar;
 %AXIS_LIB%/saaj.jar;
 %AXIS_LIB%/wsdl4j-1.5.1.jar;
 %AXIS_LIB%/activation.jar;
 %AXIS_LIB%/mail.jar;
 %AXIS_LIB%/xerces.jar
4. 獲取或者自己編寫wsdl文件
5. 生成webservice服務器端的代碼:
   5.1 先看命令的幫助, 在cmd.exe的提示符執行:java org.apache.axis.wsdl.WSDL2Java -h
       我可以看到很多選項,其中就有-s和-S
   5.2 執行WSDL2Java, 生成skeleton類:
       java org.apache.axis.wsdl.WSDL2Java -s -S true BluePower.wsdl
       將生成:  A skeleton class
                  An implementation template class
                  One deploy.wsdd file
                  One undeploy.wsdd file
   5.3 執行WSDL2Java, 不生成skeleton類:
       java org.apache.axis.wsdl.WSDL2Java -s BluePower.wsdl
       將生成:  
                  An implementation template class
                  One deploy.wsdd file
                  One undeploy.wsdd file
       (我們發現少了一個A skeleton class)
   5.4 名字解釋:
   Skeleton class: 
      它是Axis engine 和 the actual service implementation 類之間的一個代理類。
       The skeleton contains an implementation of the AddressBook service. 
       This implementation is either passed into the skeleton on construction, 
       or an instance of the generated implementation is created.
       When the Axis engine calls the skeleton's addEntry method, 
       it simply delegates the invocation to the real implementation's addEntry method.
   Implementation Template class:
       它就是我們的實際服務器端的實現代碼,我們要在不同的方法裏寫具體的實現處理。
       
6. 根據deploy.wsdd生成server-config.wsdd:
  這裏比較模糊,我暫時的方法是:
  先部署一個web服務器,如用resin,然後把第5步生成的類文件放到classes下(eclipse可以指定編譯路徑),
  把deploy.wsdd放到classes上一目錄,也就是WEB-INF下,運行命令:
  java -cp %AXIS_CLASSPATH% org.apache.axis.client.AdminClient -lhttp://localhost:8080/test/services/MyServer deploy.wsdd
  若出現:<Admin>Done processing</Admin>則成功,若出現失敗,則具體情況具體分析。
  成功後,當前目錄就會生成server-config.wsdd文件。
  注意:爲什麼這裏用%AXIS_CLASSPATH%, 因爲直接把這些jar配置在CLASSPATH裏,調用log4j時有衝突。最好不要放到CLASSPATH
  
7. server-config.wsdd文件裏的未解決的數組類型問題:
  若接口參數或返回值有數組,則會生成ArrayMapping的配置,而在resin下配置axis的servlet去裝載,就是不行。
  暫時的解決方法是,把這些數組類型就聲明爲一般類型,就能裝載了;客戶端用數組類型訪問,服務器也能正常
  解析出來,返回給客戶端的數組類型,客戶端也能正常解析

AXIS2之WSDL2JAVA

  Axis2是常用的一種SOAP engine,但是它提供的wsdl2Java的命令行工具的說明比較簡單,沒有具體的例子。下面舉出幾個例子:

從最簡單的開始 ,-uri 指定wsdl文件
> WSDL2Java -uri currencyConvert.wsdl

-d 使用不同的data binding方法
> WSDL2Java -uri currencyConvert.wsdl -d XML beans

-a 生成異步的方法
> WSDL2Java -uri currencyConvert.wsdl -a

-t 生成測試case
> WSDL2Java -uri currencyConvert.wsdl -t ...

稍微複雜一些的,-p可以指定生成的package,-o指定生成的路徑,-ss生成服務端代碼
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src  -ss -sd -g -p foo.bat

再複雜一些,-ns2p 將namespace進行替換,多箇中間用逗號隔開
wsdl2java -uri ../wsdl /currencyConvert.wsdl -o ../wsdl /gen_src  -ss -sd -g -p com.foo.bar -ns2p "http://www.xxx.yyy.com/zzz /v1.0"=com.foo.bar,"http://www.xxx.yyy.com/ddd/v1.1"=com.foo.bar.goo進入討論組討論。

 

C:/ws/classes> java org.apache.axis.wsdl.WSDL2Java -o . -d Session -s -S true  -Nurn:MobileBoss com.yy.ws mb.wsdl

參數說明: -o 輸出文件所在目錄( .-代表當前目錄 )

                   -s生成server端綁定代碼

                   -d發佈範圍

                  -S是否產生髮布和撤銷webservice的deploy.wsdd和undeploy.wsdd文件。ture代表生成發佈文件。

                  -Nurn:命名空間 包名

                 mb.wsdl - wsdl文件名。

 

 

 Axis2是常用的一種SOAP engine,但是它提供的wsdl2java的命令行工具的說明比較簡單,沒有具體的例子。下面舉出幾個例子:

從最簡單的開始 ,-uri 指定wsdl文件
> WSDL2Java -uri currencyConvert.wsdl

-d 使用不同的data binding方法
> WSDL2Java -uri currencyConvert.wsdl -d xmlbeans

-a 生成異步的方法
> WSDL2Java -uri currencyConvert.wsdl -a

-t 生成測試case
> WSDL2Java -uri currencyConvert.wsdl -t ...

稍微複雜一些的,-p可以指定生成的package,-o指定生成的路徑,-ss生成服務端代碼
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src  -ss -sd -g -p foo.bat

再複雜一些,-ns2p 將namespace進行替換,多箇中間用逗號隔開
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../wsdl/gen_src  -ss -sd -g -p com.foo.bar -ns2p "http://www.xxx.yyy.com/zzz/v1.0"=com.foo.bar,"http://www.xxx.yyy.com/ddd/v1.1"=com.foo.bar.goo

 

 

稍微複雜一些的,-p可以指定生成的package,-o指定生成的路徑,-ss生成服務端代碼
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../gen_src  -ss -sd -g -p foo.bat

再複雜一些,-ns2p 將namespace進行替換,多箇中間用逗號隔開
wsdl2java -uri ../wsdl/currencyConvert.wsdl -o ../wsdl/gen_src  -ss -sd -g -p com.foo.bar -ns2p "http://www.xxx.yyy.com/zzz/v1.0"=com.foo.bar,"http://www.xxx.yyy.com/ddd/v1.1"=com.foo.bar.goo

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章