JT400.jar 禁用登录屏幕

问题描述 投票:0回答:5

有人可以帮我吗?我有一个小型实用程序,它使用 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  

谁能告诉我如何禁用此功能?

jdbc jt400
5个回答
15
投票

禁用此功能的一种方法是设置 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

1
投票

另一种防止 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);

1
投票

补充一下,当从 java 调用 RPG 程序时,会出现相同的登录弹出窗口。您可以通过设置 com.ibm.as400.access.AS400 对象的 setGuiAvailable(false); 来关闭它


0
投票

也可以在定义DataSource时设置:

final AS400JDBCDataSource dataSourceISeries = new AS400JDBCDataSource();
dataSourceISeries.setDatabaseName(...);
dataSourceISeries.setUser(...);
...
dataSourceISeries.setPrompt(false);

0
投票

你也可以直接在url上设置:

jdbc:as400:XXXX/YYYY;prompt=false

© www.soinside.com 2019 - 2024. All rights reserved.