, J2EE의이 기능을 사용하기 위해 JCA 어댑터를 사용하여 외부 저장소에 연결하려고합니다.내 시나리오에서 JCA 커넥터 클래스 로딩
저는 JBoss EAP 7과 그것의 구현 된 구현 인 ironjacamar를 사용합니다.
가 나는 adapter.jar
(이것은 Connection
및 ConnectionFactory
인터페이스 및 모든 구현을 포함) 및 META-INF/ironjacamar.xml
포함 된 adapter.rar
를 배포. 이 런타임에 모든 클래스의 알 필요로 (NoClassDefFound을 -
@RequestScoped
public class Bean {
...
@Resource(lookup = "java:/eis/StorageConnectionFactory")
private StorageConnectionFactory connectionFactory;
}
이 전쟁은 또한 도서관과 adapter.jar이 포함
난 후 주석 필드와 콩을 포함하는 app.war
파일을 배포 등) 내 놀랍게도
는 커넥터 자체가 작동하는 것 같다 - 예외를 얻을 수 있습니다으로 :
java.lang.IllegalArgumentException가 : conn.H에 conn.StorageConnectionFactoryImpl 필드 Bean.connectionFactory를 설정할 수 없습니다
심지어 인터페이스를 ommitting에 smConnectionFactoryImp
:@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이 발생합니다. 어떻게이 문제를 올바르게 해결할 수 있습니까?