2014-03-19 3 views
2

현재 4.2.2GA에서 Wildfly 8.0.0.Final으로 이동하는 JBoss 마이그레이션 프로젝트 중간에 멈추었습니다. 이 프로젝트는 데이터베이스 액세스를위한 Oracle OCI 드라이버와 Oracle AQ를 사용합니다. 이제 환경 변수 'LD_LIBRARY_PATH'를 OCI 네이티브 구현이 상주하는 위치로 설정하고 AQ를 제외한 모든 것이 잘 작동하는 Wildfly를 시작합니다.
경로 : $ {WILDFLY_HOME}/모듈/오라클/AQ/API/
내용 주 : aqapi.jar, 모듈이 내 모듈 oracle.jms.AQjmsSession.ociinit([JIIZSII)J: java.lang.UnsatisfiedLinkError: oracle.jms.AQjmsSession.ociinit([JIIZSII)JOracle AQ 라이브러리를 Wildfly 8 모듈로 구성하는 방법은 무엇입니까?

입니다 : 이것은 AQ API를 사용할 때 내가 오류입니다 .XML
을 Module.xml :

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.0" name="oracle.aq.api"> 
    <resources> 
    <resource-root path="aqapi.jar" /> 
    </resources> 
    <dependencies> 
    <module name="javax.api" /> 
    <module name="javax.jms.api" /> 
    <module name="oracle.jdbc" /> 
    </dependencies> 
</module> 

그래서 질문은 지금, 무엇 제이보스는 모듈 클래스 로더에 'LD_LIBRARY_PATH를'이유 전파되지 않습니다입니까?

이전 JBoss 버전의 경우이 문제점을 발견했습니다 : https://issues.jboss.org/browse/SOA-3570 이는 JBoss 4 에서처럼 서버 라이브러리 폴더에 aqapi.jar을 삽입하도록 전파됩니다.하지만 Wildfly에 대해이 문제를 어떻게 해결할 수 있습니까? 어떤 아이디어?

감사합니다.

답변

0

인터넷의 얕은 곳을 오랫동안 여행 한 후에 많은 동료가 내 동료가 결국 해결책을 찾았습니다.

이 솔루션은 그렇게보고 한 JDBC/AQ 모듈에 두 모듈을 결합했다 :

경로 : $ {WILDFLY_HOME}/모듈/오라클/jdbcaq/
내용 주 : 경우 ojdbc5.jar, aqapi.jar, 나는이 어떻게 든 제이보스의 모듈 클래스 로더에 관한 생각

<?xml version="1.0" encoding="UTF-8"?> 
<module xmlns="urn:jboss:module:1.0" name="oracle.jdbcaq"> 
    <resources> 
<resource-root path="aqapi.jar" /> 
    <resource-root path="ojdbc5.jar"/> 
    <resource-root path="orai18n.jar"/> 
    </resources> 
    <dependencies> 
    <module name="javax.api"/> 
    <module name="javax.jms.api" /> 
    <module name="javax.transaction.api"/> 
    </dependencies> 
</module> 

: orai18n.jar,
을 Module.xml을 Module.xml. 어쩌면 두 모듈 (jdbc 및 aq) 사이의 통신에 단일 클래스 대신 두 개의 모듈을 사용할 때이 오류를 발생시키는 동일한 클래스 로더가 원시 구현을로드해야합니다.

0

대신 LD_LIBRARY_PATH를 설정하는 보스/제이보스 모듈은 자동으로 모듈에 네이티브 라이브러리를 찾을 수 있습니다 https://docs.jboss.org/author/display/MODULES/Native+Libraries

그래서 당신이 ${WILDFLY_HOME}/modules/oracle/jdbcaq/main/lib/linux-x86_64/에서 공유 라이브러리를로드 할 수 있습니다 .so 파일이나 감사 심볼릭 링크를 복사하여.

관련 문제