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」を選択する。
この場合、web.xmlまで自動で作成してくれる。
ただし、既存のクラスをそのまま公開されるのではなく
「org.jboss.sample.webservice.HelloService」というクラスが新たに作成される。
メニューで選択した通り、既存のクラスを元にWebサービスを新規に作ったことになる。
Apache Axisを使用したWeb Serviceよりかなりスッキリした感じで作成することが出来た。