我越来越“操作超时.ERRORCODE=-4499, SQLSTATE=08001"连接到远程 DB2 [英] I am getting " Operation timed out. ERRORCODE=-4499, SQLSTATE=08001" connecting to remote DB2

查看:47
本文介绍了我越来越“操作超时.ERRORCODE=-4499, SQLSTATE=08001"连接到远程 DB2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am attempting to connect to a remote DB2 using IBM Type 4 JDBC driver. Here is my configuration:

服务器:

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

客户:

  • OS/x V10.10.3
  • 日食火星
  • IBM DB2 Java Type 4 驱动程序

据我了解,如果您使用 Java 编写客户端应用程序并使用类型 4(纯 Java)驱动程序,则客户端不必安装客户端.该应用程序将使用 DRDA 直接连接到远程数据库.

It is my understanding that if you write the client app in Java and use the type 4—pure Java—drivers, the client doesn't have to have a client installed. The app will use DRDA to connect directly to the remote database.

这是我尝试访问远程 db2 的代码片段:

Here is a snippet of code that I tried to access the remote 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");
    }
}

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

When I execute these statements, I get the following error:

注册成功com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException:[jcc][t4][2043][11550][4.19.26] 异常java.net.ConnectException:打开到服务器的套接字时出错/192.168.1.81 在端口 50,000 上显示消息:操作超时.错误代码=-4499,SQLSTATE=08001在 com.ibm.db2.jcc.am.kd.a(未知来源)在 com.ibm.db2.jcc.am.kd.a(未知来源)在 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_(未知来源)在 com.ibm.db2.jcc.am.Connection.initConnection(未知来源)在 com.ibm.db2.jcc.am.Connection.(未知来源)在 com.ibm.db2.jcc.t4.b.(未知来源)在 com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(未知来源)在 com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(未知来源)在 com.ibm.db2.jcc.DB2Driver.connect(未知来源)在 com.ibm.db2.jcc.DB2Driver.connect(未知来源)在 java.sql.DriverManager.getConnection(DriverManager.java:664)在 java.sql.DriverManager.getConnection(DriverManager.java:247)在 dbAccessPackage.BlobRetrieval.main(BlobRetrieval.java:30)引起:java.net.ConnectException:操作超时在 java.net.PlainSocketImpl.socketConnect(本机方法)在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)在 java.net.Socket.connect(Socket.java:589)在 com.ibm.db2.jcc.t4.w.run(未知来源)在 java.security.AccessController.doPrivileged(Native Method)

register successful com.ibm.db2.jcc.am.DisconnectNonTransientConnectionException: [jcc][t4][2043][11550] [4.19.26] Exception java.net.ConnectException: Error opening socket to server /192.168.1.81 on port 50,000 with message: Operation timed out. ERRORCODE=-4499, SQLSTATE=08001 at com.ibm.db2.jcc.am.kd.a(Unknown Source) at com.ibm.db2.jcc.am.kd.a(Unknown Source) at com.ibm.db2.jcc.t4.ac.a(Unknown Source) at com.ibm.db2.jcc.t4.ac.(Unknown Source) at com.ibm.db2.jcc.t4.a.b(Unknown Source) at com.ibm.db2.jcc.t4.b.newAgent_(Unknown Source) at com.ibm.db2.jcc.am.Connection.initConnection(Unknown Source) at com.ibm.db2.jcc.am.Connection.(Unknown Source) at com.ibm.db2.jcc.t4.b.(Unknown Source) at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source) at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(Unknown Source) at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source) at com.ibm.db2.jcc.DB2Driver.connect(Unknown Source) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:247) at dbAccessPackage.BlobRetrieval.main(BlobRetrieval.java:30) Caused by: java.net.ConnectException: Operation timed out at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) at java.net.Socket.connect(Socket.java:589) at com.ibm.db2.jcc.t4.w.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method)

推荐答案

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

In many cases the local firewall on the server is an issue. The Windows firewall could be blocking the incoming request.

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

Could you check that the port is open (any blocking reported by the firewall)? Is any activity seen in the "db2diag.log" (diagnostic log file) of the DB2 server? As a quick test you could do a "telnet 192.168.1.81 50000" from your client machine. If that succeeds and you got a connection, the firewall is not an issue (anymore).

这篇关于我越来越“操作超时.ERRORCODE=-4499, SQLSTATE=08001"连接到远程 DB2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