Axisリファレンスガイド

バージョン1.0

目次

ツールリファレンス

WSDL2Javaリファレンス

Usage:  java org.apache.axis.wsdl.WSDL2Java [options] WSDL-URI
Options:
        -h, --help
                print this message and exit
        -v, --verbose
                print informational messages
        -n, --noImports
                only generate code for the immediate WSDL document
        -O, --timeout <argument>
                timeout in seconds (default is 45, specify -1 to disable)
        -D, --Debug
                print debug information
       -W, --noWrapped
                turn off support for "wrapped" document/literal
        -s, --server-side
                emit server-side bindings for web service
        -S, --skeletonDeploy <argument>
                deploy skeleton (true) or implementation (false) in deploy.wsdd.
                Default is false.  Assumes --server-side.
        -N, --NStoPkg <argument>=<value>
                mapping of namespace to package
        -f, --fileNStoPkg <argument>
                file of NStoPkg mappings (default NStoPkg.properties)
        -p, --package <argument>
                override all namespace to package mappings, use this package
                 name instead
        -o, --output <argument>
                output directory for emitted files
        -d, --deployScope <argument>
                add scope to deploy.xml: "Application", "Request", "Session"
        -t, --testCase
                emit junit testcase class for web service
        -a, --all
                generate code for all elements, even unreferenced ones
        -T, --typeMappingVersion
                indicate 1.1 or 1.2. The default is 1.1 (SOAP 1.1 JAX-RPC compliant.                 1.2 indicates SOAP 1.1 encoded.)
        -F, --factory <argument>
                name of a custom class that implements GeneratorFactory interface                 (for extending Java generation functions)
        -H, --helperGen
                emits separate Helper classes for meta data
        -U, --user <argument>
                username to access the WSDL-URI
        -P, --password <argument>
                password to access the WSDL-URI
 

-h, --help

使用方法を表示して終了します。

-v, --verbose

このツールがコードを生成している状況を表示します。

-n, --noImports

コマンドラインに指定したWSDL文書に対するコードだけを生成します。デフォルトでは、全てのWSDL文書、つまり、直接指定した文書とそれがインポートする全ての文書に対するファイルを生成します。

-O, --timeout

タイムアウトを秒数で指定します。デフォルトは45です。-1を使用することでタイムアウトを無効にできます。

-D, --Debug

デバッグ情報、現時点ではWSDL2Javaのシンボルテーブルを表示します。シンボルテーブルが完了した後、つまり、WSDLの解析が成功した後にのみ表示されることに注意して下さい。

-W, --noWrapped

これは"ラップされた"文書/リテラル形式の操作についての特別な扱いを無効にします。デフォルトでは、WSDL2Javaは次の条件を認知します:
この条件に合った時、WSDL2Javaは最上位要素を'分解'し、その要素の各コンポーネントをその操作への引数として扱います。この種のWSDLはMicrosoft .NET Webサービスではデフォルトのものであり、RPC形式の引数を最上位のスキーマ要素内にまとめています。

-s, --server-side

Webサービスのサーバ側バインディングを生成します:

-S, --skeletonDeploy <argument>

deploy.wsdd内にスケルトンを配備する(true)か、実装を配備する(false)かを指定します。言い替えると、"true"の場合、deploy.wsddファイル内のservice句は以下のようになります:
<service name="AddressBook" provider="java:RPC">
    <parameter name="className" value="samples.addr.AddressBookSOAPBindingSkeleton"/>
    ...
</service>

また、"false"の場合、以下のようになります:

<service name="AddressBook" provider="java:RPC">
    <parameter name="className" value="samples.addr.AddressBookSOAPBindingImpl"/>
      ...
</service>

このオプションのデフォルトはfalseです。このオプションを使用する場合、--server-sideオプションが前提となるため、--server-sideオプションを明示的に指定する必要はありません。

-N, --NStoPkg <argument>=<value>

