アプリケーション・モジュールをサービスSession Beanとして公開することで、ADFビジネス・コンポーネントからWebサービスを作成できます。この方法は、実装の一部としてWebサービスが他のEJB Session Beanと対話する必要がある場合に適しています。 ADFビジネス・コンポーネントからWebサービスを作成するもう1つの方法では、アプリケーション・モジュールのWebサービス・クラスを生成して、そのクラスからWebサービスを作成します。
EJB Session Beanとしてデプロイするように、ADFビジネス・コンポーネントのアプリケーション・モジュールを構成できます。 詳細は、「EJBセッションBeanとしてのADF Business Componentsのパッケージ化」を参照してください。デフォルトではステートフルSession Beanですが、そこからWebサービスを作成するには、ステートレスSession Beanに変更する必要があります。
次の手順では、ADFビジネス・コンポーネント・ベースのステートフルSession Beanを、ステートレスSession Beanに変更する方法を説明します。
BeanをステートレスSession Beanに変更するには、次のようにします。
<AppModuleName> Server.java
Beanをダブルクリックします。
ejbCreate()
の createApplicationModule()
コールをコメント・アウトし、メソッドを次のように変更します。
public void ejbCreate() throws java.rmi.RemoteException, javax.ejb.CreateException
{
// To make stateless, comment this line out
// createApplicationModule("mypkg.MypkgModule");
}
createApplicationModule("mypkg.MyModule")
をコピーし、 try
内の先頭に貼り付けます。
javax.ejb.CreateException
を処理するために catch
ブロックを追加します。必ず完全修飾フォームを使用してください。
removeApplicationModule()
へのコールを含む finally
ブロックを追加します。
こうすると、前述の someExposedMethod()
のサンプル・コードは、次のようになります。
// NOTE: Need to add imports for javax.ejb.CreateException and java.rmi.RemoteException
public String someExposedMethod(int x) throws java.rmi.RemoteException
{
try
{
// (Step 1) Add this line -- Create the application module
createApplicationModule("mypkg.MypkgModule");
// (Step 2) Add this line -- Connect the appmodule to a datasource using the
// ejb-location name of the datasource from the data-sources.xml file
getApplicationModule().getTransaction().connectToDataSource(null,"jdbc/OracleDS",false);
return getMypkgModule().someExposedMethod(x);
}
// (Step 3) Add this catch block
catch(javax.ejb.CreateException ex)
{
throw new RemoteException("Create error", ex);
}
catch(oracle.jbo.JboException ex)
{
// Convert JboException to service exception below
// Business methods shouldn't throw RuntimeException
ex.printStackTrace();
throw ex;
}
// (Step 4) Add this finally block to remove the appmodule
finally {
// Add this line -- Remove the application module
removeApplicationModule();
}
}
Stateless
に変更します。
Copyright © 1997, 2004, Oracle. All rights reserved.