Interstage Application Server リファレンスマニュアル(コマンド編)
目次 索引 前ページ次ページ

第5部 Webサービス運用編> 第21章 SOAPサービス運用コマンド

21.8 soapidl2wsdl

名前

 soapidl2wsdl − IDL-WSDLコンバータ

形式

 soapidl2wsdl [-sinfofilename] [-infofilename] [-Idir] [-Dname[=val]] [-o basename] [IDLfile]
 soapidl2wsdl [-sinfofilename] [-infofilename] [-Idir] [-Dname[=val]] [-o basename] [-M systemname] [IDLfile]

機能説明

 soapidl2wsdlコマンドは、IDLfileで指定されたIDL(Interface Definition Language)ファイルに記載された内容を、WSDL(Web Services Description Language)に変換します。IDLfileが省略されると、Foo.idlが指定されたものとみなします。なお、ファイル名は"XX.idl"(XXは任意)とする必要があります。

 IDLファイル内に以下の定義がある場合は、変換エラーとし処理を中止します。

 データ型のマッピングは以下の表に基づいて行います。

CORBAのデータ型

XMLのデータ型

long

xsd:int

unsigned long

xsd:unsignedInt

short

xsd:short

unsigned short

xsd:unsignedShort

long long

xsd:long

float

xsd:float

double

xsd:double

boolean

xsd:boolean

char

xsd:string

wchar

xsd:string

octet

xsd:unsignedByte

string

xsd:string

wstring

xsd:string

enum

SOAP符号化で定められた列挙型

配列

SOAP符号化で定められた配列型

sequence

SOAP符号化で定められた配列型

struct

SOAP符号化で定められた構造体型

Object

xsd:string

interface

xsd:string

注) xsd:で始まるデータ型は、http://www.w3.org/2001/XMLSchemaに定義されているデータ型です。

生成ファイル

 WSDLに変換された内容は、IDLファイル名の拡張子を wsdl に変更したファイル名に格納されます。

オプション

 以下に、soapidl2wsdlコマンドのオプションを説明します。なお表中の“○”は省略可能、“×”は省略不可能の意味を示します。

-sinfofilename

 サービス情報ファイルのファイル名をfilenameに指定します。
 本パラメタを省略した場合は、WSDLファイル中のserviceタグに従属するaddressタグの属性名locationの値として“$$location$$”を設定します。本パラメタを省略して変換を行った場合は、WSDLファイルをエディタ等で編集し、設定された“$$location$$”の文字列をサービスを提供するWebサービス・コンテナのURL文字列に変更してください。

 サービス情報ファイルの形式を以下に示します。

(a)全体の構成

 サービス情報ファイルは以下の形式で記述します。各タグの出現順序は、明記しない限り上から下の順です。

タグ

省略可否

意味

<?xml version="1.0" encoding="encodingの値"?>

×

XMLファイルの書式バージョンや記述コードを定義するタグ。encodingの値には、システムで規定された値を指定する。
Windowsのメモ帳で記載する場合は、encodingの値としてShift_JISを指定しなければならない。

<definitions>

×

定義情報の開始を表すタグ

 → (b)で示すタグ

 

 

<service name="名前">

×

サービス情報の開始を表すタグ。
名前には、本情報を埋め込むWSDLファイル内のserviceタグに記載されたname値の文字列(IDLに記述されているモジュール名)を指定する。
1つのサービス情報ファイル内に、service〜/serviceの組が、複数存在することがある。

 → (c)で示すタグ

 

 

</service>

×

サービス情報の終了を表すタグ。

</definitions>

×

定義情報の終了を表すタグ。

(b)定義情報のタグ

 複数定義されたサービス情報全体に対する定義情報のタグは下記のとおりです。

タグ

省略可否

意味

<wsdlns>文字列</wsdlns>

WSDLの名前空間を表す文字列を定義するタグ。
省略時:urn:WSDLファイル名

<soap>文字列</soap>

WSDL SOAPバインディングのためのWSDL名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/wsdl/soap/

<xsd>文字列</xsd>

XSDで定義されたスキーマの名前空間を表す文字列を定義するタグ。
省略時: http://www.w3.org/2001/XMLSchema

<wsdl>文字列</wsdl>

WSDLフレームワークのためのWSDL名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/wsdl/

<http>文字列</http>

WSDL HTTP GETおよびPOSTのためのWSDL名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/wsdl/http/

<mime>文字列</mime>

WSDL MIMEバインディングのためのWSDL名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/wsdl/mime/

<soapenc>文字列</soapenc>

SOAP 1.1で定義されたエンコーディング名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/soap/encoding/

<soapenv>文字列</soapenv>