デフォルトでは、パッケージ名はWSDL文書内の名前空間の表記から魔法のごとく生成されます(通常、名前空間は"http://x.y.com"や"urn:x.y.com"といった形となりますが、この場合のパッケージは"com.y.x"となります)。このような自動的な生成方式を好まない場合、--NStoPkg引数を使用して独自のマッピングを行なうことができます。名前空間のマッピングが一意である限り、必要なだけ繰返して使用することができます。例えば、WSDL文書内に"urn:AddressFetcher2"という名前空間があり、その名前空間内のオブジェクトから生成されるファイルをsamples.addrパッケージとしたい場合、WSDL2Javaに以下のオプションを付与します:
--NStoPkg urn:AddressFetcher2=samples.addr
("-N"という省略オプションタグを使用する場合、"-N"と名前空間の間に空白を入れてはなりません)。
 

-f, --fileNStoPkg <argument>

WSDL文書内に複数の名前空間が存在する場合、全てをマッピングするために書き並べると長たらしくなってしまいます。コマンドラインを簡潔にしておくために、WSDL2Javaは、プロパティファイル内に記述したマッピングを参照することもできます。デフォルトでは、このファイルは"NStoPkg.properties"という名前で、デフォルトのパッケージ内になければなりません(つまりパッケージに属しません)。しかし、--fileNStoPkgオプションを使用して、独自のファイルを明示的に指定することができます。

このファイル内の項目は、--NStoPkgコマンドラインオプションの引数と同じ形式です。例えば、上記のコマンドラインオプションで指定していたものは、以下のNStoPkg.propertiesによって同じ情報を提供することができます:

urn\:AddressFetcher2=samples.addr
(プロパティファイル内のコロンはエスケープされなければならないことに注意して下さい。)

あるマッピングがコマンドラインとプロパティファイルの両方で与えられる場合は、コマンドラインの方が優先されます。

-p, --package <argument>

このオプションは、WSDL文書内の全ての名前空間を1つのJavaパッケージ名にマッピングする簡単なオプションです。これは、便利ですが危険です。これにより、どんな影響が出るかをきちんと理解しなければなりません。例えば、異なる名前空間に同じ名前で複数の型が存在する可能性があります。--NStoPkgと--packageスイッチを同時に使用するとエラーになります。

-o, --output <argument>

全てのファイルが生成されるルートディレクトリです。

-d, --deployScope <argument>

deploy.wsddに"Application"、"Request"、または、"Session"といったスコープを追加します。このオプションがない場合、deploy.wsddにはscopeタグはなく、つまり、AXISの実行時のデフォルトである、"Request"になります。

-t, --testCase

クライアント側のJUnitテストケースを生成します。このテストケースは単体で動作しますが、これは単にデフォルト値(オブジェクトの場合はnull、プリミティブ型の場合は0またはfalse)を渡すだけで、実際には何も行ないません。生成される実装ファイル同様、生成されたテストケースファイルもテンプレートとみなして変更して下さい。

-a, --all

参照されない要素を含め、全ての要素用のコードを生成します。デフォルトでは、WSDL2JavaはWSDLファイル内で参照される要素のみのコードを生成します。

参照されるとはどのようなことでしょうか。serviceから始め、そのserviceで参照されるbindingを全て生成し、その参照されるbindingによって参照されるportTypeを全て生成、というように単純にはいきません。portType、message、typesしか含まないWSDLファイルから生成されるコードはどのようなものでしょうか?WSDL2Javaがアンカとしてserviceを使用するのであれば、serviceがそのファイルに存在しないので、何も生成されません。従って、アンカはWSDLファイル内に存在する、以下の順番における最下位要素です:

  1. types
  2. portTypes
  3. bindings
  4. services

例えば、WSDLファイルがtypes要素しかない場合は、そこに記された全てのtypesが生成されます。しかし、WSDLファイルがtypesと1つのportTypeからなる場合は、portTypeとそのportTypeから参照されるtypesのみが生成されます。

アンカの検索はコマンドラインに指定されたWSDLファイル内で行なわれ、インポートされたWSDLファイル内は検索されないことに注意して下さい。これにより、1つのWSDLファイルは、インポートされたWSDLファイル内の全ての構成物から邪魔なコードを生成することなく、他のWSDLファイルで定義された構成物をインポートすることができます。

