ヘッダーをスキップ
Oracle Fusion Middleware Oracle SOA Suite開発者ガイド
11g リリース1 (11.1.1.5.0)
B56238-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

35 Enterprise JavaBeansとSOAコンポジット・アプリケーションの統合

この章では、Enterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法について説明します。統合には、サービス・データ・オブジェクト(SDO)パラメータまたはJavaインタフェースを使用します。

項目は次のとおりです。


注意:

Enterprise JavaBeans 3.0およびEnterprise JavaBeans 2.0の参照(つまり、Enterprise JavaBeans 2.0 Beanをコールする場合)はサポートされています。ただし、Enterprise JavaBeans 2.0のサービス(つまり、Enterprise JavaBeans 2.0 Beanを使用してコールされる場合)はサポートされていません。

35.1 Enterprise JavaBeansバインディングとSOAコンポジット・アプリケーションの統合の概要

Enterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法には、次の2つのオプションがあります。

この章では、両方のオプションについて説明します。

JavaインタフェースとSOAコンポジット・アプリケーションの統合には、Springサービス・コンポーネントも使用できます。Springサービス・コンポーネントの使用方法の詳細は、第49章「Spring Frameworkを使用したSOAコンポジット・アプリケーションへの統合」を参照してください。

35.1.1 SDOベースのEJBを使用した統合

SDOを使用すると、物理的にどのようにアクセスされているかに関係なくビジネス・データを修正できます。SOAコンポジット・アプリケーションでSDOを使用する場合、特定のバックエンド・データ・ソースへのアクセス方法についての知識は不要です。つまり、静的または動的なプログラミング・スタイルを使用して、接続および切断されたアクセスを取得できます。

Enterprise JavaBeansは、Javaでエンタープライズ・アプリケーションを作成するためのコンポーネントベースの標準アーキテクチャに適合する、サーバー側ドメイン・オブジェクトです。これらのオブジェクトは、分散化されたセキュアなトランザクション・コンポーネントになります。

多くのOracle SOA Suiteインタフェースは、WSDLファイルで記述されます。Enterprise JavaBeansインタフェースは、Javaインタフェースで記述されます。両者の間の起動は、Oracle SOA SuiteのWSDLインタフェースに対応するEnterprise JavaBeansのJavaインタフェースによって、Oracle SOA Suiteで可能になります。

このインタフェースを介して、Oracle SOA Suiteは次の機能をサポートします。

  • Enterprise JavaBeans参照バインディング・コンポーネントを介した、SDOパラメータによるEnterprise JavaBeansの起動。このシナリオでは、SOAコンポジット・アプリケーションが外部のEnterprise JavaBeansアプリケーションにSDOパラメータを渡します。

  • Enterprise JavaBeansを介した、SDOパラメータによるEnterprise JavaBeansサービス・バインディング・コンポーネントの起動。このシナリオでは、Enterprise JavaBeansアプリケーションがSOAコンポジット・アプリケーションにSDOパラメータを渡します。

図35-1に概要を示します。

図35-1 SDOおよびEnterprise JavaBeansバインディングの統合

図35-1の説明が続きます
「図35-1 SDOおよびEnterprise JavaBeansバインディングの統合」の説明

この統合を定義するには、第35.3.1項「SDOベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法」で説明するように、Oracle JDeveloperの「EJBサービスの作成」ダイアログを使用します。このオプションでは、WSDLファイルを使用する必要があります。完了すると、例35-1に示すように、WSDL相互作用がinterface.wsdlエントリを介してcomposite.xmlファイルに定義されます。

例35-1 interface.wsdlエントリを介したWSDLファイルの定義

<service name="PortfolioService">
        <interface.wsdl
 interface="http://bigbank.com/#wsdl.interface(PortfolioService)" />
    <binding.ejb javaInterface="java.class.ejb.com" serviceId="PortfolioService"
                 jarLocation="soaejb.jar"/>

35.1.2 Javaインタフェースを使用した統合