SOAP 1.1で定義されたエンベロープ名前空間を表す文字列を定義するタグ。
省略時: http://schemas.xmlsoap.org/soap/envelope/

<soaphttp>文字列</soaphttp>

SOAP binding要素において、バインディングが対応するSOAPのトランスポートを表す文字列を定義するタグ。

省略時: http://schemas.xmlsoap.org/soap/http

<soapname>文字列</soapname>

SOAP body要素のnamespace属性に設定する名前空間を表す文字列を定義するタグ。この値はSOAPサービス識別名となる。
省略時: urn:WSDLファイル名

<schemans>文字列</schemans>

スキーマ定義で使用する名前空間を表す文字列を定義するタグ。
省略時: urn:Fujitsu-Soap-Service-Data

(c)1つのサービス情報のタグ

 1つのサービス情報に対する定義情報のタグは下記のとおりです。

タグ

省略可否

意味

<documentation>文字列</documentation>

サービスに対する注釈文字列を表すタグ。
省略時: (空文字列と評価する)

<port name="名前">

×

ポート情報の開始を表すタグ。
名前には、本情報を埋め込むWSDLファイル内のportタグに記載されたname値の文字列(IDLに記述されているインタフェース名に"Port"を付加した文字列)を指定する。
1つのservice内に、port〜/port の組が、複数存在することがある。

<location>文字列</location>

×

サービスを提供するWebサービス・コンテナのURL文字列を表すタグ。
例)http://host_name:80/soap/servlet/WSContainer

</port>

×

ポート情報の終了を表すタグ。

-infofilename

 IDL-WSDL識別子情報ファイルのファイル名をfilenameに指定します。WSDLファイルに生成する場合に、このファイルで定義されている名前に置き換えして生成します。省略した場合は、IDLの名前が採用されます。IDL-WSDL識別子情報ファイルは以下の形式で記述します。

<module>*
 <name>文字列</name>
 <name_to>文字列</name_to>?
 <interface>*
  <name>文字列</name>
  <name_to>文字列</name_to>?
  <typedef>*
   <name>文字列</name>
   <name_to>文字列</name_to>?
  </typedef>
  <exception>*
   <name>文字列</name>
   <name_to>文字列</name_to>?
  </exception>
  <method>*
   <name>文字列</name>
   <name_to>文字列</name_to>?
  </method>
 </interface>
</module>

モジュール情報


インタフェース情報


typedef情報(配列、struct、enum含む)



例外情報



メソッド情報


*: 0個以上指定可能
?: 0個または1個指定可能

<name>文字列</name>に、変換元(IDL)の名前を設定します。
<name_to>文字列</name_to>に、変換後(WSDL)の名前を設定します。
IDLの識別子を変換する必要がない場合は、<name_to>文字列</name_to>は省略可能です。

-Idir

 #include文で指定したファイルの検索対象ディレクトリにdirを追加します。本オプションは複数指定可能で、その場合は指定された順にディレクトリを検索します。

-Dname[=val]

 マクロnameを定義します。IDLファイルの先頭に、"#define name val" があるのと同じ意味を持ちます。"=val"が省略されると"#define name"と同じ意味を持ちます。

-o basename

 xx.idlから生成されたファイルの名前のxxをbasenameに変更します。

-M systemname

 マルチシステムのシステム名を指定します。本オプションを省略すると、デフォルトシステムが対象となります。

注意事項

エラーメッセージ

[変換時のエラーメッセージ]

Can't open file :n
 エラー
 ファイルfileがオープンできません。
 システムエラー番号: n

Read failed file
 エラー
 fileからの読み込みに失敗しました。

Write failed file
 エラー
 fileへの出力に失敗しました。

MALLOC:name: n Bytes: Not enough memory
 エラー
 メモリが不足しているため、nameのnバイトの領域を獲得できません。

Syntax error:string
 エラー
 stringの定義には構文の誤りがあります。または、stringで示す内容の誤りがあります。

Structure member redeclaration of name
 エラー
 構造体メンバnameが再定義されました。

Union-switch member redeclaration of name
 エラー
 共用体でunion-switchメンバnameが再定義されました。

Duplicate case in union-switch, label
 エラー
 共用体でunion-switchに同じlabelのcaseが定義されました。

Out of array dimension
 エラー
 配列の次元が範囲外です。

Identifier redeclaration of name
 エラー
 識別子nameが再定義されました。

Illegal scoping name
 エラー
 nameはスコープで使用する名称として正しくありません。

name undefined data type
 エラー
 nameはデータ型として定義されていません。

name is not data type
 エラー
 nameはデータ型ではありません。

Illegal union-switch data type, name
 エラー
 nameはunion-switchデータ型として正しくありません。

Identifier too long.max(n)
 エラー
 識別子の長さが既定値を超えています。最大長は(n)です。

