ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Service Bus開発者ガイド
11gリリース1 (11.1.1.7)
B61435-08
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次

前
 
次
 

29 JEJBトランスポート

この章では、JEJBトランスポートの概要と、サービスでの使用および構成方法について説明します。

この章の内容は次のとおりです。

29.1 JEJBトランスポートについて

JEJBトランスポートを使用すると、Oracle Service Busを介してPlain Old Java Object (POJO)を渡すことができます。たとえば、EJBを使用してリモートEJB操作または非EJBサービスを呼び出すことができます。または、非EJBリクエストでEJB操作を呼び出すことができます。詳しい使用例を29.3項「使用例」で説明します。

J2EEクライアントに対して、JEJBプロキシ・サービスのパイプラインはステートレス・セッションBeanのように見えます。JEJBプロキシ・サービスは、メソッド引数を受け取ると、そのXML表現をパイプラインの$body変数に渡します。POJO引数は、XMLフラグメントとして表されます。このXMLフラグメントには、パイプライン内のオブジェクト・リポジトリに格納されている実際のPOJOの場所が含まれます。XML引数は、値または参照(オブジェクト・リポジトリに格納される実際のオブジェクトを参照する)として渡すことができます。プリミティブ型は常に値として渡されます。

メッセージ・フローでのPOJOの詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のbody変数のJavaコンテンツに関する項およびJavaコールアウトとPOJOを使用するExtensibilityに関する項を参照してください。

JEJBトランスポートは常に非同期であり、パターンはリクエスト/レスポンスです。

デプロイメントに際して、Oracle Service BusはJEJBプロキシ・サービスをエンタープライズ・アーカイブ(EAR)として自動的にパッケージ化します。

29.1.1 JEJBトランスポートとEJBトランスポートの相違点

EJBトランスポート(ビジネス・サービスのみに対応)は、Java Web Services (JWS)フレームワークを介してリモートEJBをよびだします。JEJBトランスポート(リモートEJBや外部サービスをPOJOを使用して呼び出すことができる)は、RMIシリアライゼーション/デシリアライゼーション・サイクルを使用して、Oracle Service Busを介してターゲットEJBメソッドにPOJOを直接渡します。

EJBトランスポートには「トランザクションをサポートする」フラグがありますが、すべてのOracle Service Busプロキシ・サービスでトランザクションのサポートが提供されるため、JEJBビジネス・サービスではトランザクション・オプションが必要ありません。

29.1.2 環境値

JEJBトランスポートでは、JEJBサービスのために次の環境値が格納されています。

  • サービスURI

  • ワーク・マネージャ

  • UDDI自動パブリッシュ(プロキシ・サービス)

  • サービス・アカウント(ビジネス・サービス)

29.1.3 WSDLの生成

プロキシ・サービスとビジネス・サービスのために、JEJBトランスポートは、パイプラインに渡すメッセージを記述するためだけに使用されるリテラル・エンコーディングのドキュメント形式WSDLを生成します。このWSDL形式を使用すると、Oracle Service BusのWSDL機能(操作ごとの監視など)を利用できます。

表29-1で説明するように、「値でXMLBeansを渡す」オプションを使用してPOJO引数をメッセージにインライン指定すると、WSDLに定義されるメッセージ構造は、実行時の実際のパイプライン・メッセージと異なる可能性があります。

XMLBeansタイプ・パラメータに対するパイプライン・メッセージ形式の動作は次のとおりです。

プロキシ・サービス

  • リクエスト・パラメータ: 「値でXMLBeansを渡す」がtrueの場合、パイプライン・メッセージのリクエスト・パラメータはインラインXml Objectを参照します。これ以外の場合は、java-content refを参照します。

  • レスポンス・パラメータ: レスポンスはインラインXML Objectまたはjava-content refを参照します。レスポンスはビジネス・サービスのいずれか形式に基づくためです。

ビジネス・サービス

  • レスポンス・パラメータ: 「値でXMLBeansを渡す」がtrueの場合、パイプライン・メッセージの戻りパラメータはインラインXml Objectを参照します。そうでない場合は、java-content refを参照します。

  • リクエスト・パラメータ: パイプライン・メッセージのリクエスト・メソッド・パラメータは、インラインXML Objectまたはjava-content refを参照できます。リクエストはプロキシ・サービスのいずれかの形式の基づくためです。

