WSDLの生成
既存クラスからWSDLを生成するには、Axis2ディストリビューションに用意されているwsdl2javaなどのコマンドライン実行可能バイナリを使用する方法があります。個々のバイナリをスタンドアロンバイナリおよびANTタスクとして使用する方法は、Axis2の付属ドキュメントに詳しく解説されています。Axis2プロジェクトからは、Eclipse、IntelliJ IDEA、Maven 2用のプラグインも提供されています。
今回のサンプルではEclipseプラグインを使用します。このプラグインは、機能的にはコマンドライン形式のバイナリより劣りますが、Webサービスの生成プロセスを大幅に効率化できるという長所があります。またこのプラグインを用いると、WSDL-to-JavaおよびJava-to-WSDLの両方向の生成をサポートできます。
柔軟性と分かりやすさのために、生成されたWSDLなどのWebサービス関連のコードを他のプロジェクト内に配置するとよいでしょう。そこで、コンポーネントを生成する前に、IDE内で空のソースとバイナリツリーを含む空のJavaプロジェクトを作成してください。このプロジェクトの名前はAccountWSにします。
これでEclipseプラグインが使用可能になり、AccountManagerImplクラスを参照してJavaクラスからWSDLを生成できるようになります。変数名の整合性を保つ関係上、必ずインターフェイスではなく実装クラスを参照してください。詳細については、以下、図2の一連のスクリーンショットを参照してください。
これで、新規の空プロジェクトAccountWS内に「services.wsdl」という名前のファイルが作成されるはずです。このWSDLは、次のように入力/出力の値に応じた2つのサービスを定義しています。
<xs:element name="getAccount"> <xs:complexType> <xs:sequence> <xs:element name="accountId" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="getAccountResponse"> <xs:complexType> <xs:sequence> <xs:element name="return" nillable="true" type="ns0:Account" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="setStatus"> <xs:complexType> <xs:sequence> <xs:element name="accountId" nillable="true" type="xs:string" /> <xs:element name="status" nillable="true" type="xs:boolean" /> </xs:sequence> </xs:complexType> </xs:element>
WSDLが生成されたら、<soap:address>パラメータを手作業で編集し、このサービスで使用するポートおよびURLを指定する必要があります。プラグインによる作成時には、デフォルト値が適用されています。





