JT400-当从windows机器连接到IBMi机器时,JDBC连接工作正常。
DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
String sysname = "xxx.xxx.xx.xxx";
String xref = "IBMISQLLIB";
String url = "jdbc:as400://" + sysname + ";translate binary=true;prompt=false;naming=sql;libraries=" + xref;
Connection connection = DriverManager.getConnection(url, "USERNAME", "PASSWORD");
print("Connection created successfully");
但是无法使用相同的代码创建连接-当在同一台IBMi机器上运行代码时(通过"QSH命令项"上的可运行jar(,错误:
java.sql.SQLException:应用程序请求程序无法建立联系(远程主机拒绝了尝试的连接操作。(连接被拒绝((com.ibm.as400.access.JDError.createSQLExceptionSubClass(JDError.java:887(网址:com.ibm.as400.access.JDError.sthrowSQLException(JDError.java:610(网址:com.ibm.as400.access.JDError.sthrowSQLException(JDError.java:568(在com.ibm.as400.access.AS400JDBConnectionImpl.setProperties(AS400JDBConnection Impl.java:3522(在com.ibm.as400.access.AS400JDBCDriver.prepareConnection(AS400JDBCDriver.java:1430(com.ibm.as400.access.AS400JDBCDriver.initializeConnection(AS400JDBCDriver.java:1280(在com.ibm.as400.access.AS400JDBCDriver.connect(AS400JDBCDriver.java:403(位于java.sql.DriverManager.getConnection(DriverManager.java:675(java.sql.DriverManager.getConnection(DriverManager.java:258(
知道现在出了什么问题吗??
- 因为这几天前还在工作
- 相同的代码在其他IBMi服务器上工作
有关IBMi机器的更多详细信息如下:
- 连接配置文件中使用的用户名没有访问权限问题
- IBMi机器上未设置防火墙
- TCP/IP配置已按照说明进行验证-在IBM i上配置TCP/IP
数据库主机服务器是否处于活动状态?使用WRKACTJOB查看作业名称QZDASOINT是否正在运行。
如果没有,请尝试使用命令STRHOSTSVR*DATABASE启动主机服务器。
如果您从QSH运行jar文件,则需要确保允许多线程。这可能会把事情搞砸。
如果在PC上运行,相同的代码应该可以正常工作,除非您可能也使用不同版本的jt400.jar文件。
也可以尝试使用localhost而不是系统名称。
甚至可以编写一个Java小类来打开和关闭连接。
问题与默认TCP/IP端口有关,该端口未侦听JDBC连接请求。
最后,通过重新启动IBMi机器,问题得到了解决。
:(