29.1.4 エラー処理

ここでは、JEJBトランスポートがどのようにエラーを処理するかを説明します。

29.1.4.1 レスポンスでの例外の伝播

JEJBトランスポートは、リクエスト例外をオブジェクト・リポジトリに格納し、$fault変数を介してJEJBプロキシ・サービスに伝播します。$faultには、<java-exception> <java-content ref="jcid"/> </java-exception>要素内の例外インスタンスの場所が含まれます。ここで、jcidはオブジェクト・リポジトリに格納されている例外インスタンスへの参照です。

JEJBプロキシ・サービスでユーザー例外をクライアントに伝播するには、レスポンスが次のいずれかの形式であることが必要です。

  • env:Envelope/env:Fault/detail/mc:java-exception

    次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

    <detail>
        <mc:java-exception>
            <mc:java-content ref="jcid"/>
        </mc:java-exception>
        ...
    </detail>
    
  • env:Envelope/env:Fault/detail/mc:fault/mc:java-exception

    次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

    <detail>
        <mc:fault xmlns:mc="http://www.bea.com/wli/sb/context">
            <mc:java-exception>
                <mc:java-content ref="jcid"/>
            </mc:java-exception>
            ...
        </mc:fault>
    </detail>
    
  • env:Envelope/ env:Fault/detail/mc:fault/mc:details/con1:ReceivedFaultDetail/con1:detail/mc:java-exception

    次の形式で指定します。jcidはオブジェクト・リポジトリないのエラーへの参照です。

    <con:details>
        <con1:ReceivedFaultDetail  xmlns:con1="http://www.bea.com/wli/sb/stages/transform/config">
            <con1:faultcode>soapenv:Server</con1:faultcode>
            <con1:faultstring>checkExceptionConversion</con1:faultstring>
            <con1:detail>
                <mc:java-exception>
                    <mc:java-content ref="jcid"/>
                </mc:java-exception>
            </con1:detail>
        </con1:ReceivedFaultDetail>
    </con:details>
    

独自の例外を生成して呼出し元に戻す場合は、プロキシ・サービス・パイプラインのJavaコールアウトで例外を生成します。

29.1.4.1.1 Javaコールアウトおよびサービス・コールアウトの例外

失敗時の返信のためにエラー・ハンドラでJavaコールアウトまたはサービス・コールアウトを構成する場合、前に説明したフォルト構文のいずれかに従って$bodyを指定する必要があります。

29.1.4.2 アプリケーション・エラーおよび接続エラー

ここでは、JEJBトランスポートによってアプリケーション・エラーと接続エラーがスローされる条件を説明します。これらのエラーは、サービスの再試行構成の対象です。

29.1.4.2.1 接続エラー

JEJBトランスポートでは、次の場合に接続エラーがスローされます。

  • リモート・コール時に発生したEJBをルックアップしている際のNamingExceptions。

  • 実行時例外またはリモート例外がスローされるが、継続中のトランザクションが「ロールバックのみ」に設定されておらず、EJBコンテナの呼出し前にエラーが発生したことがわかる状況。

29.1.4.2.2 アプリケーション・エラー

JEJBトランスポートでは、次の場合にアプリケーション・エラーがスローされます。

  • 実行時例外またはリモート例外がスローされ、継続中のトランザクションが(一般的にEJBコンテナによって)「ロールバックのみ」に設定されており、EJBコンテナが影響を受け、EJBコンテナまたはEJBそのもののいずれかで致命的なエラーが発生したことを意味する状況。

  • EJBビジネス・インタフェースで定義されているビジネス例外。

  • XMLのパラメータの誤ったエンコーディングによる例外。

29.2 JEJBサービスの作成と構成

ここでは、JEJBのプロキシ・サービスとビジネス・サービスの作成および構成の手順を説明します。

29.2.1 クライアントEJB JARの作成とパッケージ化

