【问题标题】:Creating data source issue-error in Oracle Weblogic Server 10.3.6在 Oracle Weblogic Server 10.3.6 中创建数据源问题-错误
【发布时间】:2018-10-24 05:10:17
【问题描述】:

我已经在我的本地计算机 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 服务器中的数据源配置过程中遗漏了什么。请帮我解决问题。

【问题讨论】:

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


【解决方案1】:

查找错误后,终于明白真正的问题是什么了。

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

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

【讨论】:

    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2013-04-19
    • 2013-10-25
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多