、J2EEのこの機能を試してみるために、JCAアダプタを使って外部ストレージに接続しようとしています。私のシナリオではJCAコネクタクラスロード
私はJBoss EAP 7とその実装された実装ironjacamarを使用します。
iがadapter.jar
(これはConnection
とConnectionFactory
インタフェースおよびすべての実装が含ま)とMETA-INF/ironjacamar.xml
を含む、adapter.rar
を展開します。
私はその後、注釈付きフィールドで豆を含む、app.war
ファイルをデプロイ:
@RequestScoped
public class Bean {
...
@Resource(lookup = "java:/eis/StorageConnectionFactory")
private StorageConnectionFactory connectionFactory;
}
戦争もライブラリとしてadapter.jarが含まれています - それは(実行時にすべてのクラスのがNoClassDefFoundを知っている必要があるとして、私の驚きになど)
、コネクタ自体が動作しているようです - 例外を取得しているよう:
java.lang.IllegalArgumentExceptionが:conn.Hにconn.StorageConnectionFactoryImplフィールドBean.connectionFactoryを設定できませんsmConnectionFactoryImp
とさえインターフェースをommitting上:
@Resource(lookup = "java:/eis/StorageConnectionFactory")
private StorageConnectionFactoryImpl connectionFactory;
まだ
java.lang.IllegalArgumentException: Can not set conn.StorageConnectionFactoryImpl field Bean.connectionFactory to conn.HsmConnectionFactoryImp
私は問題がadapter.rarがNTO app.warと同じクラスローダを共有しないこと、であることがわかりどちらもClassCastExceptionの一種につながる対応するクラスが含まれています - どのように私はこの問題を正しく解決するのですか?