ここでは、JEJBのプロキシ・サービスとビジネス・サービスに関して、EJBの呼出しと操作を表すPOJOの作成とパッケージ化のガイドラインを示します。

  • タイプjava.io.Serializableのインタフェースを定義し、必要なヘルパー・クラス(ビジネス例外など)を組み込みます。このインタフェースが29.4.1項「JEJBのエンドポイントURI」で説明するRMIプロトコルの1つに対して有効である場合、またはJMSメッセージに対して有効である場合(EJBを呼び出すためにJMSを使用しているとき)、クラスを拡張する必要はありません。


    注意:

    必須ではありませんが、次のようにできます。

    • インタフェースを、EJB 2.1仕様で定義されているリモート・インタフェースにします。

      または

    • javax.ejb.Remoteアノテーションでメソッドに注釈を付け、EJB 3.0ビジネス・インタフェースとして指定します。

    単純なPOJOインタフェース(EJBリモート・インタフェース以外)またはjavax.ejb.Remoteアノテーションを含むインタフェースの場合、JEJBトランスポート・プロバイダはJEJBプロキシ・サービスから3.0 EJBインタフェースを生成します。リモート・インタフェースの場合、JEJBトランスポート・プロバイダはJEJBプロキシ・サービスから2.1 EJBインタフェースを生成します。


  • 引数として受信されるオブジェクトは、Javaコールアウト・アーカイブ・リソースのいずれかの必須クラスに渡される必要があります。

  • すべてのタイプのすべての配列はPOJOとみなされます。

  • Javaコールアウトをサポートするアーカイブ・リソースとしてアップロードされるJARを複製せずに、不必要なシリアライゼーション/デシリアライゼーション・サイクルを回避します。すべてのアーカイブ・リソース・クラスを1つのアーカイブJARにパッケージ化して、複数のJavaコールアウトがオブジェクトのシリアライゼーション/デシリアライゼーションを行わないようにします。

  • インタフェースと依存クラスを1つの「クライアント」JARにパッケージ化し、そのJARをOracle Service Busにインポートします。これはサービスを構成するときに選択するクライアントJARですが、スタブを含まないため、技術的には完全に展開されたEJBクライアントではありません。JEJBプロキシ・サービスが作成されてアクティブ化されるまでは、実際のBean (Oracle WebLogic Serverスタブ生成)は存在しません。

29.2.2 JNDIプロバイダ・リソースの登録(ビジネス・サービス)

JNDIプロバイダ・リソースでは、リモートOracle WebLogic ServerドメインのJNDIツリーにバインドされているEJBスタブを取得するために使用される通信プロトコルおよびセキュリティ資格証明を指定できます。(JNDIツリーの設定方法の詳細は、『Oracle Fusion Middleware Oracle WebLogic Server JNDIのプログラミング』を参照してください。)

通常、ターゲットEJBはOracle Service Busと同じドメイン内にはありません。この場合、JNDIプロバイダ・リソースを登録する必要があります。EJBが同じドメイン内にある場合、プロバイダを定義して資格証明を指定し、スタブ・キャッシングを利用できます。ただし、これは省略可能です。

JNDIプロバイダには、リモート接続とEJBスタブのための高性能なキャッシング・メカニズムがあります。Oracle Service BusからOracle WebLogic Serverドメインへの推奨される通信プロトコルは、t3またはt3sです。メッセージがファイアウォールを通過する必要がある場合は、HTTPトンネリングを使用できます。


注意:

Oracle WebLogic Serverの外部JNDIプロバイダを使用することは可能ですが、使用しないことをお薦めします。

このトランスポートでは、双方向SSLまたはクライアント証明書によるJNDIツリーのルックアップまたはEJBのメソッドへのアクセスをサポートしません。


29.2.2.1 JNDIプロバイダの追加

Oracle Service BusでのJNDIプロバイダの登録と構成の詳細は、4.8項「JNDIプロバイダ」を参照してください。

29.2.3 JEJBプロキシ・サービスまたはビジネス・サービスの構成

