Java IOException:网络适配器无法建立连接
在我们的生产环境中,我们不时会遇到“网络适配器无法建立连接”的问题,我在谷歌上做了很多搜索,并在这里讨论了一些问题,但仍然没有找到解决方案 以下是有关我们环境的一些信息:Java IOException:网络适配器无法建立连接,java,oracle,jdbc,Java,Oracle,Jdbc,在我们的生产环境中,我们不时会遇到“网络适配器无法建立连接”的问题,我在谷歌上做了很多搜索,并在这里讨论了一些问题,但仍然没有找到解决方案 以下是有关我们环境的一些信息: 我们将RAC用于2个oracle实例(版本10.2.0.4) 我们有几个应用服务器(JBossAS5)运行在RAC之上 oracle-ds.xml中的连接url是“jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=db1_vip)
java.sql.SQLException: Io Exception: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207)
... 5 more
java.sql.SQLException:Io异常:网络适配器无法建立连接
位于oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
位于oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
位于oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
位于oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
位于oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:414)
位于oracle.jdbc.driver.T4CConnection(T4CConnection.java:165)
位于oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
位于oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
位于org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207)
…还有5个
错误
java.sql.SQLException:Io异常:网络适配器无法启动
建立连接
与Java/JDBC
无关。
这是当您的网络设置出现问题时出现的错误。我猜是防火墙问题。您可以禁用它并查看错误是否仍然存在吗?编辑连接并测试它,尽管您的tnsping找到了!(如果使用virtualbox)(在适配器中检查允许全部),在我的例子中,错误是当我使用ip而不是使用localhost时,我们可以做到这一点,但我真的怀疑这是真正的原因,因为这个错误是间歇性发生的,ping和telnet都工作,而另一个应用服务器大部分时间都工作。我明白了,你不能长时间禁用它。我在想,因为它偶尔会发生一次,防火墙可能会丢弃一些tcp/ip数据包,客户端计算机上的tcp堆栈会将其解释为无法连接。但这只是一个假设。我们使用了应用程序服务器和数据库服务器之间的ping,没有发现任何数据包丢失,不确定这是否是最佳方式。我建议您使用Wireshark()查看更多详细信息。我认为jdbc错误消息太笼统了。我们使用了wireshark,没有发现任何可疑信息~这只是一个提示:我在x64上的java7出现了网络错误。如果您使用的是java7,请尝试版本6。我们在两个应用服务器上都使用jdk5。尝试使用db服务器的ip地址,而不是主机名;如果这样做没有任何问题,请尝试使用失败后,您可以将问题缩小到dns主机名解析。我们将主机名更改为ip地址,但仍然可以看到这种情况。。