[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