ここでは、JEJBのプロキシ・サービスまたはビジネス・サービスを構成する手順の概要を説明します。29.3項「使用例」のシナリオによって、JEJBのプロキシ・サービスとビジネス・サービスをいつ作成する必要があるかがわかります。各使用例では、一般的な実装ガイドラインが示されます。

  1. サービスの「全般」ページでトランスポート型オプションを選択します。

  2. 「トランスポート」ページで次の操作を実行します。

    1. jejbプロトコルを選択します。

    2. 29.4.1項「JEJBのエンドポイントURI」の説明に従って、エンドポイントURIの情報を入力します。

    3. 4.3.6項「プロキシ・サービスの「トランスポート構成」ページ」および4.2.4項「ビジネス・サービスの「トランスポート構成」ページ」の説明に従って、他のグローバル・トランスポート・オプションを設定します。

  3. 29.4.2項「JEJBトランスポート構成(プロキシ・サービス)」および29.4.3項「JEJBトランスポート構成(ビジネス・サービス)」の説明に従って、JEJBトランスポート・ページでサービスのトランスポート・オプションを構成します。

  4. 4.3項「プロキシ・サービスの構成」および4.2項「ビジネス・サービスの構成」の説明に従って、サービスのその他のオプションを設定します。

  5. 実装のガイドラインは、29.3項「使用例」の特定の使用例を参照してください。

29.3 使用例

プロキシ・サービスとビジネス・サービスでのJEJBトランスポートの使用がサポートされている使用例を次に示します。各使用例には実装のガイドラインが含まれており、29.2.3項「JEJBプロキシ・サービスまたはビジネス・サービスの構成」の全般的なサービス構成と組み合せて使用できます。

29.3.1 外部サービスを呼び出すEJB

図29-1に示すように、Oracle Service Busを介してEJBで外部サービスを呼び出すことができます。

図29-1 外部サービスを呼び出すEJB

図29-1の説明が続きます
「図29-1 外部サービスを呼び出すEJB」の説明

図29-1では、JEJBプロキシ・サービスはEJBクライアント・インタフェースに対してステートレス・セッションBeanとして機能します。プロキシ・サービスのJEJBトランスポート・プロバイダは、クライアントJARとパイプラインのリモート/ビジネス・インタフェースからステートレス・セッションEJBを生成します。次に、エンドポイントURIに指定されたJNDIアドレスにEARとしてデプロイします。


注意:

JNDIエントリが変更されないように保護するポリシーをインストールしてください。


EJBは、プロキシ・サービスEJBクライアントJARによって提供されるリモート・インタフェースをコールし、トランザクションとセキュリティの詳細をプロキシ・サービスに渡します。

EJBクライアント・インタフェースはPOJOであり、その引数はJEJBトランスポート・プロバイダがWSDLとして表し、プロキシ・サービスの$body変数にXMLとして渡します。$bodyコンテンツのイントロスペクションを実行して、メッセージを必要な形式に変換してから、ビジネス・サービスに渡し、外部サービスを呼び出すことができます。実際のPOJOはオブジェクト・リポジトリに格納され、$bodyのXMLが<java-content ref="">要素で参照します。

レスポンスでは、呼出し元のEJBメソッドに渡さすために、レスポンスをEJB戻り形式に変換するJavaコールアウトを提供します。プロキシ・サービスの生成されたWSDLを表示して、予期されるメッセージ形式を確認します。生成されたWSDLを表示する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソース詳細の表示に関する項を参照してください。


注意:

プロキシ・サービスのパイプラインで、Javaコールアウト、別のプロキシ・サービス(サービス・コールアウトまたはパブリッシュ・アクションを使用)またはビジネス・サービスにPOJO引数を渡すことができます。


29.3.2 EJBを呼び出す非EJBクライアント

図29-2に示すように、Oracle Service Busを介して非EJBクライアントでEJBを呼び出すことができます。

図29-2 EJBを呼び出す非EJBクライアント

図29-2の説明が続きます
「図29-2 EJBを呼び出す非EJBクライアント」の説明

図29-2では、非EJBクライアントが、リクエストと一致するトランスポートで構成されたプロキシ・サービス(たとえば、JMSトピックまたはキューで呼び出すJMSプロキシ・サービス)を呼び出します。

リクエストでJavaコールアウト(リクエストを$body変数のEJBコールのXML表現に変換する)を構成します。操作を$operation変数に設定します。ビジネス・サービスの生成されたWSDLを表示して、予期されるメッセージ形式を確認します。生成されたWSDLを表示する方法の詳細は、『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のリソース詳細の表示に関する項を参照してください。

