当前位置: 首页 > 知识库问答 >
问题:

我连接到远程DB2时收到“操作超时。错误代码=-4499,SQLSTATE=08001”

梁丘伟
2023-03-14

我正试图使用IBM Type 4 JDBC驱动程序连接到远程DB2。这是我的配置:

服务器:

  • Windows 7 professional
  • DB2 LUW V10.5
  • DB2 SVCENAME=50000
  • TCP/IP通信

客户:

  • 苹果操作系统V10.10.3

我的理解是,如果您用Java编写客户端应用程序并使用类型4-纯Java-驱动程序,客户端不必安装客户端。该应用程序将使用DRDA直接连接到远程数据库。

下面是我试图访问远程db2的一段代码:

public class BlobRetrieval {

    static String databaseDriver;
    static String dbURL;
    static String userName;
    static String password;
    static Connection passConn; 

public static void main(String[] args) {        
    databaseDriver = "com.ibm.db2.jcc.DB2Driver";
    dbURL = "jdbc:db2://192.168.1.81:50000/LOBDB";
    userName = "ace";
    password = "ace";
    try {
        Class.forName(databaseDriver).newInstance();
        System.out.println("register successful");
        Connection connection = DriverManager.getConnection(dbURL, userName, password);
        System.out.println("connection successful");
        passConn = connection;
        PreparedStatement preparedStatement=connection.prepareStatement("SELECT BOOKCOVER FROM BOOKCOVERS WHERE BOOKISBN=?");
        preparedStatement.setString(1, "0738425826");
    }
}

当我执行这些语句时,我得到以下错误:

注册成功com。ibm。db2.jcc。是DisconnectNonTransientConnectionException:[jcc][t4][2043][11550][4.19.26]java异常。网ConnectException:在端口50000上打开服务器/192.168.1.81的套接字时出错,消息为:操作超时。com上的错误代码=-4499,SQLSTATE=08001。ibm。db2.jcc。是kd。com上的(未知源)。ibm。db2.jcc。是kd。com上的(未知源)。ibm。db2.jcc。t4.ac.a(未知来源)在com。ibm。db2.jcc。t4.ac.(未知来源)在com。ibm。db2.jcc。t4.a.b(未知来源)在com。ibm。db2.jcc。t4.b.newAgent_u(未知来源)位于com。ibm。db2.jcc。是联系com上的initConnection(未知源)。ibm。db2.jcc。是联系(未知来源)在com。ibm。db2.jcc。t4.b.(未知来源)见com。ibm。db2.jcc。DB2SimpleDataSource。com上的getConnection(未知源)。ibm。db2.jcc。DB2SimpleDataSource。com上的getConnection(未知源)。ibm。db2.jcc。DB2Driver。在com上连接(未知源)。ibm。db2.jcc。DB2Driver。在java上连接(未知源)。sql。驾驶员经理。java上的getConnection(DriverManager.java:664)。sql。驾驶员经理。dbAccessPackage上的getConnection(DriverManager.java:247)。BlobRetrieval。main(BlobRetrieval.java:30)由:java引起。网ConnectException:操作在java上超时。网PlainSocketImpl。java上的socketConnect(本机方法)。网AbstractPlainSocketImpl。java上的doConnect(AbstractPlainSocketImpl.java:345)。网AbstractPlainSocketImpl。在java上连接到地址(AbstractPlainSocketImpl.java:206)。网AbstractPlainSocketImpl。在java上连接(AbstractPlainSocketImpl.java:188)。网SocksSocketImpl。在java上连接(SocksSocketImpl.java:392)。网插座在com上连接(Socket.java:589)。ibm。db2.jcc。在java上运行(未知源代码)。安全AccessController。doPrivileged(本机方法

共有2个答案

公孙辰龙
2023-03-14

我也有同样的问题。然后花大约4个小时,以下解决方案对我有效:

项目浏览器-

<Connector port="8484" protocol="AJP/1.3" redirectPort="8484 "/>

我使用分配给服务器的相同端口号(即8080或8484)更改端口和重定向端口。

希望这能奏效。

赖运珧
2023-03-14

在许多情况下,服务器上的本地防火墙是一个问题。Windows防火墙可能会阻止传入请求。

你能检查一下端口是否打开(防火墙报告的任何阻塞)?DB2服务器的“db2diag.log”(诊断日志文件)中是否有任何活动?作为一个快速测试,您可以从您的客户机上执行“telnet 192.168.1.81 50000”。如果成功连接,防火墙就不再是问题了。

 类似资料: