Google Prettify

2010-12-20

使用Button up的方式來建立web service

其實廢話不用太多…。如果你只想實作,看看如何建立web service,只果你知道發生了什麼事,就請看「 花」生了什麼事。

建立web service

1.建立dynamic web專案

 a.new ->dynamic web project
  b.點選Modify(重點),修改一些組態設定

2.將專案加入server

3.啟動server。

原則上是會有一些error,不過那是後話了…
如果可以的話,畫面應該會是這樣…

4.建立需要的class

既然是hellow world,當然就是hello world ws…
public class SayHellow {
    public SayHellowResponse say(SayHellowRequest request) {
        String userid = request.getUserid();
        SayHellowResponse response = new SayHellowResponse();
        response.setUserid(userid);
        response.setResponse("Hi");
        return response;
    }
}
public class SayHellowRequest {
    private String userid;
    public String getUserid() {
        return userid;
    }
    public void setUserid(String userid) {
        this.userid = userid;
    }
    public void setId(String id) {
        this.id = id;
    }
}
public class SayHellowResponse {
    private String userid;
    private String response;
    public void setUserid(String userid) {
        this.userid = userid;
    }
    public void setResponse(String response) {
        this.response = response;
    }
    public String getResponse() {
        return response + ", " + userid;
    }
}

5.建立web service

圖示的scroll bar是可以調整的,至少要拉到install service
打開瀏覽器,web service已經被deploy 上去了。
它也異動了web.xml。所以當我們如在網址列只有打http://localhost/WS 的時候,他會預設執行axis2-web的網頁。

「花」生了什麼事?

WTP在我們的WS應用程式中,加入了一個axis2-web。這是讓我們方便監控、處理、操作、管理(但不是使用)web service的UI介面。不過Axis2好膽在我的程式裡面加了這種不應該放在應該程式中的東西…。
<welcome-file-list>
...
    <welcome-file>/axis2-web/index.jsp</welcome-file>
  </welcome-file-list>
...
  <servlet>
    <display-name>Apache-Axis Servlet</display-name>
    <servlet-name>AxisServlet</servlet-name>
    <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
  </servlet>
...
  <servlet-mapping>
    <servlet-name>AxisServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
WTP也同時建立了web service。不過這並不是在axis2-web中而是在我們的WS應用程式中。
註冊檔(看來)是在WS/WebContent/WEB-INF/services/SayHellow/META-INF/service.xml
<service name="SayHellow" >
    <Description>
        Please Type your service description here
    </Description>
    <messageReceivers>
        <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" />
        <messageReceiver  mep="http://www.w3.org/2004/08/wsdl/in-out"  class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>
    </messageReceivers>
    <parameter name="ServiceClass" locked="false">hellowworld.ws.SayHellow</parameter>
</service>
不過Axis2的文件中有提到類似weblogic或是websphere這類J2EE的container有另外一種deploy方式,那是直接異動WS/WEB-INF/services/service.list,並使用工具產生.aar(Axis archive)檔,一同deploy,當然,這是另外一件事了…。

後話

ASIS2 1.5內綁rampart,因此光使用WTP啟動server時會有exception,要再額外掛幾個檔。不過即使沒有這些檔,service還是可以正常執行。
rampart-core-1.5.jar
rampart-trust-1.5.jar 
rampart-policy-1.5.jar
wss4j-1.5.8.jar

2011/05/17 更新

版本限定: 我使用Helios SR2的版本無法建立Axis2 的dynamic web project。後來改至使用Helios SR2 的版本才可以

沒有留言 :

您或許對這些有興趣

Related Posts with Thumbnails

最後

謝謝您的閱讀,希望您可以有豐富的收獲。