JEJBビジネス・サービスは、生成されたWSDLを使用して着信メッセージをEJBリモート・インタフェースにマップし、リモートEJBメソッドを直接呼び出します。

29.3.3 EJBを呼び出すEJB

図29-3に示すように、Oracle Service Busを介してEJBでEJBを呼び出すことができます。

図29-3 EJBを呼び出すEJB

図29-3の説明が続きます
「図29-3 EJBを呼び出すEJB」

図29-3では、EJBコールはプロキシ・サービスとビジネス・サービスを介して渡され、別のEJBメソッドを呼び出します。Oracle Service Busの外部に直接RMIコールを行うかわりに、このアーキテクチャではOracle Service Busの機能(メッセージ・ルーティング、UDDI統合、アラート、監視、レポート、結果キャッシングなど)を利用します。

プロキシ・サービスのJEJBトランスポート・プロバイダは、クライアントJARとパイプラインのリモート/ビジネス・インタフェースからステートレス・セッションEJBを生成します。次に、エンドポイントURIに指定されたJNDIアドレスにEARとしてデプロイします。

実行時に、JEJBプロキシ・サービスはPOJOをメソッドの引数として受け取ってオブジェクト・リポジトリに格納し、生成されたプロキシ・サービスWSDLに基づいて、プロキシ・サービスの$body変数にPOJOのXML表現を生成します。プロキシ・サービスはメッセージをビジネス・サービスに渡します。ビジネス・サービスは、生成されたWSDLを使用してメッセージをリモート・インタフェースにマップし、リモート・メソッドを直接呼び出します。

パイプライン・ロジックをJEJBトランスポートと独立しておきたい場合は、メッセージをJEJBプロキシ・サービスからローカル・プロキシ・サービスにルーティングできます。ローカル・プロキシ・サービスがパイプライン・ロジックを実行してから、メッセージをJEJBビジネス・サービスに送ることができます。このパターンを使用する場合は、ローカル・プロキシのタイプがWSDL(ビジネス・サービス操作対応)であり、Javaオブジェクトにアクセスできることを確認してください。

29.4 トランスポート構成のリファレンス

ここでは、プロキシ・サービスとビジネス・サービスでのエンドポイントURIの作成およびJEJBトランスポートの構成について詳しく説明します。

29.4.1 JEJBのエンドポイントURI

JEJBのプロキシ・サービスとビジネス・サービスのエンドポイントURIの形式を次に示します。


注意:

JEJBサービスでは同じ場所に配置した呼出しはサポートされません。


29.4.1.1 プロキシ・サービスのJEJBエンドポイントURI

URL形式はejb_jndi_name.です。JEJBプロキシ・サービスに対して構成されるURIは、JEJBトランスポートによって生成されるステートレス・セッションBeanをクライアントJARのリモート/ビジネス・インタフェースで探すためのグローバルJNDI名になります。


注意:

EJB 3.0の場合、ejb_jndi_nameは生成されるBeanの@javax.ejb.Stateless注釈のmappedName属性です。生成されるEJBサービスのルックアップJNDI名の接尾辞は#interface_classであり、これはビジネス・インタフェースの完全修飾名です。


次のようにJEJBプロキシ・サービスにアクセスできます。

  • EJB 2.1 - protocol://host:port/ejb_jndi_name

  • EJB 3.0 - protocol://host:port/ejb_jndi_name#interface_class

protocolは次のRMIプロトコルのいずれかです。

  • iiop/iiops -サーバーにとらわれない汎用プロトコルです。

  • t3 / t3s - Oracle WebLogic Serverで使用されます。

  • http / https -トンネリングおよびOracle WebLogic Serverで使用します。

例:

  • EJB 2.1 - t3://localhost:7001/osb.jejb.myJejbProxy

  • EJB 3.0 - t3://localhost:7001/osb.jejb.myJejbProxy#com.example.MyEjb3

29.4.1.2 ビジネス・サービスのJEJBエンドポイントURI

JEJBのビジネス・サービスのエンドポイントURIの形式を次に示します。

jejb:jndi_provider_name:ejb_jndi_name

jndi_provider_nameはリモートJNDIコンテキストです。

ejb_jndi_nameはリモートEJBのJNDI名です。

