2017-02-03 2 views
1

В моем сценарии я пытаюсь использовать адаптеры JCA для подключения к внешнему хранилищу - просто попробовать эту функцию J2EE.JCA Connector Classloading

Я использую JBoss EAP 7 и его упакованную реализацию 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; 
} 

Война также содержит adapter.jar как библиотеки - как он должен знать все классы во время выполнения (NoClassDefFound и т.д.)

к моему удивлению, сам разъем, кажется, работает - как получить исключение:

java.lang.IllegalArgumentException: Невозможно установить conn.StorageConnectionFactoryImpl поле Bean.connectionFactory к conn.H 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 - как правильно решить эту проблему?

ответ