9.2 WSDL2Javaコマンド(ソースコードの生成)

WSDLからのソースコード生成は次のコマンドを使用します。

形式

WSDL2Java.bat -C validS [その他のオプション群] <対象となるWSDLファイル名>

必須の-Cオプションおよび任意に指定するオプションの一覧を示します。

表9-4 WSDL2Javaコマンドの-Cオプション(必須)

オプション意味

-C

WSDLを検証するかどうかを指定します。検証モードにvalidS,validOnlySのどちらかを指定します。validSを指定した場合,指定したWSDLの検証が行われ,Javaソースコードが生成されます。validOnlySを指定した場合,WSDLの検証だけが行われます。WSDLを検証した結果,WSDLに不正がある場合はエラーとなります。
省略時:WSDLは検証されません。
-Cオプションの指定について
-Cオプション(WSDL検証機能)の指定は必須です。このオプションは入力されたWSDL内で,サポートされていない要素を使用していないかどうかを検証する機能です。
このオプションを指定しなかった場合,入力されたWSDL内でサポートされていない要素を使用していても,WSDL2Javaコマンドが正常に終了することがあります。

表9-5 WSDL2Javaコマンドのオプション一覧(任意)

オプション意味

-h

ヘルプが表示されます。

-v

生成過程が画面に表示されます。

-O

タイムアウト値を秒で指定します。
省略時:45が設定されます。

-s

スケルトン(サーバ側に必要なソースコード)とサービスデプロイ定義が生成されます。
省略時:スタブ(クライアント側に必要なソースコード)が生成されます。

-N

名前空間とパッケージ名の関係をnamespace=packageの形式で指定します(パッケージ名)。
省略時:パッケージ名は変更されません。

-f

ファイル指定で名前空間とパッケージ名の関係を指定します。
省略時:パッケージ名は変更されません。

-p

すべてのクラスのパッケージ名を変更します。
省略時:パッケージ名は変更されません。

-o

ソース出力先ディレクトリを指定します。
省略時:カレントディレクトリが設定されます。

-d

deployScopeをApplication,Request,Sessionのどれかで指定します。
省略時:Requestが設定されます。

-a

メソッドのパラメタや,パラメタのクラスで参照されないユーザ定義のデータ型についても,ソースコードが生成されます。
省略時:参照されないユーザ定義のデータ型については,ソースコードは生成されません。
WSDL2Javaコマンドで生成されるソースコード
ソースコードは,カレントディレクトリ下にあるパッケージ名のフォルダ下に生成されます。例えば,カレントディレクトリが「C:¥SOAP」でパッケージ名が「jp.co.hitachi.soft」の場合は,「C:¥SOAP¥jp¥co¥hitachi¥soft」に生成されます。WSDL2Javaコマンドで生成されるファイルの一覧を次の表に示します。

表9-6 WSDL2Javaコマンドで生成されるファイル一覧

生成ファイル名名称説明
<portType要素のname属性>.javaリモートインタフェーススタブ,スケルトン共通インタフェースクラスです。
<service要素のname属性>.javaサービスインタフェースサービスのインタフェースクラスです。
<service要素のname属性>Locator.javaサービスクラスサービスへの接続情報を保持するクラスです。
<binding要素のname属性>Impl.javaスケルトンクラスサーバ側に処理を実装するためのクラスです。
<binding要素のname属性>Stub.javaスタブクラスCallオブジェクト生成などを行うスタブクラスです。
<types要素に定義したデータ型名>.javaユーザ定義のデータ型クラスユーザ作成のデータ型クラスです。0または1個以上のデータ型クラスを作成します。
生成されるファイル名称に関して,次の注意が必要です。
  • 生成されるフォルダ内にすでに同じ名称のソースコードがある場合,<binding要素のname属性>Impl.java(スケルトンクラス)以外は上書きされます。したがって,上書きされないようにするには,各要素のname属性を変更したあとに,再度生成し直してください。
  • 生成されるフォルダ内にすでに同じ名称のソースコードがある場合,<binding要素のname属性>Impl.java(スケルトンクラス)だけは上書きされません。したがって,インタフェースを変更するときは,<binding要素のname属性>Impl.java(スケルトンクラス)を直接修正するか,<binding要素のname属性>Impl.java(スケルトンクラス)を削除してから再度生成し直してください。
