我正在编写一个独立的Java应用程序,它使用notes.jar与Lotus Notes客户端通信。该应用程序无法访问 Domino 服务器,这就是我使用 Lotus Notes 客户端的原因。
用户 ID 文件位置和密码由用户通过我的应用程序提供,然后使用它们连接到 Lotus Notes 客户端。
在客户端中,我首先使用应用程序在 Lotus Notes 客户端的 Notes.ini 文件中设置的默认 ID 创建一个 session ,然后切换 ID,即:
Session session = NotesFactory.createSession((String) null, (String) null, "defaultPassword");
session.createRegistration().switchToID(userSuppliedIDFilename, userSuppliedPassword);
如果用户提供的密码正确,则一切正常。
但是,如果密码错误,switchToID()
方法会提示控制台输入正确的密码:
The ID file being used is: CN=Test Test/=Development
Enter password (press the Esc key to abort):
我的 Java 应用程序无法响应此控制台提示,因此挂起。
有什么办法可以停止提示吗?即让 switchToID()
方法在密码错误时抛出异常,以便应用程序可以向用户返回错误消息?
有没有办法让我的应用程序将 Esc
键发送回提示符,以便我可以按照 Notes 返回的消息中的指示中止该过程?
是否有更好的方法来使用用户输入的 ID 文件和密码创建客户端 session ?
谢谢, 理查德
最佳答案
您可以切换到 userSuppliedIDFilename
而无需使用 switchToID()
并且能够通过这种方式捕获错误的 userSuppliedPassword
:
NotesThread.sinitThread();
Session session = NotesFactory.createSession((String) null, (String) null, "defaultPassword");
session.setEnvironmentVar("KeyFileName", userSuppliedIDFilename, true);
session.recycle();
NotesThread.stermThread();
NotesThread.sinitThread();
try {
session = NotesFactory.createSession((String) null, (String) null, userSuppliedPassword);
} catch (NotesException e) {
// wrong password for userSuppliedIDFilename
// ask user for correct password...
}
关于java - 使用 Java 在 Lotus Notes 客户端输入不正确的用户 ID 密码时控制台挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16334171/