Seasar DI Container with AOP

S2Axis2 クイックリファレンス

本ドキュメントはS2Axis2について記述しています。

目次

diconファイル

s2axis2.dicon

S2Axis2が提供するdiconファイルです。s2axis2-x.x.x.jarファイルの中に含まれているので、ロケーションを気にすることなくincludeすることができます。サーバが側では必須となります。

<meta>要素

* C:クライアント/S:サーバ

<components>要素の下

名前 C S 内容 説明
axis-deploy × 文字列 内容で指定された文字列をパス名とするservice.xmlファイルをAxisにデプロイします。ファイルのパス名はクラスパスからの相対パスで指定します。
service.xmlファイルの中で指定されたサービスやハンドラのインスタンス管理はAxisによって行われます。

<component>要素の下

プロパティ C S 内容 説明
axis-service × 親要素で記述されたコンポーネントをサービスとしてAxisにデプロイします。
コンポーネントがメソッドの定義されたインタフェースを実装している場合は、そのメソッドが公開されます。インタフェースを実装していなければ、java.lang.Object型で定義されているものを除いたpublicメソッドが公開されます。
ServiceDef型のコンポーネント 親要素で記述されたコンポーネントをサービスとしてAxisにデプロイします。
詳細はServiceDefの説明を参照してください。

スコープ

S2コンテナが管理コンポーネントのスコープ(diconファイルで指定するinstance属性)と、Axis2が管理するスコープの対応は以下のとおりです。

S2のinstance属性 Axis2のスコープ
singleton application
application application
session transport session
request request
prototype request

コンポーネント

org.seasar.remoting.axis2.ServiceDef

サーバ側で使用するコンポーネントで、<meta>要素の内容に設定されます。サービスとして公開するコンポーネントの詳細を指定するために使われます。

プロパティ

プロパティ 説明
serviceType Class 公開するサービスの型を指定します。特定のインタフェース型を指定することで、不要なメソッドが公開されることを防ぐことが出来ます。
省略するとコンポーネントの型になります。ただし、コンポーネントがメソッドの定義されたインタフェースを一つだけ実装している場合には、そのインタフェース型になります。
targetNamespace String targetNamespace を指定します。省略した場合は、デフォルト値の"http://ws.apache.org/axis2"が使用されます。
schemaNamespace String スキーマの名前空間を指定します。省略した場合は、サービスのパッケージ名を利用した値が使用されます。
excludeOperations Stringのリスト 公開しないメソッドの名前を指定します。String型のリストとして指定します。

メソッド

メソッド 説明
addMessageReceiver サービスが使用する、デフォルトのMessageReciverを指定します。以下の引数を指定します。
  1. MEP(Message Exchange Pattern)
  2. org.apache.axis2.engine.MessageReceiverを継承したコンポーネント
addParameter サービスが使用するパラメータを指定します。以下の引数を指定します。
  1. パラメータ名
  2. パラメータ値

diconファイルの定義例

<component name="Echo" class="org.seasar.remoting.axis2.examples.ex01.EchoImpl">
    <meta name="axis-service">
        <component class="org.seasar.remoting.axis2.ServiceDef">
            <property name="serviceType">@org.seasar.remoting.axis2.examples.ex01.Echo@class</property>
            <property name="targetNamespace">"http://ws.apache.org/axis2"</property>
            <property name="schemaNamespace">"http://examples/xsd"</property>
            <property name="excludeOperations">{"method1", "method2"}</property>
            
            <initMethod name="addMessageReceiver">
                <arg>"http://www.w3.org/2004/08/wsdl/in-out"</arg>
                <arg>new org.apache.axis2.rpc.receivers.RPCMessageReceiver()</arg>
            </initMethod>
            <initMethod name="addMessageReceiver">
                <arg>"http://www.w3.org/2004/08/wsdl/in-only"</arg>
                <arg>new org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver()</arg>
            </initMethod>
        </component>
    </meta>
</component>

org.seasar.remoting.axis.connector.AbstractAxisConnector

クライアント側で使用するコンポーネントで、Web サービスへの動的な接続に使用される抽象クラスです。 このクラスを継承して、独自のConnectorを作成することも可能です。

プロパティ

プロパティ 説明
properties java.util.Properties Axis2で利用するシステムプロパティを指定します。 Axis2のリポジトリや設定ファイルであるaxis2.xmlのパス指定に利用します。
options org.apache.axis2.client.Options Axis2のクライアントで指定するオプションを指定します。
baseURL String 接続するサービスの基礎になるURLを指定します。
このURLと、S2RemotinのRemotingInterceptorをアスペクトとして設定されたプロキシコンポーネントの名前 (<component>要素のname属性の値) を連結したURLが、接続するサービスのURLとなります。
timeout int サービス呼び出し時のタイムアウト値(ミリ秒)を指定します。

org.seasar.remoting.common.interceptor.RemotingInterceptor

S2Remotingが提供するコンポーネントです。
クライアント側でWebサービスをコンポーネントとして使用する場合に、このコンポーネントをアスペクトとして使用します。

org.seasar.remoting.axis2.client.S2AxisClientContext

クライアント側で、動的にパラメータを指定するために使われます。

プロパティ

プロパティ 説明
endpointURL String サービスに接続するURLです。nullを指定した場合は、dicon定義で指定されたものが利用されます。

アノテーション(REST関連)

REST形式で、サービスにアクセスする際に必要となるアノテーションです。このアノテーションは、 将来的にJAX-RS(JSR311)に置き換わる可能性があります。

org.seasar.remoting.axis2.annotation.RestUriTemplate

適用対象
サービスのインタフェース

プロパティ デフォルト値 説明
value サービスのインタフェース名 公開されるサービスのリソース名(=サービス名)です。

org.seasar.remoting.axis2.annotation.RestMethod

適用対象
サービスのメソッド

プロパティ デフォルト値 説明
name サービスのメソッド名 URIに付加されるサービスのメソッド名です。
httpMethod サービスのメソッド名から自動判別 リクエストで指定されるHTTPメソッドです。通常は、サービスのメソッド名から自動判別されますが、明示的に指定したい場合に利用します。
contentType サービスのメソッド名から自動判別 リクエストのHTTPヘッダで指定されるContent-Typeです。通常は、サービスのメソッド名から自動判別されますが、明示的に指定したい場合に利用します。

org.seasar.remoting.axis2.annotation.RestUriParam

適用対象
サービスのメソッド引数がDTOの場合はDTOのプロパティ、シンプルタイプ(プリミティブ型およびそのラッパ型、java.util.Date/java.util.Calendarの日付型)のパラメータの場合は引数自体

プロパティ デフォルト値 説明
value 引数名 リクエストで指定されるパラメータ名です。サービスの引数がシンプルタイプのパラメータの場合は、必ず指定する必要があります。