2011年8月11日 星期四

[AXIS2] 建立 web service

axis裡面雖然有很簡單的pojo可以用~
但是...他規定不能有package..在項目管理上就不太方便..
所以還是要包成service --> aar比較實在Orz..

幾個地方要注意的大概就是...下面內容mark過~ xml改tag大小於..不然又show不出來了QQ

service class 照正常Java的寫..method開public
public class Service {
public String getCodeMsg(String code) {
return "unknow";
}

public HistoryResponse getHistory(String group, String startDt, String endDt) {
return null;
}
}

Compire程式時~ 記得加上-g, 這樣生出來的wsdl才有名稱~不然會變參數1, 參數2...

META-INF裡的service.xml要會寫..一個service.xml只能有一個service..在管理上真是有點不方便~_~..要切不同service就要編不同的service.xml跟aar
<service name="test-service">
<description>
This service for test
</description>
<parameter name="ServiceClass">xxx.xxx.Service</parameter>
<operation name="getCodeMsg">
<messagereceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
<operation name="getHistory">
<messagereceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
</operation>
</service>

要會包aar..偶習慣在檔案結構排好後..寫個簡易bat, 用cmd包去tomcat下
cd D:\project\ws\xxx\classes
d:
jar -cvf D:\apache-tomcat-7.0.0\webapps\soap\WEB-INF\services\xx-1.0.aar .

佈署時~相關其他用到的jar檔還是要丟進該axis的WEB-INF/lib下..(所以還是要重起Orz)丟service那個資料夾不怎麼想理我就是了~大概他不會動態去load副檔不一樣的..所以aar其實不用包太多~ 包太多也沒啥用一_一|||

接著去axis2的介面看有沒有起來
default index..
http://127.0.0.1:8080/soap/
看看service有沒有正常出現
http://127.0.0.1:8080/soap/services/listServices
wsdl長得怎麼樣~ 呼叫時也要參考一下~ 貼文件超好用!!
http://127.0.0.1:8080/soap/services/test-service?wsdl
至於如果是對外開放的話~ 那個axis的密碼一定要去改..在檔案下
\apache-tomcat-7.0.0\webapps\soap\WEB-INF\conf\axis2.xml

沒有留言: