2

我正在编写一个独立的 Java 应用程序,它使用 notes.jar 与 Lotus Notes 客户端对话。该应用程序无权访问 Domino 服务器,这就是我使用 Lotus Notes 客户端的原因。

用户 id 文件位置和密码由用户通过我的应用程序提供,然后使用这些应用程序连接到 Lotus Notes 客户端。

在客户端中,我首先使用我的应用程序在 Lotus Notes 客户端的 notes.ini 文件中设置的默认 ID 创建会话,然后切换 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 文件和密码创建客户端会话?

谢谢,理查德

4

2 回答 2

2

您可以切换到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... 
    }
于 2013-05-05T20:45:51.217 回答
0

据我了解,如果会话未成功创建,它将引发 NotesException。

NotesFactory.createSession((String)null, (String)null, passwordString) throws NotesException

如果密码与 Notes 用户标识密码匹配,则授予访问权限。你为什么不试试..抓住它

try {
  Session session = NotesFactory.createSession((String) null, (String) null, "defaultPassword");
  if(session != null) {
    //do sth.
  }
}
catch (NotesException e) {

}
于 2013-05-02T09:34:22.700 回答