【问题标题】:Java to Lotus Notes connection issueJava 到 Lotus Notes 的连接问题
【发布时间】:2018-10-31 07:31:21
【问题描述】:

我正在尝试将 Lotus Notes 数据库中的数据访问到外部 Java 程序中,但没有成功。

在我的笔记本电脑上,我配置了 IBM Domino 9.0.1 服务器,并在其中创建了一个演示数据库。我的目标是通过外部 Java 代码访问该数据库中的数据。我还在配置 Domino 服务器的同一台笔记本电脑上安装了 Netbeans 和 Eclipse。现在,我正在尝试使用 Notes.jar 包中提供的类访问我的 java 程序(netbeans/eclipse)中的演示 lotus notes 数据库,但无法打开数据库。

为了完成任务,我遵循了以下步骤:

  • 将路径“C:\Program Files\IBM\Domino”添加到“Path”系统变量,并重新启动笔记本电脑。
  • 在 Netbeans 中(也在 Eclipse 中尝试过),创建 Java 类(控制台应用程序),在类路径中添加 Notes.jar 文件(IBM/Domino/JVM/lib/ext/Notes.jar)(在 netbeans 中,添加 Notes.jar)。 jar 在 Resources 部分。在 Eclipse 中,将 Notes.jar 复制到 lib 文件夹中)。
  • 在类中添加了以下代码: (假设 lotus.domino.* 已经在代码中导入)

        public static void main(String [] args)
        {
            try{
                NotesThread.sInitThread();
                //Case1
                Session session = NotesFactory.createSession()//Connect the server with server ID. Throws error 'Database has not been opened yet';
                //Also tried following options. Note that I have assigned full access/manager rights to anonymous user on the demo database
                //Case2
                //Session session = NotesFactory.createSession((String)null);//Same result as first one [NotesFactory.createSession()]
                //Case3
                //Session session = NotesFactory.createSession((String)null,"Romil Handoo/dev","My_Domino_Internet_Password");//Connect the server as Romil Handoo/dev login. Throws error- Invalid User Id/Password. I am giving correct ID/password
                //Case4
                //Session session = NotesFactory.createSession((String)null,"","");//Access with anonymous user. Throws error 'Database has not been opened yet'**
                Database dbDemo = session.getDatabase(session.getServer(), "demo/DemoDB.nsf");
                //session.getServer() is returning my server name, which is Development/home. 
                //Also tried these, but same result each time: 
                //session.getDatabase("localhost:9595","demo/DemoDB.nsf")
                //session.getDatabase("localhost","demo/DemoDB.nsf")
                //session.getDatabase("127.0.0.1:9595","demo/DemoDB.nsf")
                //session.getDatabase("127.0.0.1","demo/DemoDB.nsf")
                //session.getDatabase("","demo/DemoDB.nsf")
                //session.getDatabase((String)null,"demo/DemoDB.nsf")
                //Following line throws exception 'Database has not been opened yet'
                View vwDemo = dbDemo.getView("vwDemo");
            }
            catch(Exception ex)
            {
                System.out.println(ex.toString());
                //For case 1, case 2, and case 4, error message is 'Database has not been opened yet'
                //For case 3, error message is 'Invalid login id/password'
    
            }
            finally
            {
                NotesThread.stermThread();
            }
        }
    

请有人指导我如何通过外部 java 代码连接到 domino 数据库?对于所有这些步骤,我参考了页面https://www.ibm.com/support/knowledgecenter/en/SSVRGU_9.0.1/basic/H_NOTESDATABASE_CLASS_JAVA.html

非常感谢

【问题讨论】:

    标签: java lotus-notes


    【解决方案1】:

    检查 DemoDB.nsf 的 ACL。如果我不得不做出一个疯狂的猜测,我会说本地域服务器组位于 ACL 中,并且它被标记为“服务器组”,但是您的代码正在建立客户端连接,所以这就是案例 1、2、和4失败。如果不是这样,则可能是其他一些访问问题。

    案例 3 失败,因为您提供的是 Internet 密码,而不是您的实际用户 ID 文件的密码。 (使用 Internet 密码仅适用于 NCSO.jar 和 IIOP 访问,不适用于 Notes.jar 和 NRPC 访问。)

    【讨论】:

    • 感谢@Richard 的观察。实际上在我的环境中,notes和internet密码是完全一样的,所以代码应该不会抛出不正确的id/password错误。
    • Richard,还询问您是否可以帮助我解决案例 1,2 和 4 的问题。我检查了数据库 ACL 并发现服务器组条目“LocanDomainServers”具有“经理”访问权限,并且“ “其他域服务器”“无权访问”。
    • 即使密码相同,情况 3 仍然不起作用,因为您使用的是用户 name 和密码,而不是用户 id 文件和密码。通过 Notes.jar 的 NRPC 连接需要用户 ID 和密码。
    • 在 ACL 中,将 LocalDomainServers 的“用户类型”下拉列表从“服务器组”更改为“未指定”。或者只是将服务器名称添加到 ACL 并使其成为“未指定”。如果这没有帮助,您可能需要检查许多事情。如果我为您咨询,我要做的第一件事是检查 session.username 的值,以确认您在评论中的假设,即您正在连接服务器 ID 文件。
    • 谢谢理查德。我会试试这个。当我在此处打印“有效用户名”时,在案例 1 和案例 2 中显示服务器名称 (MyServerName/dev)。对于案例 4,它显示为“匿名”,案例 3 对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多