在Oracle Weblogic Server 10.3.6中创建数据源问题错误

时间:2018-05-14 13:51:58

标签: oracle jdbc database-connection datasource weblogic-10.x

我已在本地计算机Windows 7中安装了Oracle Weblogic Server。现在我正在尝试创建新的数据源。

我有一个托管在不同位置的数据库。我有连接属性,我可以从我的机器中的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 :(得分:0)

在寻找错误后,终于明白了实际问题是什么。

Java 7默认使用IPv6协议。所以我强制使用java来代替IPv6。

解决方案:

打开已安装weblogic的域文件夹。默认情况下,名称为&#34; base_domain&#34;如果你在安装过程中没有改变它。所以进去&#34; base_domain / bin&#34;并打开文件&#34; setDomainEnv.cmd&#34;用于编辑(对于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

您可以将其添加到环境变量中,这应该可行。但是,如果这不起作用,那么你可以按照我上面所做的那样做。希望这有帮助!