使用getDatabase()打开远程数据库

时间:2013-10-17 09:13:57

标签: java lotus-notes lotus-domino

我的Lotus网络包含多个Lotus Domino服务器(每个组织单元都有自己的服务器)。我正在尝试连接到Server_A,然后使用names.nsf从Server_B获取getDatabase()

Session session = NotesFactory.createSession("Server_A_IP:63148", superuser, pass);

Database names = session.getDatabase("CN=Server_B/O=Organization", "names.nsf");

我得到错误:

Exception in thread "main" NotesException: Database CN=Server_B/O=Organization!!names.nsf has not been opened yet
    at lotus.domino.NotesExceptionHelper.read(Unknown Source)
    at lotus.domino.NotesExceptionHolder._read(Unknown Source)
    at lotus.priv.CORBA.iiop.RepImpl.invoke(Unknown Source)
    at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
    at lotus.domino.corba._IDatabaseStub.searchU(Unknown Source)
    at lotus.domino.cso.Database.search(Unknown Source)
    at lotus.domino.cso.Database.search(Unknown Source)

使用names.nsf打开session.getDatabase(null, "names.nsf");工作正常。

2 个答案:

答案 0 :(得分:0)

NotesFactory.createSession(“Server_A_IP:63148”,超级用户,传递);

- > NotesFactory.createSession(“Server_A_IP”,超级用户,传递);

您不需要Port#

您可以查看http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=%2Fcom.ibm.designer.domino.main.doc%2FH_EXAMPLE_REGISTERNEWUSER_METHOD_JAVA.html

您还应该测试您的会话不是空对象... if(session!= null){

}

答案 1 :(得分:0)

我找到了答案here

  

连接失败的原因是因为未列出Server1 / ACME   作为Domino中的Server2 / ACME服务器文档中的信任服务器   目录。

解决方案:

  

要解决此问题很简单。困难的部分是找到了   问题。如果您可以访问Server2 / ACME上的Domino目录,   执行以下操作:

     
      
  • 在Server2 / ACME上打开Domino目录(服务器通讯簿)。
  •   
  • 在“配置”下,单击“服务器”,然后单击“所有服务器文档”。
  •   
  • 双击您希望代码连接到的服务器文档。 (本例中为Server2 / ACME)
  •   
  • 在“安全”选项卡的左下角部分,有一个名为“受信任的服务器”的字段。
  •   
  • 在我的方案中,此字段为空。在这个例子之后,我会在这个字段中添加“Server1 / ACME”。
  •   

编辑:我刚刚看到解决方案也在评论中。无论如何,我将在这里留下这些步骤,以防它对某人有用。