JBossでWebサービスを作成する

mabushiisign

JBoss Web Serviceを使用することで、JAX-WSのWebサービスが簡単に作成出来る。
例として、以下のような簡単なクラスを作成し、helloメソッドをWebサービスとして公開する。

1package sample.webservice;
2 
3import javax.jws.WebMethod;
4import javax.jws.WebService;
5 
6@WebService
7public class HelloService {
8 
9    @WebMethod
10    public String hello(String name) {
11        return "Hello " + name + "!";
12    }
13 
14}

Webサービスとするクラスに、@WebServiceアノテーション、
公開するメソッドに、@WebMethodアノテーションをつけておく。
web.xmlには通常のサーブレットと同様にマッピングを行う。

<servlet>
    <servlet-name>HelloService</servlet-name>
    <servlet-class>sample.webservice.HelloService</servlet-class>
</servlet>
 
<servlet-mapping>
    <servlet-name>HelloService</servlet-name>
    <url-pattern>/services/HelloService</url-pattern>
</servlet-mapping>

ここまでで、準備は完了。
JBossにデプロイを行う。
WSDLにアクセスを行なってみる。

http://localhost:8080/WebSample/services/HelloService?WSDL

以下のようなWSDLが返ってくる。

1<definitions name='HelloServiceService' targetNamespace='http://webservice.sample/' xmlns='http://schemas.xmlsoap.org/wsdl/' xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' xmlns:tns='http://webservice.sample/' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
2 <types>
3  <xs:schema targetNamespace='http://webservice.sample/' version='1.0' xmlns:tns='http://webservice.sample/' xmlns:xs='http://www.w3.org/2001/XMLSchema'>
4   <xs:element name='hello' type='tns:hello'/>
5   <xs:element name='helloResponse' type='tns:helloResponse'/>
6   <xs:complexType name='hello'>
7    <xs:sequence>
8     <xs:element minOccurs='0' name='arg0' type='xs:string'/>
9    </xs:sequence>
10   </xs:complexType>
11   <xs:complexType name='helloResponse'>
12    <xs:sequence>
13     <xs:element minOccurs='0' name='return' type='xs:string'/>
14    </xs:sequence>
15   </xs:complexType>
16  </xs:schema>
17 </types>
18 <message name='HelloService_hello'>
19  <part element='tns:hello' name='hello'></part>
20 </message>
21 <message name='HelloService_helloResponse'>
22  <part element='tns:helloResponse' name='helloResponse'></part>
23 </message>
24 <portType name='HelloService'>
25  <operation name='hello' parameterOrder='hello'>
26   <input message='tns:HelloService_hello'></input>
27   <output message='tns:HelloService_helloResponse'></output>
28  </operation>
29 </portType>
30 <binding name='HelloServiceBinding' type='tns:HelloService'>
31  <soap:binding style='document' transport='http://schemas.xmlsoap.org/soap/http'/>
32  <operation name='hello'>
33   <soap:operation soapAction=''/>
34   <input>
35    <soap:body use='literal'/>
36   </input>
37   <output>
38    <soap:body use='literal'/>
39   </output>
40  </operation>
41 </binding>
42 <service name='HelloServiceService'>
43  <port binding='tns:HelloServiceBinding' name='HelloServicePort'>
44   <soap:address location='http://localhost:8080/WebSample/services/HelloService'/>
45  </port>
46 </service>
47</definitions>

この例では、自分でアノテーションを設定したが、GUIでも可能である。
メニューから「新規」ー「その他」を選択し、
「JBoss ツール」ー「Simple Web Service」を選択する。

  • Technology: JAX-WS
  • 動的Webプロジェクト: このプロジェクトを選択
  • サービス名: 公開するサービス名
  • Update web.xml: チェック
  • Service implemention: 公開するクラスを選択

この場合、web.xmlまで自動で作成してくれる。
ただし、既存のクラスをそのまま公開されるのではなく
「org.jboss.sample.webservice.HelloService」というクラスが新たに作成される。
メニューで選択した通り、既存のクラスを元にWebサービスを新規に作ったことになる。

Apache Axisを使用したWeb Serviceよりかなりスッキリした感じで作成することが出来た。

ABOUT ME
mabushiisign
mabushiisign
B'zとdoaとミスチルと登山が好きな40代のプログラマです。 普段は、SIer企業で働いています。
記事URLをコピーしました