Ошибка источника данных в Oracle Weblogic Server 10.3.6 - PullRequest
0 голосов
/ 14 мая 2018

Я установил Oracle Weblogic Server на локальном компьютере Windows 7. Теперь я пытаюсь создать новый источник данных.

У меня есть база данных, которая находится в другом месте.У меня есть свойства соединения, с помощью которых я могу успешно выполнить тестовое соединение от клиента SQL_Developer на моей машине.

Детали соединения с базой данных:

> URL : jdbc:oracle:thin:@hostname:port:DB_Name
> 
> Driver Class : oracle.jdbc.xa.client.OracleXADataSource

Однако, когда я использую те же свойства соединения всервер weblogic для подключения к той же базе данных выдает следующую ошибку:

> Connection test failed.
IO Error: The Network Adapter could not establish the connection
<br/>oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:458)
<br/>oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
<br/>oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
<br/>oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
<br/>oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
<br/>oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
<br/>oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:469)
<br/>oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:156)
<br/>oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:101)
<br/>weblogic.jdbc.common.internal.DataSourceUtil.testConnection(DataSourceUtil.java:314)
<br/>com.bea.console.utils.jdbc.JDBCUtils.testConnection(JDBCUtils.java:734)
<br/>com.bea.console.actions.jdbc.datasources.createjdbcdatasource.CreateJDBCDataSource.testConnectionConfiguration(CreateJDBCDataSource.java:474)
<br/>sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
<br/>sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
<br/>sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
<br/>java.lang.reflect.Method.invoke(Method.java:606)
<br/>org.apache.beehive.netui.pageflow.FlowController.invokeActionMethod(FlowController.java:870)
<br/>org.apache.beehive.netui.pageflow.FlowController.getActionMethodForward(FlowController.java:809)
<br/>org.apache.beehive.netui.pageflow.FlowController.internalExecute(FlowController.java:478)
<br/>org.apache.beehive.netui.pageflow.PageFlowController.internalExecute(PageFlowController.java:306)

Ниже приведена трассировка стека, которую я получаю через консоль:

> Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:434)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:687)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:247)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)

Продолжение дониже:

> Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:79)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:579)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:150)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:370)

У меня на компьютере установлены следующие версии:

>    JDK : 1.7
>    Weblogic : 10.3.6
>    ojdbc6.jar (part of weblogic installation, no extra 3rd party driver being used)

Пожалуйста, дайте мне знать, что мне не хватает во время настройки источника данных на сервере weblogic.Пожалуйста, помогите мне решить проблему.

1 Ответ

0 голосов
/ 15 мая 2018

После поиска ошибок, наконец, понял, в чем проблема.

Java 7 по умолчанию использует протокол IPv6. Поэтому я принудил Java использовать IPv4 вместо IPv6.

Решение:

Откройте папку домена, в которой был установлен weblogic. По умолчанию имя «base_domain», если вы не меняете его во время установки. Поэтому зайдите в «base_domain / bin» и откройте файл «setDomainEnv.cmd» для редактирования (для Linux-машины используйте файл setDomainEnv.sh), а затем найдите следующую строку:

set JAVA_OPTIONS=%JAVA_OPTIONS%

Just add a space after that and add the following : 
-Djava.net.preferIPv4Stack=true

So your final line should look like : set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.net.preferIPv4Stack=true

и сохраните файл и выйдите. Перезапустите сервер weblogic и проверьте источник данных.

Main thing is the parameter : -Djava.net.preferIPv4Stack=true

Вы можете добавить его в переменные окружения, которые должны работать. Однако, если это не сработает, вы можете следовать тому, что я сделал выше. Надеюсь, это поможет!

...