例:

  • EJB 2.1 - jejb:myProvider:osb.jejb.myJejbBiz21

  • EJB 3.0 - jejb:myProvider:myBiz31#osb.jejb.myJejbBiz

    ここで、#osb.jejb.myJejbBizは完全修飾されたビジネス・インタフェースです。


注意:

EJBがIBM WebSphere上で実行中の場合は、ejb_jndi_nameを次の形式にしてください。

cell/nodes/node_name/servers/server_name/ejb_jndi_name

または

cell/clusters/cluster_name/ejb_jndi_name

詳細は次の場所にあるIBM WebSphereのドキュメントに記述されています。http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.nd.iseries.doc/info/iseriesnd/ae/rnam_example_prop3.html


29.4.2 JEJBトランスポート構成(プロキシ・サービス)

このページでは、JEJB転送プロトコルを使用するプロキシ・サービスのトランスポート設定を構成できます。

表29-1に、JEJBトランスポートを使用するビジネス・サービスのトランスポート固有の構成オプションを示します。

表29-1 プロキシ・サービスのためのJEJBトランスポート構成

オプション 説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

  • 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

  • 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

詳細は、29.1.3項「WSDLの生成」を参照してください。

トランザクション属性

トランザクションを処理するために次のいずれかのオプションを選択します。

  • 「Supports」 - トランスポートは着信トランザクションを受け入れます。サービス品質は、操作がトランザクションで呼び出される場合は「必ず1回」、操作がトランザクション外部から呼び出される場合は「ベスト・エフォート」です。

  • 「Required」 - トランスポートは着信トランザクションを受け入れます。発信トランザクションが存在しない場合、トランスポートが発信トランザクションを開始します。サービス品質は「必ず1回」です。

  • 「RequiresNew」 - トランスポートは常に新しいトランザクションを開始し、進行中のトランザクションを中断します。サービス品質は「必ず1回」です。

  • 「Mandatory」 - トランスポートは既存のトランザクションのメソッドを呼び出します。サービス品質は「必ず1回」です。

  • 「NotSupported」 - トランスポートは既存のトランザクションを中断し、呼出し時に再開します。サービス品質は「ベスト・エフォート」です。

  • 「Never」 - トランスポートはトランザクションのメソッドを呼び出しません。サービス品質は「ベスト・エフォート」です。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモートEJBのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - クライアントJARによって設定されるオプションから必須のEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。


29.4.3 JEJBトランスポート構成(ビジネス・サービス)

このページでは、JEJB転送プロトコルを使用するビジネス・サービスのトランスポート設定を構成できます。

表29-2に、JEJBトランスポートを使用するビジネス・サービスのトランスポート固有の構成オプションを示します。

表29-2 ビジネス・サービスのためのJEJBトランスポート構成

オプション 説明

ディスパッチ・ポリシー

このエンドポイントのディスパッチ・ポリシーに使用するOracle WebLogic Serverワーク・マネージャのインスタンスを選択します。デフォルトのワーク・マネージャは、他にワーク・マネージャがない場合に使用されます。

ワーク・マネージャの詳細は、次の説明を参照してください。

  • 『Oracle Fusion Middleware Oracle WebLogic Serverサーバー環境の構成』のワーク・マネージャを使用したスケジューリング済作業の最適化に関する項

  • 『Oracle Fusion Middleware Oracle Service Bus管理者ガイド』のOracle Service Busでのワーク・マネージャの使用に関する項

EJB仕様バージョン

リモートEJBインタフェースのEJBバージョンを選択します。

値でXMLBeansを渡す

トランスポートによってPOJO引数(XMLObject)のインラインXML表現を生成する場合は、このオプションを選択します。この引数のパラメータは、XQuery式でアクセスおよび操作できます。

注意: 値で渡されたXMLObjectの場合、型情報はインラインでは利用できません。このオプションを使用する場合、プロキシ・サービス・パイプラインのJavaコールアウトで型付きのXMLObjectを引数として渡すことはできません。

参照でPOJOを渡す場合は、このオプションを選択しないでください。こうすることでパフォーマンスも向上します。

詳細は、29.1.3項「WSDLの生成」を参照してください。

呼出し元のサブジェクトを渡す

