用 Java 访问 Domino 的对象(三)

管理

远程访问 Domino 时还需要对服务器进行一些配置。运行 Domino 的计算机必须可以通过 TCP/IP 协议进行访问。在计算机的网络设置中,需要检查 TCP/IP 属性中主机名和域名的设置。必须能够从客户端的计算机 ping 到 Domino 服务器的 Internet 名称。例如,服务器的主机名是 myhost,域名是 east.acme.com,则服务器的 Internet 名称是 myhost.east.acme.com。以下命令必须能够得到有效的回应:

> ping myhost.east.acme.com

在 Domino 目录(names.nsf)中,服务器文档的"全限定的 Internet 主机名"域中必须输入上述 Internet 名称。

如图:

在本文前面的编程的例子中,服务器的 Internet 名称被用于 createSession 的第一个参数。这里也可以使用服务器的 IP 地址。

要进行远程访问,在 Domino 服务器上,DIIOP 任务必须启动。HTTP 任务也可能需要启动,这取决于程序获取 IOR 的方式。要确认HTTP和DIIOP所使用的端口号,可以打开 Domino 目录中的服务器文档,进入"端口"下面的"Internet 端口",在 Web 标签和 DIIOP 标签下可以看到当前使用的端口号。缺省情况下,HTTP 的端口号是 80,DIIOP 的端口号是 63148。

如果不知道要访问的数据库的名称,(例如要使用 .getFirstDatabase),必须有浏览数据库的权限。可以在"Internet 协议"-"HTTP"标签下设置这个权限,将"允许HTTP客户浏览数据库"设为"是"。

要确保服务器上启动了 HTTP 和 DIIOP 任务,可以将它们加到 Notes.ini 文件中 ServerTasks 参数里。例如,Notes.ini 中应该有类似这样的一行:

ServerTasks=Update,Replica,Router,AMgr,AdminP,CalConn,Sched,DIIOP,HTTP,
LDAP

如果服务器已启动,可以用以下控制台命令启动这两个任务:

> load http
> load diiop

也可以用以下控制台命令停止这两个任务:

> tell http quit
> tell diiop quit

用此命令可以更新 DIIOP 任务的设置:

> tell diiop refresh

用此命令可以重新启动 HTTP 任务:

> tell http restart

获取 IOR

在 Domino 服务器上,IOR 是一个名为 diiop_ior.txt 的文件,它位于 Domino 数据目录下的 domino/html 子目录中。IOR 是一个编码的字符串,包含对服务器的 CORBA 访问的识别信息。客户端会将 IOR 字符串解码,并用它来建立远程连接。

缺省情况下,远程客户端通过 Web 服务来请求 IOR ,然后通过 DIIOP 端口进行会话请求。这两个请求可以分开进行。 例如:

String ior = NotesFactory.getIOR("myhost.east.acme.com"); // Get IOR using Web server port
Session s = NotesFactory.createSessionWithIOR(ior); // Create session using DIIOP port

等价于:
Session s = NotesFactory.createSession("myhost.east.acme.com");

在 NotesFactory 的调用中,可以在主机名后面加上冒号和端口号来指定用于获取 IOR 的端口。通过这样的机制,可以通过 DIIOP 端口来获取 IOR ,而不通过 HTTP 端口。例如:

String ior = NotesFactory.getIOR("myhost.east.acme.com:63148"); // Get IOR using DIIOP port
Session s = NotesFactory.createSessionWithIOR(ior); // Create session using DIIOP port

也可以简化为:

Session s = NotesFactory.createSession("myhost.east.acme.com:63148");

注意不可以使用 DIIOP 端口来获取除 diiop_ior.txt 以外的的其他文件。

如果通过 Web 服务端口来获取 IOR,Web 服务必须允许匿名访问。打开服务器文档,在"端口"-"Internet 端口"-"Web"标签下,"匿名"的验证选项要设置为"是"。

通过 DIIOP 端口获取 IOR 是 Notes/Domino 6 的新功能。这样可以不必允许对 HTTP 服务的匿名访问,甚至不必启动 HTTP 服务。

也可以通过其他方法获取 IOR,然后使用 createSessoinWithIOR。例如,可以直接将 diiop_ior.txt 文件从服务器的计算机上拷贝到客户端的计算机上。如果客户端上已经有了有效的 diiop_ior.txt,可以用以下代码与服务器建立远程连接:

import lotus.domino.*;
import java.io.*;
public class platformior
{
   public static void main(String argv[])
   {
       try
       {
           FileInputStream fin = new FileInputStream("c://Lotus//NotesR6//diiop_ior.txt");
           InputStreamReader fisr = new InputStreamReader(fin);
           BufferedReader br = new BufferedReader(fisr);
           String ior = br.readLine();
           fin.close();
           Session s = NotesFactory.createSessionWithIOR(ior);
           //Operational code goes here
       }
       catch(Exception e)
       {
           e.printStackTrace();
       }
   }
}

注意 IOR 可能会改变。以下动作都会使原来的 diiop_ior.txt 无效:

  • 改变 DIIOP 端口号
  • 启用或禁用一个 DIIOP 端口
  • 改变服务器的 TCP/IP 地址

最后一项可以通过以下方法避免:打开服务器文档,在"Internet 协议"-"DIIOP"标签下,在"主机名称/地址"域中指定服务器的 Internet 主机名。

这强制了diiop_ior.txt使用主机名而不是 IP 地址。这样,只要主机名不改变,IOR 就不会改变。也可以通过 Notes.ini 参数 DIIOPIORHost 来强制使用主机名。





(来源IBM官方网)

你可能感兴趣的:(Lotus,Notes)