我正在尝试使用 IBM Type 4 JDBC 驱动程序连接到远程 DB2。这是我的配置:
服务器:
客户:
我的理解是,如果您用 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");
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行这些语句时,出现以下错误:
注册成功 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带有消息:操作超时。ERRORCODE=-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.ab(未知来源),位于 com.ibm。 com.ibm.db2.jcc.am.Connection.initConnection(Unknown Source) 上的 db2.jcc.t4.b.newAgent_(Unknown Source) com.ibm.db2.jcc.am.Connection.(Unknown Source) 上的 com .ibm.db2.jcc.t4.b.(未知来源)位于 com.ibm.db2.jcc.DB2SimpleDataSource。
在许多情况下,服务器上的本地防火墙是一个问题。Windows 防火墙可能阻止传入请求。
您能否检查端口是否打开(防火墙报告的任何阻止)?在 DB2 服务器的“db2diag.log”(诊断日志文件)中是否看到任何活动?作为快速测试,您可以从客户端计算机执行“telnet 192.168.1.81 50000”。如果成功并且您获得了连接,那么防火墙就不再是问题了。
| 归档时间: |
|
| 查看次数: |
15380 次 |
| 最近记录: |