SDO-Enterprise JavaBeansサービスの起動方法

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

  • JNDIツリーからSOAServiceInvokerBeanを検索します。

  • SOAServiceFactoryのインスタンスを取得し、ファクトリにEnterprise JavaBeansサービス・インタフェースのプロキシを返すように要求します。

  • クライアント側のEnterprise JavaBeansの起動ライブラリ($FMW_HOME/soa/soa/modules/oracle.soa.fabric_11.1.1/fabric-client.jarまたはOracle JDeveloperホーム・ディレクトリまたはOracle WebLogic Serverにあるfabric-runtime.jarファイル)をEnterprise JavaBeansクライアント・アプリケーションに含めることができます。たとえば、fabric-runtime.jarファイルをJDev_Home\jdeveloper\soa\modules\oracle.soa.fabric_11.1.1ディレクトリに格納できます。

    Enterprise JavaBeansアプリケーションがOracle SOA Suiteと異なるJVMで実行されている場合、Enterprise JavaBeansアプリケーションは、ejbClientライブラリを参照する必要があります。次のコードは、その一例を示しています。

    serviceFactory.createServiceMyTestEJBServiceパラメータを指定してサービスIDの完全なパスを指定する必要があります(たとえば、"default/MyTestProject!1.0/MyTestEJBService")。完全なパスが指定されていない場合、EJBException- Could not locate the serviceエラーが表示されます。

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("complete_path/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();