无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源
Posted
技术标签:
【中文标题】无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源【英文标题】:Unable to create oracle data source in Jboss EAP 7.0 server 【发布时间】:2017-05-18 13:59:32 【问题描述】:我需要在 JBOSS EAP 7.0 服务器中创建一个 oracle 数据源
我使用以下命令从 JBOSS 管理 CLI(命令行界面)部署了 ojdbc6.jar
deploy <PATH_TO_ORACLE_DRIVER_JAR>
驱动部署后,我可以看到如下服务器日志
01:25:53,338 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0018: Started Driver service with driver-name = ojdbc6.jar
01:25:53,747 INFO [org.jboss.as.server] (management-handler-thread - 6) WFLYSRV0010: Deployed "ojdbc6.jar" (runtime-name : "ojdbc6.jar")
但是当我尝试从 Jboss 管理控制台创建 oracle 数据源(oracle.jdbc.driver.OracleDriver 作为驱动程序类)时,我收到以下错误
01:31:35,084 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 66) WFLYCTL0013: Operation ("add") failed - address: ([
("subsystem" => "datasources"),
("data-source" => "OracleDS")
]) - failure description: "WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.driver-demander.java:/OracleDS is missing [jboss.jdbc-driver.oracle]",
"org.wildfly.data-source.OracleDS is missing [jboss.jdbc-driver.oracle]"
]
01:31:35,092 INFO [org.jboss.as.controller] (ServerService Thread Pool -- 66) WFLYCTL0183: Service status report
WFLYCTL0184: New missing/unsatisfied dependencies:
service jboss.data-source.reference-factory.OracleDS (missing) dependents: [service jboss.naming.context.java.OracleDS]
service jboss.data-source-config.OracleDS (missing) dependents: [service org.wildfly.data-source.OracleDS]
service jboss.jdbc-driver.oracle (missing) dependents: [service jboss.driver-demander.java:/OracleDS, service org.wildfly.data-source.OracleDS]
1) 我可以知道是什么导致了这个问题吗?缺少什么依赖? 2) 将 JDBC 驱动安装为 JAR 部署以创建数据源的方法是否正确?
【问题讨论】:
mastertheboss.com/jboss-server/jboss-datasource/… 【参考方案1】:将 JDBC 驱动程序安装为核心模块
在 $JBOSS_HOME/modules 下创建一个目录。在本例中:“$JBOSS_HOME/modules/com/oracle/jdbc/main”。
把JDBC驱动jar(ojdbc6.jar)放到这个目录下。
创建模块配置文件module.xml:
示例 Oracle JDBC 驱动程序 module.xml 文件
<?xml version="1.0" ?>
<module xmlns="urn:jboss:module:1.1" name="com.oracle">
<resources>
<resource-root path="ojdbc6.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
Oracle 数据源配置示例
<datasources>
<datasource jndi-name="java:jboss/OracleDS" pool-name="OracleDS">
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver>oracle</driver>
<security>
<user-name>admin</user-name>
<password>admin</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleValidConnectionChecker"/>
<validate-on-match>true</validate-on-match>
<background-validation>false</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleStaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter"/>
</validation>
</datasource>
<drivers>
<driver name="oracle" module="com.oracle">
<xa-datasource-class>oracle.jdbc.xa.client.OracleXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
示例管理 CLI 命令
可以使用以下管理 CLI 命令来实现此示例配置。
1#添加Oracle JDBC驱动作为核心模块。
模块添加--name=com.oracle --resources=/path/to/misc/jdbc_drivers/oracle/ojdbc7.jar --dependencies=javax.api,javax.transaction.api
2#注册Oracle JDBC驱动。
/subsystem=datasources/jdbc-driver=oracle:add(driver-name=oracle,driver-module-name=com.oracle,driver-xa-datasource-class-name=oracle.jdbc.xa.client. OracleXADataSource)
3#添加Oracle数据源。
数据源添加 --name=OracleDS --jndi-name=java:jboss/OracleDS --driver-name=oracle --connection-url=jdbc:oracle:thin:@localhost:1521:XE --用户名=admin --password=admin --validate-on-match=true --background-validation=false --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions。 oracle.OracleValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.oracle.OracleExceptionSorter --stale-connection-checker-class-name=org.jboss.jca.adapters.jdbc。 extensions.oracle.OracleStaleConnectionChecker
参考链接https://access.redhat.com/documentation/en/red-hat-jboss-enterprise-application-platform/version-7.0/configuration-guide/#datasource_management
【讨论】:
以上是关于无法在 Jboss EAP 7.0 服务器中创建 oracle 数据源的主要内容,如果未能解决你的问题,请参考以下文章
JBoss EAP 7.0 java.lang.IllegalStateException: 未知标签! pos=3 poolCount = 20 警告
SpringBoot jars 作为 JBoss EAP 7.0 中的自定义模块
将基于 JSF 1.2 的 Web 应用程序部署到 JBoss EAP 7.0
无法在 Jboss-eap-6.4 中部署 Spring Boot 应用程序