BEA ホーム | 製品 | dev2dev | support | askBEA
 ドキュメントのダウンロード   サイト マップ   Glossary 
検索

WebLogic Server FAQ 集

 Previous Next Contents PDF で侮ヲ  

FAQ: J2EE コネクタ アーキテクチャ

Q. JNDI ツリーを参照しているときに次の例外を受け取るのはなぜですか。

isSerializable(class.javax.naming.Binding) 
java.io.NotSerializableException:
java.io.PrintWriter at
java.io.ObjectOutputStream.OutputObject

A. WebLogic Server JNDI の実装では、オブジェクトは参照可能ではなくシリアライズ可能である必要があります。PrintWriter はシリアライズ可能ではないので、transient として宣言する必要があります。

Q. WebLogic J2EE コネクタ アーキテクチャの現在の実装で PointBase ではなく Oracle データベースを使用することはできますか。

A. 付属のサンプルには、任意のデータベース システムを表すリソース アダプタが含まれています。デフォルトでは、コンフィグレーションは PointBase を使用するよう設定されています。特に、weblogic-ra.xml ファイルのコンフィグレーション プロパティには PointBase データソースが設定されています。この設定は、Oracle の設定に置き換えることができます。

また、リソース アダプタ (特に ManagedConnectionFactory) は Oracle をサポートするよう実装されなければなりません。このサンプルに含まれているリソース アダプタは JDBC を利用するので、表すことができるようコンフィグレーションされている任意のデータベース システムをサポートできます。

Q. リソース アダプタ (.rar) を WebLogic Server にデプロイする場合、そのクラスは WebLogic クラスパスに配置されますか。

たとえば、EJB とリソース アダプタ (.rar) をデプロイしようとしていますが、EJB は CCI (Common Client Interface) に書き込むため、.rar に対する依存関係が存在しません。EJB クライアント アプリケーションは、.rar で定義されるパラメータ クラスとして送信/マーシャリングを持っています。何らかの理由により、.rar が正常にデプロイされたにもかかわらず、EJB のクラス ローダ階層がこの .rar 固有クラスの定義を発見できません。EJB クライアントで次のエラーを受け取りました。

java.rmi.UnmarshalException: error unmarshalling arguments; nested exception 
is:
java.lang.ClassNotFoundException:
com.mycompany.InteractionSpecImpl

A. com.myclientcompany.server.eai.InteractionSpecImpl のインスタンスを引数として EJB に渡す場合、appServer は EJB のコンテキストでオブジェクトをデシリアライズ (アンマーシャリング) する必要があります。また、ejb-jar (raTester.jar) の内部にあるアンマーシャリング用の必須クラスを必要とします。このため、interactionspecimpl クラスを ejb-jar ファイルに含める場合、これらのクラスをサーバのクラスパスに含める必要はありません。

Q. サンプル EJB が ConnectionFactory.getConnection() を呼び出して EIS に接続するときに、WebLogic Server が ManagedConnection.addConnectionEventListener() 関数を呼び出すのはなぜですか。

A. これは必須であり、リソース アダプタとアプリケーション サーバ間の取り決めの一部です。

Q. EJB をコンパイルして CCI をサポートするリソース アダプタを使用するときに例外が送出されるのはなぜですか。

resource-refjavax.resource.cci.ConnectionFactory を指定しましたが、EJB をコンパイルしようとすると次の例外を受け取ります。

weblogic.xml.process.SAXValidationException: 
ejb-jar.enterprise-beans.session.resource-ref.res-type.
must be one of the values:
javax.sql.DataSource,javax.jms.QueueConnectionFactory,
javax.jms.TopicConnectionFactory,
java.net.URL,
javax.mail.Session
at
weblogic.ejb20.dd.xml.EjbJarLoader_EJB11.__post_84

A. ejb-jar.xml が EJB1.1 DTD ではなく EJB2.0 DTD を参照しているかどうかを確認してください。ConnectionFactory resource ref は、EJB 2.0 DTD だけでサポートされています。

Q. BEA の com.bea.adapter.dbms.cci.ConnectionImpl は直接 javax.resource.cci.Connection を実装しません。この解決策はありますか。

A. はい。BEA com.bea.adapter.dbms.cci.ConnectionImpl は、com.bea.adapter.cci.AbstractConnection の拡張であり、これは Connection インタフェースを実装します。プロキシは最終派生クラス (ConnectionImpl) からのインタフェースを使用して構築されます。dumpFamilyTree 出力は、ConnectionImpl クラスの getInterfaces 呼び出しに Connection インタフェースが含まれていないことを示します。しかし、AbstractConnectiongetInterfaces 呼び出しには、Connection インタフェースが含まれます。

この問題を解決するには、ConnectionImpl クラスが ra.xml ファイルに指定されているインタフェース クラスを直接実装する必要があります (特にこれが実装済みのクラスを拡張する場合、この文は冗長になる場合があります)。次に、アダプタを再構築し、もう一度テストを行ってみてください。

 

Back to Top Previous Next