DriverManager не может вернуть соединение после обновления Java 8 - PullRequest
0 голосов
/ 17 апреля 2019

У меня есть приложение, которое пытается подключиться к Impala и Oracle. Ниже определены 2 боба.

Драйвер Impala - ImpalaJDBC41-2.5.41.jar Драйвер Oracle - ojdbc6.jar

<bean id="ID1" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

<property name="driverClassName" value="com.cloudera.impala.jdbc41.Driver"/>

<property name="url" value="jdbc:impala://impalahost:21050/;AuthMech=1;KrbRealm=myrealm;KrbServicName=impala;KrbHostFQDN=xxx" />

</bean>

<bean id="ID2" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@//oraclehost:1523/DB" />
<property name="username" value="myuser" />
<property name="password" value="pwd" />
<property name="connectionProperties">
<props>
<prop key="defaultRowPrefetch">5000</prop>
</props>
</property>
</bean>

При получении соединения «Oracle» со ссылкой на компонент - ID2, получая это исключение (на удивление, это относится к коду драйвера cloudera) -

==java.lang.NullPointerException
===Stack trace...
java.util.Hashtable.put(Unknown Source)
com.cloudera.jdbc.common.AbstractDriver.copyProperties(Unknown Source)
com.cloudera.jdbc.common.AbstractDriver.connect(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source)
java.sql.DriverManager.getConnection(Unknown Source) org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFrom 
DriverManager(DriverManagerDataSource.java:173) org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFrom 
Driver(DriverManagerDataSource.java:164) org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:149) org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:119) org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)

Те же конфигурации отлично работают с Java 1.7

1 Ответ

0 голосов
/ 26 апреля 2019

Проблема возникает, когда драйвер Impala загружается до загрузки драйвера Oracle; поскольку ImpalaJDBC41-2.5.41.jar указывается перед ojdbc6.jar (в алфавитном порядке). Таким образом, у меня было 2 варианта загрузки драйвера Oracle в первую очередь, и оба работают нормально -

  1. переименуйте банку Impala в ZImpala, чтобы она направлялась после ojdbc jar

  2. Но подход «чище и лучше» состоял в том, чтобы загрузить драйвер Oracle с настраиваемым модулем, настроив его как источник данных JDBC внутри Jboss standalone.xml; который загрузит драйвер Oracle еще до развертывания EAR нашего приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...