Enterprise JavaBeansとOracle SOA Suiteの統合には、Javaインタフェースも使用できます。この場合、WSDLファイルの定義は不要です。このタイプの統合は、次のオブジェクトをサポートします。

  • ネイティブJavaオブジェクト

  • Java Architecture for XML Binding(JAXB)

JavaインタフェースはSDOインタフェースとは異なります。SDOインタフェースは、XMLが中心のサービス・コンポーネント(Oracle BPEL Process Manager、Oracle Mediatorなど)を対象としているため、WSDLファイルに定義されます。Javaインタフェースを使用する場合、SDOパラメータは不要です。

この統合を定義するには、第35.3.2項「Javaインタフェース・ベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法」で説明するように、Oracle JDeveloperの「EJBサービスの作成」ダイアログを使用します。このオプションでは、WSDLファイルを使用する必要はありません。完了すると、例35-2に示すように、相互作用がinterface.javaエントリを介してcomposite.xmlファイルに定義されます。

例35-2 interface.javaエントリを介したJavaインタフェースの定義

<service name="PortfolioService">
   <interface.java interface="com.bigbank.services.MyService" />
   binding.ejb uri="MyJNDI" ejb-version="EJB3"/>

Javaクラスは、ユーザー・インタフェースに使用できるプロジェクトのローダー内にある必要があります。このクラスは、デプロイされるSCA-INF内にある必要があります(プロジェクト・クラスパス内のすべてのJARファイルがデプロイされるわけではありません)。これは通常、クラスがSCA-INF/classesディレクトリ内、またはSCA-INF/libディレクトリのJAR内にある必要があることを意味します。ただし、システム・クラスパスのインタフェースも使用できます。

JAXBの詳細は、『Oracle Fusion Middleware Oracle TopLink開発者ガイド』および第49章「Spring Frameworkを使用したSOAコンポジット・アプリケーションへの統合」を参照してください。

35.2 SDOベースのEnterprise JavaBeansアプリケーションの設計

この項では、Enterprise JavaBeansアプリケーション設計手順の高レベルな概要を示します。詳細は、次のドキュメントを参照してください。

35.2.1 SDOコンパイラを使用したSDOオブジェクトの作成方法

SDOオブジェクトを作成するには、次のいずれかのオプションを選択します。

  • EclipseLinkは、Java開発者用のオープン・ソースのオブジェクト・リレーショナル・マッピング・パッケージです。EclipseLinkには、Javaオブジェクトをリレーショナル・データベースに格納したり、JavaオブジェクトをXML文書に変換するためのフレームワークが備わっています。

    EclipseLinkを使用してSDOオブジェクトを作成します。EclipseLinkをインストール、構成および使用してSDOオブジェクトを作成する方法の手順は、次のURLを参照してください。

    http://wiki.eclipse.org/EclipseLink/Installing_and_Configuring_EclipseLink
    
  • Oracle JDeveloperでは、JPAエンティティに対するSDOサービス・インタフェースを作成できます。この機能は、SOAコンポジット・アプリケーションのOracle Application Development Framework(ADF)サービス・バインディングで使用する場合により適していますが、SOAコンポジット・アプリケーションのEnterprise JavaBeansサービス・バインディングでもこの機能を使用できます。SDOサービス・インタフェース機能では、必要なWSDLおよびXSDファイルが生成されます。この機能を使用する場合、Enterprise JavaBeansサービス・バインディングを処理するには、次のタスクを実行する必要があります。

    • 「SOAリソース・ブラウザ」ダイアログでこのWSDLファイルを参照して選択します。このダイアログには、「EJBサービスの作成」ダイアログの「WSDL URL」フィールドからアクセスできます(第35.3項「Oracle JDeveloperでのEnterprise JavaBeansサービスの作成」の説明を参照)。

    • 「BC4Jサービス・ランタイム」ライブラリをSOAプロジェクトに追加します。このライブラリを追加するには、プロジェクトをダブルクリックし、「プロジェクト・プロパティ」ダイアログで「ライブラリとクラスパス」を選択してライブラリを追加します。これで、ビジネス・ロジックを設計できる状態になります。

    詳細は、Oracle JDeveloperオンライン・ヘルプのEnterprise JavaBeans/JPA用のSDOに関するトピックを参照してください(SDOサービス・インタフェースの作成方法の手順も含まれています)。