name undefined exception
 エラー
 nameは例外定義されていません。

name is not exception
 エラー
 nameは例外定義ではありません。

Warning:duplicate raises name exception
 警告
 Raises句でname例外を二重定義しています。

name undefined interface
 エラー
 nameはインタフェース定義されていません。

name is not interface
 エラー
 nameはインタフェースではありません。

Warning: duplicate inheritance name interface
 警告
 nameインタフェースが二重に継承されています。

name undefined constant
 エラー
 nameは定数定義されていません。

name is not constant
 エラー
 nameは定数ではありません。

Illegal constant type, name
 エラー
 nameは定数型として正しくありません。

Warning:operator operator, out of range
 警告
 シフト演算子operatorの右の引数がとりうる範囲を超えています。

Operator operator, division by zero
 エラー
 演算子operatorの2番目の式がゼロです。

Overflow, Floating point value
 エラー
 浮動小数点値がオーバーフロー。

Bad assignment values, type1 : type2
 エラー
 type1とtype2の型が異なるため割り当てられません。

Warning:overflow signed long
 警告
 サイン付きlongがオーバーフロー。

Illegal expression, type
 エラー
 typeが例外定義として正しくありません。

Syntax error hexadecimal, string
 エラー
 stringに16進数で指定できない文字が指定されました。

Syntax error octal, string
 エラー
 stringに8進数で指定できない文字が指定されました。

Undefined escape character, string
 エラー
 stringはエスケープ文字として定義されていません。

Unsupported multiple sourcefile
 エラー
 IDLファイルが複数指定されています。

Positive-integer constant only
 エラー
 正の整数定数しか指定できません。

Ambiguous variable usege
 エラー
 該当する変数宣言が不明です。

Can't close "file-name"
 エラー
 "file-name"ファイルがクローズできません。

REALLOC:"name" : n Bytes
 エラー
 "name"領域nバイトのメモリ獲得に失敗しました。

CORBA_ORB_init ERROR
 エラー
 CORBAサービス(ObjectDirector)が起動されていません。

CORBA_ORB_BOA_init ERROR
 エラー
 CORBAサービス(ObjectDirector)が起動されていません。

can't make temp list
 エラー
 資源不足のため、作業ファイルが作成できません。

Unsupported data type : "type"
 エラー
 定義された"type"は未サポートです。

Unsupported operation type : oneway
 エラー
 指定されたオペレーション属性(oneway)は未サポートです。

[その他のメッセージ]

 soapidl2wsdlコマンドがWSDLマッピングを行う場合に、インタフェースリポジトリおよびネーミングサービスを使用する場合に、環境設定ミスや通信エラーなどによりIDLファイルの変換に失敗した場合、以下の形式でエラーメッセージを表示します。

 処理フェーズ(I/R):処理名、関数名
 IDL:例外コード
 idl2wsdl: Stop.処理フェーズ status = 終了ステータス.

処理フェーズ
 IDLparser:IDLファイルの構文解析
 IDLwsdlcg:WSDLマッピング処理
 IDLinst:インタフェースリポジトリへの登録、変更、削除処理
 destory_rep:終了処理

処理名、関数名
 soapidl2wsdlコマンドのエラー検出箇所を特定する情報が表示されます。

例外コード
 システム例外として、以下の例外コードが通知されます。

IDL:CORBA/StExcep/UNKNOWN:1.0
 未知の例外です。

IDL:CORBA/StExcep/BAD_PARAM:1.0
 パラメタが不正です。

IDL:CORBA/StExcep/NO_MEMORY:1.0
 メモリ不足を検出しました。

IDL:CORBA/StExcep/IMP_LIMIT:1.0
 起動するサーバアプリケーションの限界数に達しました。

IDL:CORBA/StExcep/COMM_FAILURE:1.0
 通信エラー。インタフェースリポジトリサービスと通信できません。

IDL:CORBA/StExcep/INV_OBJREF:1.0
 オブジェクトリファレンスが無効です。

IDL:CORBA/StExcep/NO_PERMISSION:1.0
 メソッドの実行権限がありません。

IDL:CORBA/StExcep/INTERNAL:1.0
 CORBAサービス(ObjectDirector)の内部エラーです。

IDL:CORBA/StExcep/MARSHAL:1.0
 パラメタ、結果のマーシャリングエラーです。

IDL:CORBA/StExcep/INITIALIZE:1.0
 CORBAサービス(ObjectDirector)の初期化に失敗しました。

IDL:CORBA/StExcep/NO_IMPLEMENT:1.0
 インタフェースリポジトリサービスが起動されていません。

IDL:CORBA/StExcep/BAD_TYPECODE:1.0
 タイプコードが不正です。

