Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java向Lotus Notes客户端输入错误的用户ID密码时控制台挂起_Java_Passwords_Lotus Notes_Userid - Fatal编程技术网

使用Java向Lotus Notes客户端输入错误的用户ID密码时控制台挂起

使用Java向Lotus Notes客户端输入错误的用户ID密码时控制台挂起,java,passwords,lotus-notes,userid,Java,Passwords,Lotus Notes,Userid,我正在编写一个独立的Java应用程序,它使用Notes.jar与LotusNotes客户机对话。应用程序无法访问Domino服务器,这就是我使用Lotus Notes客户端的原因 用户id文件位置和密码由用户通过我的应用程序提供,然后我的应用程序使用这些信息连接到LotusNotes客户机 在客户机中,我首先使用应用程序在Lotus notes客户机的notes.ini文件中设置的默认ID创建会话,然后切换ID,即: Session session = NotesFactory.createSe

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

用户id文件位置和密码由用户通过我的应用程序提供,然后我的应用程序使用这些信息连接到LotusNotes客户机

在客户机中,我首先使用应用程序在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应用程序无法响应此控制台提示,因此挂起

有没有办法停止提示。i、 e.使用
switchToID()
方法在密码错误时引发异常,以便应用程序可以向用户返回错误消息

我的应用程序是否有办法将
Esc
键发送回提示符,以便我可以按照Notes返回的消息中的指示中止该过程

是否有更好的方法使用用户输入的ID文件和密码创建客户端会话

谢谢,
Richard

据我所知,如果会话创建不成功,它将抛出NotesException

NotesFactory.createSession((String)null, (String)null, passwordString) throws NotesException
如果密码与Notes用户ID密码匹配,则授予访问权限。 你为什么不试试。。抓住它

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

}

您可以切换到
usersuppliedFileName
,而无需使用
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... 
    }

谢谢使用
createSession(String)null,(String)null,passwordString)
会抛出与
switchToID(userId,password)
方法不同的错误。唯一的缺点是我必须在登录之前更新磁盘上的notes.ini文件。但只要我同步notes.ini文件更新,这就可以了。很高兴听到这个消息。如果足够的话,你可以投票或完成回答的问题。太好了!,这对我有效,但我替换了第二条语句:
Session Session=NotesFactory.createSession((String)null,(String)null,“defaultPassword”)通过这个:
Session Session=NotesFactory.createSession()