35.2.2 セッションBeanを作成してSDOオブジェクトをインポートする方法

セッションBeanを作成してSDOオブジェクトをインポートする手順は、次のとおりです。

  1. セッションBean作成ウィザードを使用して、単純なセッションBeanを作成します。このウィザードの使用方法の詳細は、Oracle JDeveloperオンライン・ヘルプのセッションBeanの作成に関するトピックを参照してください。

  2. 「プロジェクト・プロパティ」ダイアログで、SDOオブジェクトをプロジェクトにインポートします。

  3. ロジックおよび必要なインポート・ファイルとライブラリ・ファイルを追加します。特に、Commonj.sdo.jarファイルをインポートする必要があります。JARファイルは、「ライブラリとクラスパス」ダイアログで追加できます。このダイアログにアクセスするには、プロジェクトをダブルクリックし、「プロジェクト・プロパティ」ダイアログで「ライブラリとクラスパス」を選択します。これで、ロジックを設計できる状態になります。

  4. メソッドをリモート・インタフェースに公開します。

35.2.3 プロファイルおよびEARファイルの作成方法

プロファイルおよびEARファイルを作成する手順は、次のとおりです。

  1. 「プロジェクト・プロパティ」ダイアログで、Enterprise JavaBeansのJARプロファイルを作成します。

  2. 「アプリケーション・プロパティ」ダイアログで、アプリケーション・レベルのEARファイルを作成します。

35.2.4 Enterprise JavaBeans Beanを使用したSDOタイプの定義方法

Enterprise JavaBeans BeanでSDOタイプを定義する必要があります。例35-3に詳細を示します。


注意:

defineをコールする場所が重要な場合があります。Remote Method Invocation(RMI)マーシャリングが必要になる前に、適切なヘルパー・コンテキストにタイプを定義する必要があります。EclipseLink SDO実装では、アプリケーション名またはクラス・ローダーでヘルパー・インスタンスが索引付けされます。Enterprise JavaBeansメソッドを起動するとき、EclipseLink SDOランタイムでアプリケーション名を使用できます。EclipseLink SDOは、キーとしてアプリケーション名を使用してコンテキストを検索します。アプリケーション名が参照可能な場合は、タイプを必ず定義してください。Enterprise JavaBeansの静的ブロックの初期化時に、アプリケーション名は作成されません。したがって、静的ブロックにdefineを配置すると、デフォルトのアプリケーション名ベースのコンテキストを使用している場合は機能しません。アプリケーション名を初期化する方法の1つは、weblogic-ejb-jar.xmlファイルを使用して、3つ以上のインスタンスBeanを割り当てることです。

例35-3 SDOタイプの定義

InputStreamReader reader = new InputStreamReader(url.openStream());
StreamSource source = new StreamSource(reader);
List<SDOType> list = ((SDOXSDHelper) XSDHelper.INSTANCE).define(source, null);

weblogic-ejb-jar.xmlファイルは、デプロイメントjarに追加する必要があるディスクリプタ・ファイルです。weblogic-ejb-jar.xmlファイルは、セッションBeanを作成すると自動的に作成されます。このファイルは、例35-4に示すエントリを追加して変更する必要があります。

例35-4 weblogic-ejb-jar.xmlファイル

<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://www.bea.com/ns/weblogic/weblogic-ejb-jar
 http://www.bea.com/ns/weblogic/weblogic-ejb-jar/1.0/weblogic-ejb-jar.xsd"
                  xmlns="http://www.bea.com/ns/weblogic/weblogic-ejb-jar">

    <weblogic-enterprise-bean>
    <ejb-name>HelloEJB</ejb-name>
    <stateless-session-descriptor>
      <pool>
        <initial-beans-in-free-pool>2</initial-beans-in-free-pool>
      </pool>
    </stateless-session-descriptor>
  </weblogic-enterprise-bean>

    </weblogic-ejb-jar>

