在我的场景中,我尝试使用JCA Adapters连接到外部存储-只是为了尝试J2EE的这一特性。
我使用的是JBoss EAP7和它的打包实现ironjacamar。
我部署了一个adapter.rar,其中包含一个adapter.jar (它包含Connection和ConnectionFactory接口以及所有实现)和META-INF/ironjacamar.xml。
然后我部署了一个app.war文件,其中包含一个带有注释字段的Bean:
@RequestScoped
public class Bean {
...
@Resource(lookup = "java:/eis/StorageConnectionFactory")
private StorageConnectionFactory connectionFactory;
}war还包含adapter.jar as库-因为它需要知道运行时的所有类(NoClassDefFound等)。
令我惊讶的是,Connector本身似乎工作正常--这是一个例外:
java.lang.IllegalArgumentException:无法将conn.StorageConnectionFactoryImpl字段Bean.connectionFactory设置为conn.HsmConnectionFactoryImp
甚至在省略接口时:
@Resource(lookup = "java:/eis/StorageConnectionFactory")
private StorageConnectionFactoryImpl connectionFactory;仍然
java.lang.IllegalArgumentException: Can not set conn.StorageConnectionFactoryImpl field Bean.connectionFactory to conn.HsmConnectionFactoryImp我看到的问题是,adapter.rar没有和app.war共享相同的类加载器,并且两者都包含相应的类,这导致了一种ClassCastException -我如何正确地解决这个问题?
发布于 2017-02-09 23:46:22
https://stackoverflow.com/questions/42025299
复制相似问题