有人可以帮我吗?我有一个小型实用程序,它使用 Jt400-6.7.jar 连接到 AS400 服务器。
请看以下代码
private Connection buildConnection(String url, String userName, String password) throws ClassNotFoundException,
SQLException {
Connection connection = null;
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
DriverManager.setLoginTimeout(10000);
//OVER HERE!!!
connection = DriverManager.getConnection(url, userName, password);
return connection;
}
上面的代码有效,但如果用户名或密码错误,应用程序将创建以下登录屏幕。当执行 DriverManager.getConnection() 时会发生这种情况。
无法发布图片,但看起来像这样
Signon to the system X
System: AS400Server
User ID: User ID
Password: ********
O Default User ID
O Save Password
OK Cancel
谁能告诉我如何禁用此功能?
禁用此功能的一种方法是设置 JVM 属性 com.ibm.as400.access.AS400.guiAvailable=false。
从 java 命令行,您可以使用 java -Dcom.ibm.as400.access.AS400.guiAvailable=false ... 进行设置
这里是使用 jt400.jar 中包含的 jdbc 客户端的示例
C:\>java -cp jt400.jar -Dcom.ibm.as400.access.AS400.guiAvailable=false com.ibm.as400.access.jdbcClient.Main jdbc:as400:/SYSTEM
Warning: Unable to connect to jdbc:as400:/SYSTEM using null
CON is not defined
禁用此功能的第二种方法是使用prompt=false 连接属性。例如。
C:\jtopen_build\dist6>java -cp jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:as400:/SYSTEM;prompt=false
Warning: Unable to connect to jdbc:as400:/SYSTEM;prompt=false using null
CON is not defined
另一种防止 GUI 密码提示的方法。
AS400.setPasswordExpirationWarningDays(-1);
Properties properties = new Properties();
properties.put("extended metadata", "true");
properties.put("user", userProfile);
properties.put("password", password);
properties.put("driver", "native");
properties.put("prompt", "false");
DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
Connection connection = DriverManager.getConnection("jdbc:as400://somedomain.com", properties);
补充一下,当从 java 调用 RPG 程序时,会出现相同的登录弹出窗口。您可以通过设置 com.ibm.as400.access.AS400 对象的 setGuiAvailable(false); 来关闭它
也可以在定义DataSource时设置:
final AS400JDBCDataSource dataSourceISeries = new AS400JDBCDataSource();
dataSourceISeries.setDatabaseName(...);
dataSourceISeries.setUser(...);
...
dataSourceISeries.setPrompt(false);
你也可以直接在url上设置:
jdbc:as400:XXXX/YYYY;prompt=false