図35-2に、SDOロジックが定義されているセッションBeanのコード例を示します。

図35-2 SDOロジックが定義されているセッションBean

図35-2の説明が続きます
「図35-2 SDOロジックが定義されているセッションBean」の説明

35.2.5 Webサービス注釈の使用方法

WSDLファイルを生成するには、Enterprise JavaBeansインタフェースで次のWebサービス注釈を使用する必要があります。これらの注釈の使用については、『JSR 224: Java API for XML-Based Web Services (JAX-WS) 2.0』で説明されています。詳細は、次のURLを参照してください。

http://www.jcp.org/en/jsr/detail?id=224

また、Enterprise JavaBeansバインディング・レイヤーで現在サポートされているのは、ドキュメント/リテラルWSDLのみです。

表35-1で、使用する注釈について説明します。

表35-1 注釈

名前 説明

@javax.jws.WebResult;

@javax.jws.WebParam;

Webサービス・メッセージ・パートおよびXML要素に対する個々のパラメータのマッピングをカスタマイズします。正規化されたメッセージ・ペイロードからの適切なXML要素にSDOパラメータをマップするために、両方の注釈が使用されます。

@javax.jws.Oneway;

メソッドを、入力メッセージのみで出力メッセージのない一方向のWebサービス操作として指定します。この場合、Enterprise JavaBeansバインディング・コンポーネントは、リプライを想定しません。

@javax.xml.ws.RequestWrapper;

@javax.xml.ws.ResponseWrapper;

Enterprise JavaBeansバインディング・コンポーネントに対して、デシリアライズ・オブジェクトをアンラップするかどうか、またはシリアル化の前にラッパーを作成する必要があるかどうかを指示します。

Enterprise JavaBeansインタフェースは、既存のWSDLから生成するか、または他の手段で取得できます。WSDLが存在しない場合は生成できます。

@javax.xml.ws.WebFault;

WSDLフォルトをJava例外にマップします。この注釈は、WSDLフォルト・メッセージで参照するグローバル要素から生成される、JAXBタイプのマーシャリング時に使用されるフォルト要素名を取得します。

@oracle.webservices.PortableWebService

WSDLに使用するtargetNamespaceおよびserviceNameを指定します。例:

@PortableWebService(
targetNamespace = "http://hello.demo.oracle/",
serviceName = "HelloService")

serviceNameは、WSDLファイル名として使用されます。注釈で指定しない場合は、SEIクラス名がかわりに使用されます。

適切なメソッド・パラメータ注釈の追加

メッセージ要素およびタイプのWSDLへのマップ方法を制御するために追加します。たとえば、インタフェースがdoc/lit/bareスタイルにある場合は、メソッドに次の注釈を追加します。

@WebMethod
@SOAPBinding(parameterStyle =
SOAPBinding.ParameterStyle.BARE)

@SDODatabinding

スキーマを生成するかわりに既存のスキーマを使用するために、インタフェース・クラスに追加します。例:

@SDODatabinding(schemaLocation = "etc/HelloService.xsd")

例35-5に、注釈を使用したEnterprise JavaBeansインタフェースの例を示します。

例35-5 注釈を使用したEnterprise JavaBeansインタフェース

@Remote
@PortableWebService(targetNamespace = "http://www.example.org/customer-example",
 serviceName = "CustomerSessionEJBService")
@SDODatabinding(schemaLocation = "customer.xsd")
public interface CustomerSessionEJB {
     @WebMethod(operationName="createCustomer")
   @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
   @WebResult(targetNamespace = "http://www.example.org/customer-example",
 partName = "parameters", name = "customer")
   CustomerType createCustomer();
     @WebMethod(operationName="addPhoneNumber")
   @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
   @WebResult(targetNamespace = "http://www.example.org/customer-example",
 partName = "parameters", name = "customer")
   CustomerType addPhoneNumber(@WebParam(targetNamespace =
 "http://www.example.org/customer-example", partName = "parameters", name =
 "phone-number")PhoneNumber phNumber);
} 

