[jboss-jira] [JBoss JIRA] (WFLY-10637) NPE when reading oracle jdbc 12.2.0.1 datasource with include-runtime
Lin Gao (JIRA)
issues at jboss.org
Tue Jun 26 01:32:00 EDT 2018
[ https://issues.jboss.org/browse/WFLY-10637?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13596560#comment-13596560 ]
Lin Gao commented on WFLY-10637:
--------------------------------
>From the settings:
{code:java}
driver-datasource-class-name=oracle.jdbc.datasource.OracleDataSource
{code}
+oracle.jdbc.datasource.OracleDataSource+ is an interface, not a concrete class, so you are specifying wrong datasource-class-name.
{code:java}
[lgao at lgao wildfly]$ javap -cp ~/Downloads/ojdbc8.jar oracle.jdbc.datasource.OracleDataSource
Compiled from "OracleDataSource.java"
public interface oracle.jdbc.datasource.OracleDataSource extends javax.sql.DataSource,oracle.jdbc.datasource.OracleCommonDataSource {
public abstract oracle.jdbc.OracleConnectionBuilder createConnectionBuilder() throws java.sql.SQLException;
}
{code}
So I propose to close this issue as not a bug.
On the other hand, it is better to validate the datasource-class-name and xa-datasource-class-name when specifying them.
> NPE when reading oracle jdbc 12.2.0.1 datasource with include-runtime
> ---------------------------------------------------------------------
>
> Key: WFLY-10637
> URL: https://issues.jboss.org/browse/WFLY-10637
> Project: WildFly
> Issue Type: Bug
> Components: JCA
> Reporter: Claudio Miranda
> Assignee: Lin Gao
>
> Download oracle jdbc driver at http://www.oracle.com/technetwork/database/features/jdbc/jdbc-ucp-122-3110062.html
> Install the driver as a module
> {code}
> $ cat modules/system/layers/base/com/oracle/jdbc/main/module.xml
> <?xml version="1.0" encoding="UTF-8"?>
> <module name="com.oracle.jdbc" xmlns="urn:jboss:module:1.5">
> <resources>
> <resource-root path="ojdbc8.jar"/>
> </resources>
> <dependencies>
> <module name="javax.api"/>
> <module name="javax.transaction.api"/>
> </dependencies>
> </module>
> {code}
> Add the jdbc-driver resource
> {code}
> /profile=full-ha/subsystem=datasources/jdbc-driver=oracle_8_xa:add(driver-module-name=com.oracle.jdbc,driver-name=oracle_8_xa,driver-datasource-class-name=oracle.jdbc.datasource.OracleDataSource,driver-xa-datasource-class-name=oracle.jdbc.xa.client.OracleXADataSource,driver-class-name=oracle.jdbc.OracleDriver)
> {code}
> Wildfly log shows it is ok
> {code}
> [Server:server-three] 13:44:28,939 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool -- 73) WFLYJCA0004: Deploying JDBC-compliant driver class oracle.jdbc.OracleDriver (version 12.2)
> [Server:server-three] 13:44:28,939 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-6) WFLYJCA0018: Started Driver service with driver-name = oracle_8_xa
> {code}
> Read the jdbc-driver on a runtime server
> {code}
> /host=master/server=server-three/subsystem=datasources/jdbc-driver=oracle_8_xa:read-resource(include-runtime)
> {
> "outcome" => "success",
> "result" => undefined,
> "failure-description" => undefined
> {code}
> Wildfly log shows the error
> {code}
> 2018-06-25 13:45:00,165 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 73) WFLYCTL0013: Operation ("read-attribute") failed - address: ([
> ("subsystem" => "datasources"),
> ("jdbc-driver" => "oracle_8_xa")
> ]): java.lang.NullPointerException
> at org.jboss.as.connector.subsystems.datasources.GetDataSourceClassInfoOperationHandler.possiblePropsSetters(GetDataSourceClassInfoOperationHandler.java:182)
> at org.jboss.as.connector.subsystems.datasources.GetDataSourceClassInfoOperationHandler.findPropsFromCls(GetDataSourceClassInfoOperationHandler.java:124)
> at org.jboss.as.connector.subsystems.datasources.GetDataSourceClassInfoOperationHandler.dsClsInfoNode(GetDataSourceClassInfoOperationHandler.java:96)
> at org.jboss.as.connector.subsystems.datasources.GetDataSourceClassInfoOperationHandler$1.execute(GetDataSourceClassInfoOperationHandler.java:82)
> at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:999)
> at org.jboss.as.controller.AbstractOperationContext.processStages(AbstractOperationContext.java:743)
> at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:467)
> at org.jboss.as.controller.OperationContextImpl.executeOperation(OperationContextImpl.java:1411)
> at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:423)
> at org.jboss.as.controller.ModelControllerImpl.lambda$execute$1(ModelControllerImpl.java:243)
> at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:263)
> at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:229)
> at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:243)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler.internalExecute(TransactionalProtocolOperationHandler.java:249)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler.doExecute(TransactionalProtocolOperationHandler.java:190)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$1.run(TransactionalProtocolOperationHandler.java:143)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$1.run(TransactionalProtocolOperationHandler.java:139)
> at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:263)
> at org.wildfly.security.auth.server.SecurityIdentity.runAs(SecurityIdentity.java:229)
> at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:198)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2$1.run(TransactionalProtocolOperationHandler.java:162)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2$1.run(TransactionalProtocolOperationHandler.java:158)
> at java.security.AccessController.doPrivileged(Native Method)
> at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2.execute(TransactionalProtocolOperationHandler.java:158)
> at org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$1.doExecute(ManagementRequestContextImpl.java:70)
> at org.jboss.as.protocol.mgmt.ManagementRequestContextImpl$AsyncTaskRunner.run(ManagementRequestContextImpl.java:160)
> at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
> at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
> at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
> at java.lang.Thread.run(Thread.java:748)
> at org.jboss.threads.JBossThread.run(JBossThread.java:485)
> {code}
> It works if omit include-runtime, but there is no runtime information
> The following drivers works with include-runtime
> - postgresql-42.2.2.jre6.jar
> - ojdbc7.jar
> - mssql-jdbc-6.5.3.jre8-preview.jar
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the jboss-jira
mailing list