Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将Oracle AQ库配置为Wildfly 8模块?_Java_Oracle_Jboss_Wildfly_Oracle Aq - Fatal编程技术网

Java 如何将Oracle AQ库配置为Wildfly 8模块?

Java 如何将Oracle AQ库配置为Wildfly 8模块?,java,oracle,jboss,wildfly,oracle-aq,Java,Oracle,Jboss,Wildfly,Oracle Aq,我目前正处于从4.2.2Ga到野飞80.0.决赛的JBOSS迁移项目的中间。该项目使用Oracle OCI驱动程序进行数据库访问,并使用Oracle AQ进行访问。现在,我开始使用环境变量'LD_LIBRARY_PATH'启动Wildfly,将其设置为OCI本机实现所在的位置,并且除了AQ之外,一切正常。这是我在使用AQ API时遇到的错误:oracle.jms.AQjmsSession.ociinit([JIIZSII)J:java.lang.unsatifiedlinkerror:oracl

我目前正处于从4.2.2Ga到野飞80.0.决赛的JBOSS迁移项目的中间。该项目使用Oracle OCI驱动程序进行数据库访问,并使用Oracle AQ进行访问。现在,我开始使用环境变量'LD_LIBRARY_PATH'启动Wildfly,将其设置为OCI本机实现所在的位置,并且除了AQ之外,一切正常。这是我在使用AQ API时遇到的错误:
oracle.jms.AQjmsSession.ociinit([JIIZSII)J:java.lang.unsatifiedlinkerror:oracle.jms.AQjmsSession.ociinit([JIIZSII)J

这是我的模块:
路径:${WILDFLY_HOME}/modules/oracle/aq/api/main
内容:aqapi.jar,module.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>

现在的问题是,Wildfly不将“LD_LIBRARY_PATH”传播到模块类加载器的原因是什么

对于较旧的JBoss版本,我发现了这个问题:在我们为JBoss 4所做的工作中,通过传播将aqapi.jar放入服务器库文件夹。但是我如何为Wildfly解决这个问题?有什么想法吗


谢谢!

我的一位同事在互联网的浅滩上走了很长一段路,尝试了很多次,终于找到了解决办法

解决方案是将两个模块合并为一个jdbc/aq模块,看起来是这样的:

路径:${WILDFLY_HOME}/modules/oracle/jdbcaq/main
内容:ojdbc5.jar、aqapi.jar、orai18n.jar、module.xml
module.xml:

<?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>


我认为这在某种程度上与wildfly的模块类加载器有关。可能是两个模块之间的通信(jdbc和aq)要求本机实现由相同的类加载器加载,这在使用两个模块而不是单个模块时会导致此错误。

JBoss/WildFly模块也可以自动在模块中查找本机库,而不是设置
LD\u LIBRARY\u PATH

因此,您可以通过复制
.So
文件或通过符号链接,在
${WILDFLY_HOME}/modules/oracle/jdbcaq/main/lib/linux-x86_64/
中加载共享库