35.2.6 Enterprise JavaBeans EARファイルのデプロイ方法

Oracle JDeveloperからEARファイルをデプロイする手順は、次のとおりです。

  1. アプリケーション名の右側にあるアプリケーション・コンテキスト・メニューを選択します。

  2. 「デプロイ」を選択し、EARファイルを以前に作成したアプリケーション・サーバー接続にデプロイします。

35.3 Oracle JDeveloperでのEnterprise JavaBeansサービスの作成

この項では、Oracle JDeveloperでEnterprise JavaBeans参照バインディング・コンポーネントまたはEnterprise JavaBeansサービス・バインディング・コンポーネントを作成する方法について説明します。Enterprise JavaBeansサービスを使用すると、Enterprise JavaBeansアプリケーションでOracle SOA Suiteと通信できるようになり、Oracle SOA SuiteでリモートのEnterprise JavaBeansと通信できるようになります。

この項では、次のタイプの統合を作成する方法について説明します。

35.3.1 SDOベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法

SDOベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの間では、次のタイプの統合を作成できます。

  • SOAコンポジット・アプリケーションからのSDOベースのEnterprise JavaBeansの起動

  • SDOパラメータを使用したEnterprise JavaBeansからのSOAコンポジット・アプリケーションの起動

SDOベースのEnterprise JavaBeansをSOAコンポジット・アプリケーションに統合する手順は、次のとおりです。

  1. SOAコンポジット・エディタで、「EJBサービス」アイコンを表35-2に示す適切なスイムレーンにドラッグします。

    表35-2 EJBサービスに対するスイムレーン

    起動対象 EJBサービスをドラッグするスイムレーン

    SOAコンポジット・アプリケーションからのSDOベースのEnterprise JavaBeansの起動

    外部参照

    SDOパラメータを使用したEnterprise JavaBeansからのSOAコンポジット・アプリケーションの起動

    公開されたサービス


  2. 「インタフェース」セクションで、「WSDL」をクリックします。

  3. EJBサービスをドラッグしたスイムレーンに基づいて、表35-3に示す手順を参照してください。

    表35-3 スイムレーンの場所

    EJBサービスをドラッグしたスイムレーン 次の手順に移動します。

    外部参照

    手順3a


    公開されたサービス

    手順3b



    1. 図35-3に示すように、「外部参照」スイムレーンに表示される「EJBサービスの作成」ダイアログを確認します。

      図35-3 「外部参照」スイムレーンの「EJBサービスの作成」

      図35-3の説明が続きます
      「図35-3 「外部参照」スイムレーンの「EJBサービスの作成」」の説明

    2. 図35-4に示すように、「公開されたサービス」スイムレーンに表示される「EJBサービスの作成」ダイアログを確認します。

      図35-4 「公開されたサービス」スイムレーンの「EJBサービスの作成」

      図35-4の説明が続きます
      「図35-4 「公開されたサービス」スイムレーンの「EJBサービスの作成」」の説明

  4. 環境に適した値を入力します。「EJBサービス」アイコンをドラッグしたスイムレーンに応じて、表示されるフィールドが異なります。表35-4に詳細を示します。

    表35-4 「EJBサービスの作成」ダイアログ

    フィールド

    名前

    デフォルトの値をそのまま使用するか、別の名前を入力します。

    タイプ

    次の値が表示されます。

    • このアイコンを「外部参照」スイムレーンにドラッグした場合は、「参照」と表示されます。

    • このアイコンを「公開されたサービス」スイムレーンにドラッグした場合は、「サービス」と表示されます。

    バージョン

    サポートするEJBのバージョンをEJB2またはEJB3 (デフォルト選択)から選択します。

    注意: このフィールドは、「EJBサービス」アイコンを「外部参照」スイムレーンにドラッグした場合のみ表示されます。

    インタフェース

    「WSDL」を選択します。

    JNDI名

    注意: このフィールドは、「EJBサービス」アイコンを「外部参照」スイムレーンにドラッグした場合のみ表示されます。

    Enterprise JavaBeansのJNDI名を入力します。

    Jarファイル

    「検索」アイコンをクリックし、第35.2項「SDOベースのEnterprise JavaBeansアプリケーションの設計」で作成したEJB JARファイルを選択します。「SOAリソース・ブラウザ」ダイアログでは、現在のプロジェクト・ディレクトリのSCA-INF/libサブディレクトリで起動されるJARファイルを検索して表示します。JARファイルには、インタフェース・クラスおよび任意のサポート対象クラスが含まれます。

    注意: 現在のプロジェクトの外部にあるJARファイルを選択する場合、Oracle JDeveloperは、現在のプロジェクトのSCA-INF/libディレクトリにあるJARファイルのコピーを作成します。プロンプトが表示されたら、「OK」をクリックして承認します。

    JAVAインタフェース

    「参照」アイコンをクリックして「クラス・ブラウザ」ダイアログを起動し、以前に作成したEnterprise JavaBeansインタフェースの完全修飾Javaクラス名を選択します。このクラスは、選択したJARファイルに存在している必要があります。JARファイルを指定しない場合、クラスは現在のプロジェクト・ディレクトリの/SCA-INF/classesサブディレクトリ内にあるとみなされます。

    注意: 「Jarファイル」フィールドを使用する場合、「アプリケーション」メイン・メニューから「プロジェクト・プロパティ」「ライブラリとクラスパス」「JAR/ディレクトリの追加」を選択して、新規JARファイルをプロジェクトに追加する必要はありません

    WSDL URL

    注意: WSDLファイルの生成前に、必ず、第35.2.5項「Webサービス注釈の使用方法」の説明に従ってEnterprise JavaBeansインタフェースの注釈を作成しておいてください。

    右側にある2番目のアイコンをクリックして、Enterprise JavaBeansインタフェースを表すWSDLファイルを生成します。

    第35.2.1項「SDOコンパイラを使用したSDOオブジェクトの作成方法」の説明に従ってOracle JDeveloperでSDOオブジェクトを作成した場合は、このオプションで自動的に生成されたWSDLファイルを必ず選択してください。

    ポート・タイプ

    ポート・タイプを選択します。

    コールバック・ポート・タイプ

    コールバック・ポート・タイプを選択します(非同期サービスの場合)。


  5. 「OK」をクリックします。

