http://blog.csdn.net/ccccdddxxx/article/details/8587160
這篇文章中寫出了發布WEBSERVICE的一種形式,以及利用架構自動產生的webservice用戶端的發布。
下面是在AXIS2架構下另一種發布WEBSERVICE的方法
1、編寫一個簡單的WebService的伺服器端代碼,代碼如下:
import java.util.Random;/** * function: WebService HelloWorld服務樣本 * @author hoojo * @createDate 2011-1-5 下午03:35:06 * @file HelloWorldService.java * @package com.hoo.service * @project Axis2WebService * @blog http://blog.csdn.net/IBM_hoojo * @email hoojo_@126.com * @version 1.0 */public class HelloWorldService {public String sayHello(String name) {return name + " say: hello [axis2]";}public int getAge(int i) {return i + new Random().nextInt(100);}}
注意,上面的HelloWorldService是沒有package的。Copy這個類的class檔案,放到tomcat目錄下的webapps的axis2的WEB-INF目錄的pojo檔案夾下。
如果沒有pojo這個目錄就手動建立一個一個檔案夾。然後在瀏覽器輸入:http://localhost:8080/axis2/
點擊Services的連結就可以看到我們手動發布的HelloWorldService了,或者是瀏覽器地址欄輸入:http://localhost:8080/axis2/services/listServices
你就可以看到你剛才粘貼過去的這個WebService了。
點選連結就可以看到wsdl檔案的內容了。內容很多,如果你看過axis1.x的介紹就知道wsdl檔案的大致結構了。
下面講解下為什麼要將class放在pojo檔案夾下。首先我們看看[tomcat_home]/webapps/axis2/WEB-INF/conf/axis2.xml
該檔案中有這樣一行代碼:
<deployer extension=".class" directory="pojo" class="org.apache.axis2.deployment.POJODeployer"/>
.class的尾碼檔案放在目錄pojo目錄下。
2、測試這個WebService的方法
複製上面的HelloWorldService的連結地址,然後帶上方法名稱和參數值即可測試調用是否成功。如下:
http://localhost:8080/axis2/services/HelloWorldService/sayHello?name=jack
http://localhost:8080/axis2/services/HelloWorldService這個是WebService的地址
/sayHello是方法名稱,?name=jack是參數名稱和值
在瀏覽器中輸入上面的地址後,可以看到如下效果:
可以看到傳回值,和方法名稱。ns:sayHelloResponse是方法名稱,所有的方法名稱後都會帶上Response,後面的ns當然是當前方法所在的類的包名了,
這裡沒有package就是預設的axis2的網域名稱。同樣,getAge方法,也是一樣的調用方法。
http://localhost:8080/axis2/services/HelloWorldService/getAge?i=22
結果如下:
這裡需要注意有有在瀏覽器中輸入的URL地址
在本人按照上述實驗時按照上面提供的URL地址寫是不對的
如所示:
重點在於,參數的名稱要與WDSL檔案的參數名稱是相對應的,這裡我產生的WDSL檔案看到
如可以看到name 對應的參數名稱應該是args0,以及getAge對應的參數也是args0
這樣就成功了,
其實重點還是看WDSL檔案
好了,今天就寫到這,討論沒完,下篇文章接著說