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.createService
のMyTestEJBService
パラメータを指定してサービス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();