IDL:CORBA/StExcep/BAD_OPERATION:1.0
 オペレーションが無効です。

IDL:CORBA/StExcep/NO_RESOURCES:1.0
 リクエストに対して十分なリソースがありません。

IDL:CORBA/StExcep/NO_RESPONSE:1.0
 インタフェースリポジトリサービスからの応答がありません。

IDL:CORBA/StExcep/PERSIST_STORE:1.0
 永続的な蓄積の失敗です。

IDL:CORBA/StExcep/BAD_INV_ORDER:1.0
 ルーチンの呼び出しが正常ではありません。

IDL:CORBA/StExcep/TRANSIENT:1.0
 遷移中のエラー、リクエストを再発行します。

IDL:CORBA/StExcep/FREE_MEM:1.0
 メモリ解放に失敗しました。

IDL:CORBA/StExcep/INV_IDENT
 識別子のシンタックスが無効です。

IDL:CORBA/StExcep/INV_FLAG:1.0
 フラグが無効です。

IDL:CORBA/StExcep/INTF_REPOS:1.0
 インタフェースリポジトリのアクセスエラーです。

IDL:CORBA/StExcep/CONTEXT:1.0
 コンテキストオブジェクトのエラーです。

IDL:CORBA/StExcep/OBJ_ADAPTER:1.0
 オブジェクトアダプタのエラーです。

IDL:CORBA/StExcep/DATA_CONVERSION:1.0
 データ変換のエラーです。

環境設定ミスなどで発生するシステム例外とその対処方法を以下に示します。

例外コード
 IDL:CORBA/StExcep/NO_MEMORY:1.0
原因
 システムのメモリ不足を検出しました。
対処
 メモリ、スワップ領域を増設します。

例外コード
 IDL:CORBA/StExcep/COMM_FAILURE:1.0
原因
 以下の原因でインタフェースリポジトリサービスとの通信に失敗しました。
 a) サーバマシンで電源投入されていない、またはCORBAサービスが未起動のため、サーバとの通信ができません。
 b) configのperiod_receive_timeoutの設定値内にインタフェースリポジトリの処理が完了しませんでした。

 c) サーバへの処理要求数がconfigのmax_IIOP_resp_conを超えました。
 d) LANの異常が発生しました。
 e) inithostの設定に誤りがあります。
 f) valueインタフェース用インタフェースリポジトリサービスが起動されていません。(EJBアプリケーション開発時)
対処
 それぞれの対処は以下のとおりです。
 a) サーバマシンの電源を投入し、インタフェースリポジトリのサーバを起動します。
 b) configのperiod_receive_timeoutの設定値を大きくします。

 c) サーバへの処理要求数がconfigのmax_IIOP_resp_conを大きくします。
 d) LANの環境をチェックし問題があれば修復します。
 e) inithostを正しく設定します。
 f) EJBアプリケーション開発時には、Interstage初期化処理でEJBオプションを指定してください。

注意) b)の対処後、インタフェースリポジトリサービスの起動に失敗する場合があります。出力されたメッセージを確認して対処してください。メッセージの詳細については、“メッセージ集”を参照してください。

例外コード
 IDL:CORBA/StExcep/NO_IMPLEMENT:1.0
原因
 インタフェースリポジトリのサーバが未起動です。
対処
 インタフェースリポジトリのサーバを起動します。起動に失敗する場合は、環境設定を見直し再度起動します。EJBアプリケーション開発時には、Interstage初期化処理でEJBオプションを指定してください。

例外コード
 IDL:CORBA/StExcep/NO_RESOURCES:1.0
原因
 インタフェースリポジトリサービスを呼び出すためのオブジェクトの生成ができません。
 または、同一のインプリメンテーションIDのサーバが起動済です。
対処
 しばらく待ってから再試行します。または同一のインプリメンテーションIDのサーバの停止、インプリメンテーションIDの見直しを行います。例外情報の詳細については、“例外情報”を参照してください。

終了ステータス

0: 正常終了
2: シンタックスエラー
3: 未サポートの処理が呼ばれた
4: その他のエラーを検出した

使用例(太字は入力を示します)

1. IDLファイルmodule.idlをWSDLファイルmodule.wsdlに変換します。
 > soapidl2wsdl module.idl
2. IDLファイルmodule.idlをWSDLファイル c:\home\wsdl\func.wsdlに変換します。
 > soapidl2wsdl -o c:\home\wsdl\func module.idl
1. IDLファイルmodule.idlをWSDLファイルmodule.wsdlに変換します。
 > soapidl2wsdl module.idl
2. IDLファイルmodule.idlをWSDLファイル /home/wsdl/func.wsdlに変換します。
 > soapidl2wsdl -o /home/wsdl/func module.idl

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005