发新话题
打印

java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=1

java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=1

错误:
    java.sql.SQLException: Io 异常: Connection refused(DESCRIPTION=(TMP=)(VSNNUM=135294976)(ERR=12505)(ERROR_STACK=(ERROR=(CODE=12505)(EMFI=4))))

程序:
    import java.sql.*;
    ... ...
    try{
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    //cnn = DriverManager.getConnection("jdbcdbc:test/test@192.168.1.14:1521:ORCL");
    cnn = DriverManager.getConnection("jdbcracle:thin192.168.1.14:1521:ORCL","test","test");
    }
    catch(ClassNotFoundException e1)
    {
        System.out.println("ClassNotFoundException in Connecting:\n  " + e1.toString());
    }
    catch(SQLException e2)
   {                        
        System.out.println("SQLException in Connecting:\n  " + e2.toString());
    }

  ......

有劳各位高手gg或mm指点错误原因。      
www.ltebuy.net

TOP

看异常好像是你的lo没有正常工作。 用ifconfig命令看看lo是不是已经启动了。ifconfig的具体用法在其他帖子里应该有说明的。      

TOP

成功环境服务器192.168.1.14)
  程序不变
  Red Hat Linux Advanced Server release 2.1AS/i686 (Pensacola) + oracle8 + j2sj2sdk-1.4.2_05

失败环境开发平台192.168.1.237)
  程序不变
  Windows 2000 Server(sp4) + Eclipse3 + j2sj2sdk-1.4.2_05
  错误:java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection

附加:
从表面看来是否是oracle对远程连接存在问题。      
www.ltebuy.net

TOP

如果成功的环境是通过Localhost访问Oracle的, 就检查一下是不是有防火墙.      

TOP

没有安装防火墙的。
具体错误信息如下:
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
        at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:263)
        at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
        at java.sql.DriverManager.getConnection(DriverManager.java:512)
        at java.sql.DriverManager.getConnection(DriverManager.java:171)
        at common.connection.SPool.getNewConnection(SPool.java:99)
        at common.connection.SPool.getConnection(SPool.java:80)
        at Default.main(Default.java:27)      
www.ltebuy.net

TOP

[附加测试详细报告]
环境:
一台数据库服务器:linux redhat7.3 +J2SDK1.4.2_04 +oracle8iEE8.1.7;
一台web应用服务器:linux redhat7.3 +J2SDK1.4.2_04 +TOMCAT5.0.28;
目标:
web应用服务器通过oracle的java驱动thin方式访问数据库服务器;
问题:
web服务器上的oracle的java驱动thin方式无法访问数据库,抛出的错误为IO错误,如下:
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:210)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:323)
        at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:263)

        at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:365)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:260)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at java.sql.DriverManager.getConnection(Unknown Source)
        at TestAcct.main(TestAcct.java:15)
小的测试脚本代码:
import java.sql.*;

public class TestAcct
{
public static void main(String args[])
{
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbcracle:thin192.168.1.12:1521:ORCL","test","test");
Statement st=con.createStatement();
String Sql="select realname from userctl where user_name=′test′";
ResultSet rs=st.executeQuery(Sql);
if( rs!=null)
{
while( rs.next() )
{
System.out.println(rs.getString(1));
}
rs.close();
}
st.close();
con.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
已做的检查:
1、两台机器都没有防火墙;
2、该脚本在数据库服务器上能执行并返回正确的值打印;
3、该脚本在任意一台linux上都能访问由W2K +oracle8.1.7架构的数据库服务器,却不能在两个linux服务器间访问,报错信息相同;
4、oracle的listener都已经确认启动;
5、用PL SQL Developer都能访问数据库,用SQL命令“select * from product_component_version”查看产品信息视图,
linux下为:
1 NLSRTL 3.4.1.0.0 Production
2 Oracle8i Enterprise Edition 8.1.7.0.1 Production
3 PL/SQL 8.1.7.0.0 Production
4 TNS for Linux: 8.1.7.0.0 Development
W2K下为:
1 NLSRTL 3.4.1.0.0 Production
2 Oracle8i Enterprise Edition 8.1.7.0.0 Production
3 PL/SQL 8.1.7.0.0 Production
4 TNS for 32-bit Windows: 8.1.7.0.0 Production
只有2、4项有区别。
这个我不太了解,您能和我讲讲吗?
我现在linux下oracle数据库用户名test的角色添加了connect和resource,
以前在W2K下一直是这么配的,W2K之间都能互相访问,linux也可以访问W2K的数据库;
另外作了一个linux上的数据库用户名做的测试角色添加的是connect和javauserpriv,也是不行。      
www.ltebuy.net

TOP

帮你在Google上搜了一下。
http://www.huihoo.com/compiere/setup.html
自己几乎没有用过Oracle,真是无从解答啊       

TOP

文中是以一个开源的应用为目标来讲解的, 你只要看看后面那个Compiere.properties的设置, 好像是JDBC Connection的参数。      

TOP

ghosttrain,非常感谢你。      
www.ltebuy.net

TOP

发新话题