gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:51:43 25 4
gpt4 key购买 nike

我目前正忙于从版本 4.2.2GA 到 Wildfly 8.0.0.Final 的 JBoss 迁移项目。该项目使用 Oracle OCI 驱动程序进行数据库访问,并使用 Oracle AQ。现在,我启动 Wildfly,将环境变量“LD_LIBRARY_PATH”设置为 OCI native 实现所在的位置,一切正常,AQ 除外。这是我在使用 AQ API 时遇到的错误: >

这是我的模块:
路径:${WILDFLY_HOME}/modules/oracle/aq/api/main
内容:aqapi.jar、module.xml
模块.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 版本,我发现了这个问题:https://issues.jboss.org/browse/SOA-3570它传播将 aqapi.jar 放入服务器 lib 文件夹,就像我们为 JBoss 4 所做的那样。但是我如何为 Wildfly 解决这个问题?有什么想法吗?

谢谢!

最佳答案

经过漫长的互联网浅滩之旅和多次尝试后,我的一位同事终于找到了解决方案。

解决方案是将两个模块合并为一个 jdbc/aq 模块,如下所示:

路径:${WILDFLY_HOME}/modules/oracle/jdbcaq/main
内容:ojdbc5.jar、aqapi.jar、orai18n.jar、module.xml
模块.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)之间的通信需要由同一个类加载器加载 native 实现,这会在使用两个模块而不是单个模块时导致此错误。

关于java - 如何将 Oracle AQ 库配置为 Wildfly 8 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22503296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com