終了コード
0:正常終了
1:異常または警告終了
メッセージ
メッセージの詳細については,マニュアル「Cosminexus アプリケーションサーバ メッセージ1」の開発支援コマンドによって出力されるメッセージの記述を参照してください。
注意事項
  • 指定するWSDLファイルにはローカルファイルを指定してください。
  • 実行中にエラーが発生した場合,ソースが途中まで生成されている場合があります。必要に応じて削除してください。
  • WSDLファイルのパスには,次の文字は使用できません。
    ? : * # % | < > "
  • WSDL定義のmessage要素に含まれるpart要素に,element属性とtype属性の両方を指定して,コマンドを実行したときの挙動を次に示します。
    WSDLのスタイルおよびuse属性が「RPC/LITERAL」または「RPC/ENCODED」の場合:
    element属性を無視し,type属性の記述に従ってJavaソースコードが生成されます。
    WSDLのスタイルおよびuse属性が「DOCUMENT/LITERAL」の場合:
    WSDL2Javaコマンドの実行時に,KDCCC0240-Eメッセージが出力されて異常終了します。
  • XML Schemaに同じ名前の要素と型を定義する場合,wsdl:portType,wsdl:binding,およびwsdl:serviceには同じ名前を使用しないでください。同じ名前を使用した場合,コンパイルできないソースコードが生成されます。
  • WSDLには,同じ名前を設定できる要素があるため,生成されるJavaインタフェースおよびJavaクラスの名前が衝突することがあります。名前が衝突した場合,WSDL2Javaコマンドは,衝突したすべてのJavaインタフェースおよびJavaクラスの名前に次のようなサフィックスを追加します。

    表9-7 名前衝突時に追加されるサフィックス

    項番WSDLまたはXML Schemaの要素および型Javaインタフェースおよびクラスに追加されるサフィックス
    1JavaクラスにマッピングされるXML Schemaの型_Type

    (例1)
    XML Schema:
    <xsd:complexType name="Shared">
     <xsd:sequence>
       <xsd:element name="elem" type="xsd:string"/>
     </xsd:sequence>
    </xsd:complexType>

    Java:
    Shared_Type.java

    (例2)
    XML Schema:
    <xsd:simpleType name="Shared">
     <xsd:restriction base="xsd:string">
       <xsd:enumeration value="foo"/>
     </xsd:restriction>
    </xsd:simpleType>

    Java:
    Shared_Type.java

    2JavaクラスにマッピングされるXML Schemaの要素_ElemType

    XML Schema:
    <xsd:element name="Shared">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element name="elem" type="xsd:string"/>
       </xsd:sequence>
     </xsd:complexType>
    </xsd:element>

    Java:
    Shared_ElemType.java

    3wsdl:portType要素_Port

    WSDL:
    <wsdl:portType name="Shared">
     ...

    Java:
    Shared_Port.java

    4wsdl:service要素_Service

    WSDL:
    <wsdl:service name="Shared">
     ...

    Java:
    Shared_Service.java

    5wsdl:fault要素が参照しているXML Schemaの型_Exception

    WSDL:
    <wsdl:types>
     <xsd:schema ...>
       <xsd:complexType name="Shared">
         ...
       </xsd:complexType>
     </xsd:schema>
    </wsdl:types>
    <wsdl:message name="UserException">
       <wsdl:part name="fault" type="intf:Shared"/>
    </wsdl:message>
    ...
    <wsdl:portType name="UserInfo">
     <wsdl:operation name="getUserInfo" parameterOrder="in0">
       ...
       <wsdl:fault message="intf:UserException" name="UserException"/>
     </wsdl:operation>
    </wsdl:portType>

    Java:
    Shared_Exception.java

  • wsdl:definitions要素のtargetNamespace属性値からマッピングされるJavaパッケージの名前と,次の要素および型の名前が同じ場合,Javaパッケージの名前にサフィックスとして"_pkg"を追加します。
    ・JavaクラスにマッピングされるXML Schemaの型
    ・JavaクラスにマッピングされるXML Schemaの要素
    ・wsdl:portType要素
    ・wsdl:service要素
    ・wsdl:fault要素が参照しているXML Schemaの型
  • -pオプションでIPv6アドレスを指定した場合,指定した文字列がそのままパッケージ名になります。このとき,生成したクラスのパッケージ名が不正になり,コンパイルできないことがあります。コンパイルできない場合は,生成したクラスのパッケージ名を修正してください。
  • スタブおよびスケルトンファイルをコンパイルすると,次に示す警告メッセージが出力されることがあります。
    注:入力ファイルの操作のうち,未チェックまたは安全ではないものがあります。
    注:詳細については,-Xlint:unchecked オプションを指定して再コンパイルしてください。
    この警告メッセージが出力された場合の対処は不要です。
    なお,「入力ファイルの操作のうち」の部分は,コンパイル時の入力ファイル名が出力されることがあります。
  • 生成されるソースコードは,SOAP通信基盤のバージョン08-50(Cosminexus Component Container 08-50)対応のソースコードとなります。08-50以外のバージョンのSOAP通信基盤には,対応するSOAPアプリケーション開発支援機能でソースコードの再生成が必要になります。