35.3.2 Javaインタフェース・ベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法

Javaインタフェース・ベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの間では、次のタイプの統合を作成できます。

  • SOAコンポジット・アプリケーションからのJavaインタフェース・ベースのEnterprise JavaBeansの起動

  • Javaインタフェースを使用したEnterprise JavaBeansからのSOAコンポジット・アプリケーションの起動

Javaインタフェース・ベースのEnterprise JavaBeansをSOAコンポジット・アプリケーションに統合する手順は、次のとおりです。

  1. 「EJBサービス」アイコンを適切なスイムレーンにドラッグします。

    • SOAコンポジット・アプリケーションからEnterprise JavaBeans参照バインディング・コンポーネントを起動するには、アイコンを「外部参照」スイムレーンにドラッグします。

    • Enterprise JavaBeansサービス・バインディング・コンポーネントからSOAコンポジット・アプリケーションを起動するには、アイコンを「公開されたサービス」スイムレーンにドラッグします。

  2. 「インタフェース」セクションで、「Java」をクリックします(まだ選択していない場合)。

  3. 「EJBサービスの作成」ダイアログに、図35-5で示すフィールドが表示されます。

    図35-5 Javaインタフェース用の「EJBサービスの作成」

    図35-5の説明が続きます
    「図35-5 Javaインタフェース用の「EJBサービスの作成」」の説明

  4. 表35-5に記載されている詳細を入力します。「EJBサービス」アイコンをドラッグしたスイムレーンに関係なく、表示されるフィールドは同じです。

    表35-5 「EJBサービスの作成」ダイアログ

    フィールド

    名前

    デフォルトの値をそのまま使用するか、別の名前を入力します。

    タイプ

    次の値が表示されます。

    • このアイコンを「外部参照」スイムレーンにドラッグした場合は、「参照」と表示されます。

    • このアイコンを「公開されたサービス」スイムレーンにドラッグした場合は、「サービス」と表示されます。

    バージョン

    サポートするEJBのバージョンをEJB2またはEJB3 (デフォルト選択)から選択します。

    注意: このフィールドは、「EJBサービス」アイコンを「外部参照」スイムレーンにドラッグした場合のみ表示されます。

    インタフェース

    「Java」を選択します。

    JNDI名

    Enterprise JavaBeansのJNDI名を入力します。

    Jarファイル

    「検索」アイコンをクリックし、第35.2項「SDOベースのEnterprise JavaBeansアプリケーションの設計」で作成したEJB JARファイルを選択します。「SOAリソース・ブラウザ」ダイアログでは、現在のプロジェクト・ディレクトリのSCA-INF/libサブディレクトリで起動されるJARファイルを検索して表示します。JARファイルには、インタフェース・クラスおよび任意のサポート対象クラスが含まれます。

    注意: 現在のプロジェクトの外部にあるJARファイルを選択する場合、Oracle JDeveloperは、現在のプロジェクトのSCA-INF/libディレクトリにあるJARファイルのコピーを作成します。プロンプトが表示されたら、「OK」をクリックして承認します。

    JAVAインタフェース

    次のいずれかのオプションを選択します。

    • 手動でJavaインタフェースを入力します。

    • 「クラス・ファイルの参照」アイコンをクリックし、Javaインタフェースを選択するための「クラス・ブラウザ」ダイアログを呼び出します。

      クラスは、ランタイム・クラスパスで使用できる必要があります。ランタイム・クラスパスでクラスを使用できるようにする方法は、いくつかあります。その1つとして、確実にデプロイされるように設計時にクラスをSCA-INF/classesディレクトリまたはSCA-INF/libディレクトリのJARファイルに配置する方法があります。ただし、システム・クラスパスのインタフェースも使用できます。

      ランタイム時にクラスを使用できるようにする方法がいくつかありますが、その1つとして、設計時にデプロイされるようにクラスまたはJARをSCA-INFに配置する方法があります。

      注意: 「Jarファイル」フィールドを使用する場合、「アプリケーション」メイン・メニューから「プロジェクト・プロパティ」「ライブラリとクラスパス」「JAR/ディレクトリの追加」を選択して、新規JARファイルをプロジェクトに追加する必要はありません

    • 「WSDLからのJavaインタフェースの生成」アイコンをクリックして、Javaインタフェースを生成するWSDLファイルを選択します。これは、第35.3.1項「SDOベースのEnterprise JavaBeansとSOAコンポジット・アプリケーションの統合方法」で説明したオプションと同じです。


  5. 「OK」をクリックします。