「サービス・アカウント」を選択するかわりに、このオプションを選択して、Oracle Service BusがEJBを呼び出すときにプロキシ・サービスの認証済サブジェクトを渡すようにします。

サービス・アカウント

「参照」をクリックし、表示されるリストでJNDIサービス・アカウントを選択します。サービス・アカウントを指定しない場合は、匿名サブジェクトが使用されます。詳細は、4.19項「サービス・アカウント」を参照してください。

クライアントJar

「参照」をクリックし、表示されるリストからEJBクライアントJARリソースを選択します。クライアントJARには、リモート・サービスのリモートまたはビジネス・インタフェースが含まれます。クライアントJARは汎用アーカイブ・リソースとして登録されます。

ホーム・インタフェース

EJB 2.1専用 - JARによって挿入されるオプションから必要なEJBHomeインタフェースを選択します。

リモート・インタフェース

EJB 2.1のみ - このフィールドは、ホーム・インタフェースの構成に応じて、自動的に情報が表示されます。

ビジネス・インタフェース

EJB 3.0のみ - クライアントJARから、起動するビジネス・インタフェースを選択します。

対象ネームスペース

このフィールドにはJARからのピックアップされた情報が表示されます。

メソッド

必要なメソッドを選択します。「+」をクリックしてメソッドを展開すると、デフォルトのパラメータ値を編集できます。

任意のメソッドのデフォルトの操作名を変更できます。デフォルトでは、操作名はメソッド名です。EJBに同じ名前のメソッドが含まれている場合(オーバーロード)、一意になるように操作名を変更する必要があります。WSDLでは一意の操作名が必要です。


29.5 JEJBサービスのテスト

Oracle Service Busテスト・コンソールで、POJOを参照ではなく値で渡す(「Pass XMLBeans by value」オプション)JEJBサービスをテストできます。テスト・コンソールでサポートされるのは、プリミティブ、StringおよびXMLの引数のみです。トランスポートは、サポートされるPOJO引数とその値を、呼出しポイント(EJBメソッド)を指定するXMLとして渡します。

29.6 UDDIの統合

ここでは、JEJBプロキシ・サービスに関するUDDIのパブリッシュとインポートの詳細について説明します。

29.6.1 UDDIのパブリッシュ

JEJBプロキシ・サービスは次のプロパティをUDDIレジストリにパブリッシュします。

  • URI

  • EJB仕様バージョン

  • クライアントJar

  • ホーム・インタフェース(EJB 2.1のみ)

  • リモート・インタフェース(EJB 3.0のビジネス・インタフェース)

  • メソッド名(操作別名、パラメータ、戻り値の詳細は含まれません)。メソッド名は、すべてのメソッド・シグネチャが付けられた1つのプロパティで渡されます。メソッド・シグネチャは#記号で区切られます。

29.6.2 UDDIのインポート

ここでは、JEJBトランスポートがUDDIレジストリからのサービス・インポートを処理する方法を説明します。

  • URI - JEJBトランスポート・プロバイダは、UDDIレジストリにあるURIプロパティのhost:port情報を、サーバーに登録されているJNDIプロバイダ・リソースと照合しようとします。

    トランスポート・プロバイダがJNDIプロバイダを見つけられない場合、インポートは失敗します。ただし、JNDIプロバイダが見つからなくても、host:portがlocalhostのIPとリスニング・ポートと一致する場合、結果のビジネス・サービスはローカルになります(JNDIプロバイダではありません)。

  • クライアントJAR - トランスポート・プロバイダがクライアントJARをダウンロードし、マニフェスト・クラスパスがJARに存在する場合は、対応するJARリソースを同じディレクトリ構造に作成します。リストの最初のURIがルート・クライアントJARです。JARにマニフェスト・クラスパスが存在しない場合は、リソースJARをルートJARに手動で追加する必要があります。インポートされたクライアントJARのリソースが、ドメインの別のリソースと同じ名前である場合、インポートされたリソースによって既存のリソースが上書きされます。

    インポートするクライアントJARがドメインに存在していないことを確認します。

  • メソッド名 - 対応するプロパティに含まれるメソッドは、エンドポイントの構成で自動的に選択されます。他のすべてのメソッドは除外としてマークされます(選択解除されます)。