-T, --typeMappingVersion <argument>

1.1もしくは1.2を指定します。デフォルトは1.2(SOAP 1.2 JAX-RPC互換)です。

-F, --factory <argument>

WSDL2Javaのエミッタ機能を拡張するために使用します。引数は、JavaWriterFactoryを継承するクラスの名前です。

-H, --helperGen

メタデータ用のHelperクラスを別途生成します。

-U, --user <argument>

このユーザ名は、WSDL2Javaへの入力として指定されたWSDL-URIを解決する際に使用されます。URIにユーザ名が含まれる場合、このコマンドラインスイッチより優先されます。ユーザ名とパスワードを含むURLの例です:http://user:password@hostname:port/path/to/service?WSDL

-P, --password <argument>

このパスワードは、WSDL2Javaへの入力として指定されたWSDL-URIを解決する際に使用されます。URIにパスワードが含まれる場合、このコマンドラインスイッチより優先されます。

Java2WSDLリファレンス

以下にこのツールが生成するヘルプメッセージを示します:

Java2WSDL emitter
Usage: java org.apache.axis.wsdl.Java2WSDL [options] class-of-portType
Options:
        -h, --help
                print this message and exit
        -I, --input <argument>
                input WSDL filename
        -o, --output <argument>
                output WSDL filename
        -l, --location <argument>
                service location url
        -P, --portTypeName <argument>
                portType name (obtained from class-of-portType if not specified)
        -b, --bindingName <argument>
                binding name ((--servicePortName value + "SOAPBinding" if not specified)
        -S, --serviceElementName <argument>
                service element name (defaults to servicePortName value + "Service")
        -s, --servicePortName <argument>
                service port name (obtained from --location if not specified)
        -n, --namespace <argument>
                target namespace
        -p, --PkgtoNS <argument>=<value>
                package=namespace, name value pairs
        -m, --methods <argument>
                space or comma separated list of methods to export
        -a, --all
                look for allowed methods in inherited class
        -w, --outputWsdlMode <argument>
                output WSDL mode: All, Interface, Implementation
        -L, --locationImport <argument>
                location of interface WSDL
        -N, --namespaceImpl <argument>
                target namespace for implementation WSDL
        -O, --outputImpl <argument>
                output Implementation WSDL filename, setting this causes
                --outputWsdlMode to be ignored
        -i, --implClass <argument>
                optional class that contains implementation of methods in
                class-of-portType.  The debug information in the class is used
                to obtain the method parameter names, which are used to set
                the WSDL part names.
        -x, --exclude <argument>
                space or comma separated list of methods not to export
        -y, --style <argument>
                the style of the wsdl document: RPC, DOCUMENT or WRAPPED
        -c, --stopClasses <argument>
                space or comma separated list of class names which stop inheritance search
                if --all switch is enabled
        -T, --typeMappingVersion <argument>
                indicate 1.1 or 1.2. The default is 1.2 (SOAP 1.2 JAX-RPC compliant)
        -A, --soapAction <argument>
                value of the operations soapAction field. Values are DEFAULT,
                OPERATION or NONE. OPERATION forces soapAction to the name
                of the operation. DEFAULT causes the soapAction to be set
                according to the operations meta data (usually ""). NONE
                forces the soapAction to "". The default is DEFAULT.
        -y, --style <argument>
                the style of the wsdl document: RPC, DOCUMENT or WRAPPED
Details:
   portType element name= <.portTypeName value> OR <class-of-portType name>
   binding element  name= <--bindingName value> OR <--servicePortName value>SoapBinding
   service element  name= <--serviceElementName value> OR <portTypeName value>Service
   port element     name= <--servicePortName value>
   address location     = <--location value>
 

-h , --help
このヘルプメッセージを表示します。

-I, --input <WSDL file>
入力wsdlファイル名を指定する省略可能なパラメータです。出力wsdlファイルには、入力wsdlファイルに新規作成された要素を加えたものが全て含まれます。新規作成要素が入力wsdlファイルに存在する場合には追加されません。このオプションは、複数のport、binding、portTypeを持つwsdlファイルを生成する時に便利です。

-o, --output <WSDL file>
出力WSDLファイルの名前を指定します。指定されなければ、適当なデフォルトのWSDLファイルがカレントディレクトリ内に書き出されます。

-l, --location <location>
サービスの場所を示すURLを指定します。(-sオプションで上書きされない限り)最後のスラッシュ、もしくは、バックスラッシュの後の名前が、このサービスポートの名前となります。サービスポートのaddress location属性は指定された値が設定されます。

-P, --portTypeName <name>
portType要素に使用する名前を指定します。指定されなければ、portTypeクラスの名前が使用されます。

-b, --bindingName <name>
binding要素に使用する名前を指定します。指定されなければ、--servicePortNameの値 + "SoapBinding" が使用されます。

-S, --serviceElementName <name>
service要素の名前を指定します。指定されなければ、service要素は<portTypeName>Serviceになります。

-s, --servicePortName <name>
サービスポートの名前を指定します。指定されなければ、サービスポート名は--locationの値から取り出されます。

-n, --namespace <target namespace>
WSDLのターゲット名前空間の名前を指定します。

-p, --PkgToNS <package> <namespace>
パッケージから名前空間へのマッピングを指定します。名前空間を持たないパッケージと遭遇した場合、Java2WSDLのエミッタは適当な名前空間名を作成します。このオプションは、複数回指定することができます。

-m, --methods <arguments>
このオプションが指定された場合、インタフェースクラス内の指定されたメソッドのみがWSDLファイルにエクスポートされます。このメソッドリストは、カンマで区切らなければなりません。指定されなければ、そのインタフェースクラス内で宣言された全メソッドがWSDLファイルにエクスポートされます。

-a, --all
このオプションが指定された場合、Java2WSDLパーサは、WSDLファイルにエクスポートするメソッドリストを決定するために、継承されたクラスを参照します。

-w, --outputWSDLMode <mode>
生成するWSDLの種類を指定します。以下の値を指定することができます:

-L, --locationImport <url>
実装WSDLを生成する際のインタフェースWSDLの場所を指定するために使用します。

-N, --namespaceImpl <namespace>
実装WSDLの名前空間です。

-O, --outputImpl <WSDL file>
このオプションで、出力される実装WSDLファイルの名前を指定します。指定された場合、Java2WSDLはインタフェースWSDLと実装WSDLを生成します。このオプションが使用されると、-wオプションは無視されます。

-i, --implClass <impl-class>
実装クラスファイル内に有用な情報が存在する場合があります。このオプションを使用して、実装クラスを指定することができます。

-x, --exclude <list>
wsdlファイルから除外するメソッドのリストです。

-y, --style <argument>
WSDL文書の書式です: RPC、DOCUMENT、または、WRAPPEDです。RPCの場合、rpc/エンコードされたwsdlが生成されます。DOCUMENTの場合、文書/リテラルwsdlが生成されます。WRAPPEDの場合、ラップされた文書/リテラルwsdlが生成されます。

-c, --stopClasses <list>
Java2WSDLによる継承検索を行なわないクラスのリストです。

-T, --typeMappingVersion <version>
デフォルトの型マッピングレジストリを選択します。1.1、または、1.2です。

-A, --soapAction <argument>
操作soapActionフィールドの値です。DEFAULT、OPERATION、または、NONEをとることができます。OPERATIONにより、soapActionは強制的にその操作の名前になります。DEFAULTにより、soapActionは操作のメタデータ(通常"")に従うよう設定されます。NONEによりsoapActionは強制的に""になります。デフォルトは、DEFAULTです。

-y, --style <argument>
WSDL文書の書式です: RPC、DOCUMENT、または、WRAPPEDです。RPCの場合、rpc/エンコードされたwsdlが生成されます。DOCUMENTの場合、文書/リテラルwsdlが生成されます。WRAPPEDの場合、ラップされた文書/リテラルwsdlが生成されます。

配備(WSDD)リファレンス

注意: この節で説明する要素の全てはWSDD名前空間、すなわち、"http://xml.apache.org/axis/wsdd/"です。
<deployment>
Axisエンジンに対し、これが配備であることを通知する配備文書のルート要素です。配備文書は、完全なエンジンの設定、あるいは、実際にエンジンに配備されるコンポーネントの集合で表します。
 
<undeployment>
Axisエンジンに対し、これが配備を元に戻すことを通知する配備文書のルート要素です。配備を元に戻すことは、…の時にのみ有用です。(訳注:…部分は原文の欠落です。)
 
<handler [name="name"] type="type"/>
<deployment>、もしくは、<undeployment>の内側、<chain><requestFlow>、もしくは、<responseFlow>の内側の最上位に属します。ハンドラを定義し、そのハンドラの型を指定します。"型"は、事前に定義された別のハンドラの名前、または、"java:class.name"という形のQNameのいずれかです。省略可能な"name"属性により、その配備の別の所でこのハンドラ定義を参照することができます。それぞれが配備されるハンドラへのオプションを提供する<option name="name" value="value"> 要素を任意の数持つことができます。
 
<service name="name" provider="provider" >
Axisサービスを配備/配備を元に戻します。これは最も複雑なWSDDタグですので、少し長めに説明します。

次のようにオプションを指定することができます: <parameter name="name" value="value"/>。そして、一般的なものには以下のオプションがあります:


サービスのプロバイダの前もしくは後に呼び出されるハンドラを定義する場合、<requestFlow>、および、<responseFlow>下位要素を使用して実現することができます。これら要素は、どちらも<service>要素の内側に指定することができ、これらのセマンティクスは、後述の<chain>要素と同一です。言い替えれば、これらは、<handler>、および、<chain>要素を含み、それらを指定した順番で呼び出します。

例:
<service name="test">
  <parameter name="className" value="test.Implementation"/>
  <parameter name="allowedMethods" value="*"/>
  <namespace>http://testservice/</namespace>
  <requestFlow> <!-- Run these before processing the request -->
    <handler type="java:MyHandlerClass"/>
    <handler type="somethingIDefinedPreviously"/>
  </requestFlow>
</service>
メタデータ は、serviceの内部の<operation>タグを使用して、サービス内の特定の操作について決定されます。これにより、あるメソッドのJavaパラメータ名を特定のXML名にマッピングし、パラメータのパラメータモードを指定し、特定のXML名を特定の操作にマッピングすることが可能になります。

<operation name="method">
</operation>
 
<chain name="name">
<subelement/>...
</chain>
チェインを定義します。チェインが呼び出された際、リスト内の各ハンドラ(つまり配備されたハンドラ名)が順番にinvoke()されます。これにより、共通に使用される機能を"モジュール"として構築することができます。チェイン内の子要素は、<handler>、もしくは、<chain>です。<chain>内部の<handler>は、次のようにJavaクラスによって定義することもできます:
<chain name="myChain">
  <handler type="java:org.apache.axis.handlers.LogHandler"/>
</chain>
もしくは、以下のように別のハンドラ定義の名前を参照するハンドラの"type"を使用して、定義済みの<handlers>を参照することもできます:
<handler name="logger" type="java:org.apache.axis.handlers.LogHandler"/>
<chain name="myChain"/>
<handler type="logger"/>
</chain>
 
<transport name="name">
サーバ側のトランスポートを定義します。サーバトランスポートは、要求が届いた時に呼び出されます。サーバトランスポートは、<requestFlow>、および、<responseFlow>要素の両方、もしくは、片方を定義することができます。それぞれで、要求(つまり、入力メッセージ)部分の処理もしくは応答(つまり、出力メッセージ)部分の処理で呼び出されるハンドラ/チェインを指定します(この関数は上記の<service>要素と全く同じように動作します)。通常、トランスポートの要求/応答フローにおけるハンドラは、プロトコルヘッダの解析などといったトランスポート固有の機能を実装します。
 
<transport name="name" pivot="handler type" >
SOAPメッセージを送信する際に呼び出されるクライアント側のトランスポートを定義します。"pivot"属性は、ハンドラをこのトランスポートにおける実際のセンダとして使用することを指定します(例えば、HTTPSender)。要求フローと応答フローは、要求(つまり出力メッセージ)、もしくは、応答(つまり入力メッセージ)の処理を行なうサーバ側のトランスポートとして指定することができます。
 
<typeMapping qname="ns:localName" classname="classname" serializer="classname" deserializer="classname"/>
各typeMappingは、指定されたシリアライザとデシリアライザを使用して、XMLで修飾された名前とJavaクラスの間のマッピングを行ないます。
 
<beanMapping qname="ns:localName" classname="classname">
単純化された型マッピングです。これは定義済みのシリアライザとデシリアライザを使用してJavaBeanをエンコードあるいはデコードします。"classname"で指定されたクラスはJavaBean標準パターンであるget/setアクセッサに従わなければなりません。

設定済みのAxisコンポーネントリファレンス

サーバ側:

LogHandler
LogHandlerは、呼び出された時に単純にメッセージをログに記録します。
EchoHandler
EchoHandlerは、要求メッセージを応答メッセージにコピーします。
HTTPAuth
HTTPAuthHandlerは、HTTP特有の認証情報(現時点ではベーシック認証のみ)をとり、それを汎用的なMessageContextプロパティのusernameとpasswordに変換します。
SimpleAuthenticationHandler
SimpleAuthenticationハンドラは、MessageContextをSecurityProvider(org.apache.axis.securityを参照)に渡し、このSecurityProviderが必要とする情報(現時点ではusernameとpasswordのみ)を使用してユーザを認証します。
SimpleAuthorizationHandler
本ハンドラは、通常はSimpleAuthenticationHandlerと共に配備され(この組合せのためだけに"authChecks"というチェインが定義されています)、現在の認証済みユーザが対象サービスにおいて許可されたロールの1つを満足するかどうかを確認します。アクセスが許されない場合は、Faultがスローされます。
URLMapper
URLMapperは、HTTP特有のハンドラで、通常はHTTPトランスポートチェイン上にあります(デフォルトで配備されます)。これは、URLに基づいたサービスの割り振り機能を提供します。例えば、このハンドラによってhttp://localhost:8080/axis/services/MyService?wsdl といったURLが動作することができます。
 
RPCDispatcher
RPCDispatcherは、全てのRPCサービスのピボット位置です。これは以下のオプションを受け付けます:
className = 呼び出されるバックエンドオブジェクトのクラス
methodName = Webサービスとして公開されるメソッドのスペース区切りのリストです。"*"という特殊な値は、そのクラスの全てのpublicメソッドとなります。
MsgDispatcher
MSgDispatcherは、全てのメッセージサービスのピボット位置です。これは、以下のオプションを受け付けます:
className = 呼び出されるバックエンドオブジェクトのクラス
methodName = Webサービスとして公開されるメソッドのスペース区切りのリストです。"*"という特殊な値は、そのクラスの全てのpublicメソッドとなります。
LocalResponder
LocalResponderは、ローカル呼び出しから返される応答メッセージをStringにシリアライズするハンドラです。デフォルトでは、サーバのローカルなトランスポート応答チェイン上にあり、サーバの型マッピングの文脈上で発生するメッセージのStringへのシリアライズを確実に実施します。

クライアント側:

HTTPSender
要求メッセージをリモートサーバにHTTP経由で送信し、応答メッセージを収集するハンドラです。
LocalSender
"ローカルな"AxisServerに要求メッセージを送信するハンドラであり、それを処理し、応答メッセージを返します。これは試験時に非常に便利で、デフォルトで"local"トランスポートにマッピングされます。従って、例えば以下のような形でAdminClientを試験することができます。
% java org.apache.axis.client.AdminClient -llocal:// list