35.4 Oracle SOA Suiteを起動するSDOベースのEnterprise JavaBeansクライアントの設計

Enterprise JavaBeansからSDO - Enterprise JavaBeansサービスを起動するには、クライアント・ライブラリを使用する必要があります。Enterprise JavaBeansクライアントを設計するには、次のガイドラインに従ってください。

例35-6に例を示します。

例35-6 Enterprise JavaBeansクライアント・コード

Properties props = new Properties();
        props.put(Context.INITIAL_CONTEXT_FACTORY,
 "weblogic.jndi.WLInitialContextFactory");
        props.put(Context.PROVIDER_URL, "t3://" + HOSTNAME + ":" + PORT);
        InitialContext ctx = new InitialContext(props);
        SOAServiceInvokerBean invoker =
                (SOAServiceInvokerBean)
 ctx.lookup("SOAServiceInvokerBean#oracle.integration.platform.blocks.sdox.ejb.api.
SOAServiceInvokerBean");

        //--  Create a SOAServiceFactory instance
        SOAServiceFactory serviceFactory = SOAServiceFactory.newInstance(invoker);

        //--  Get a dynamice proxy that is essentially a remote reference
        HelloInterface ejbRemote =
 serviceFactory.createService("MyTestEJBService", HelloInterface.class);

        //--  Invoke methods
        Item item = (Item) DataFactory.INSTANCE.create(Item.class);
        item.setNumber(new BigInteger("32"));
        SayHello sayHello = (SayHello)
 DataFactory.INSTANCE.create(SayHello.class);
        sayHello.setItem(item);

        SayHelloResponse response = ejbRemote.sayHello(sayHello);
        Item reply = response.getResult();

35.5 Enterprise JavaBeansロールの指定

Java EEアプリケーションからSOAコンポジット・アプリケーションを起動するために必要なロール名を指定するには、ロール名をEnterprise JavaBeansサービス構成に追加します。Enterprise JavaBeansサービスは、コール元のプリンシパルにセキュリティ・ロールがあるかどうかをチェックします。例35-7に詳細を示します。

例35-7 Enterprise JavaBeansロール

<service name="EJBService" ui:wsdlLocation="BPELEJBProcess.wsdl">
    <interface.wsdl
interface="http://xmlns.oracle.com/EJBApplication/EJBProject/BPELEJBProcess#wsdl.int
erface(BPELProcess1)"callbackInterface="http://xmlns.oracle.com/EJBApplication/
EJBProject/BPELEJBProcess#
wsdl.interface(BPELEJBProcessCallback)"/>
<property name="rolesAllowed">Superuser, Admin</property>
    <binding.ejb javaInterface="java.class.ejb.com" serviceId="EJBService"
                 jarLocation="soaejb.jar"/>
</service>

35.6 JNDIアクセスの構成

この項では、JNDIアクセスを構成する2つの方法について説明します。

35.6.1 外部JNDIの作成方法

JNDIアクセスを構成するには、次のガイドラインに従ってください。

  • 外部JNDIツリーをローカル・サーバー・インスタンスにリンクするように外部JNDIプロバイダを構成して、ローカルの場合と同様にオブジェクトにアクセスできます。『Oracle Fusion Middleware Programming JNDI for Oracle WebLogic Server』を参照してください。

  • また、例35-8に示すように、Enterprise JavaBeans参照のプロパティとして、JNDI環境変数を指定することもできます。Enterprise JavaBeansバインディング・コンポーネントを使用すると、独自のマップを作成するか、またはデフォルトのEJBBCバインディング・コンポーネント・マップを使用できます。EJBBCを使用する場合、mapプロパティはオプションであることに注意してください。セキュリティ上の理由から、JNDIセキュリティ資格証明をCSFストアに格納し、例35-8に示すように参照する必要があります。

    例35-8 Enterprise JavaBeans参照の環境変数

    <property name=
    "java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</property>
    <property name="java.naming.provider.url">t3://host:7001</property>
    <property name="oracle.jps.credstore.map">default</property>
    <property name="oracle.jps.credstore.key">weblogic</property>
    

セキュリティ資格証明は、資格証明ストア・フレームワークに格納することもできます。詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。

35.6.2 JNDIルックアップのカスタムCSFマップの作成方法

デフォルトのEnterprise JavaBeans BC CSFマップを使用するかわりに、独自の資格証明ストア・フレームワーク(CSF)マップを作成する場合は、Domain_Home/config/fmwconfig/system-jazn.data.xmlファイルを変更して、例35-9に示す権限をfabric-runtime.jar権限付与のエントリに追加する必要があります。

例35-9 追加する権限

<class>oracle.security.jps.service.credstore.CredentialAccessPermission</class>
   <name>>context=SYSTEM,mapName=*,keyName=*</name> 
   <actions>*</actions> 
</permission>

処理後にOracle WebLogic Serverを再起動する必要があります。

CSFの詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。