Cosminexus SOAPアプリケーション開発ガイド

[目次][用語][索引][前へ][次へ]

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:異常または警告終了

メッセージ
15.6 開発支援コマンドによって出力されるメッセージ(KDCCC)」を参照してください。

注意事項
  • 指定する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インタフェースおよびクラスに追加されるサフィックス
    1 Javaクラスにマッピングされる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
    2 Javaクラスにマッピングされる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
    3 wsdl:portType要素 _Port
    WSDL:
    <wsdl:portType name="Shared">
      ...
     
    Java:
    Shared_Port.java
    4 wsdl:service要素 _Service
    WSDL:
    <wsdl:service name="Shared">
      ...
     
    Java:
    Shared_Service.java
    5 wsdl: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通信基盤のバージョン07-60(Cosminexus Component Container 07-60)対応のソースコードとなります。07-60以外のバージョンのSOAP通信基盤には,対応するSOAPアプリケーション開発支援機能でソースコードの再生成が必要になります。