Java 代理和可信服务器访问

Java 代理和可信服务器访问,java,lotus-notes,lotus-domino,lotus,domino-designer-eclipse,Java,Lotus Notes,Lotus Domino,Lotus,Domino Designer Eclipse,我的问题是关于Domino代理、可信服务器和DIIOP。在我描述这个问题之前,让我先介绍一下背景知识- 我正在创建一个与Domino集成的应用程序,能够从某些用户邮箱中删除某些电子邮件。我最初的设计和实现是在中间件服务器上编写所有应用程序(与Domino服务器不同)并通过DIIOP和JavaAPI远程设置与Domino服务器的会话,并远程删除相应的电子邮件消息。在当前部署环境中,客户有多个Domino邮件服务器,为了使我当前的设计/解决方案能够工作,客户必须在所有Domino邮件服务器上打开/启

我的问题是关于Domino代理、可信服务器和DIIOP。在我描述这个问题之前,让我先介绍一下背景知识-

我正在创建一个与Domino集成的应用程序,能够从某些用户邮箱中删除某些电子邮件。我最初的设计和实现是在中间件服务器上编写所有应用程序(与Domino服务器不同)并通过DIIOP和JavaAPI远程设置与Domino服务器的会话,并远程删除相应的电子邮件消息。在当前部署环境中,客户有多个Domino邮件服务器,为了使我当前的设计/解决方案能够工作,客户必须在所有Domino邮件服务器上打开/启用DIIOP,以便解决方案能够从相应的Domino邮件服务器中删除相应的电子邮件。在他们的所有邮件服务器上打开/启用DIIOP并不是客户满意的事情,因此我需要重新设计我的解决方案

为了满足这一要求——根据我的研究,我觉得我可以通过将解决方案转换为“代理”模型来绕过这一限制(不是在所有Domino邮件服务器上运行DIIOP)。我的代理将在一个Domino服务器上运行,从那里它可以访问任何服务器上的数据库/邮件文档并删除它们。我目前的想法是,我将通过中间件服务器的URL调用代理,该URL将作为代理的触发器,然后代理将继续访问并删除相应的邮件文档。有关“Trusted Servers”元素的参考信息,请参见下面的屏幕截图,该元素似乎旨在允许代理访问另一个Domino邮件服务器上的数据库

我的问题如下-

  • 如果我继续使用此代理设计模型,那么当运行在DominoMailServer1上的代理尝试打开/访问DominoMailServer2上的数据库时,该连接是否不通过DIIOP?使用此体系结构,无需在DominoMailServer2上启用/打开DIIOP?这种通信是通过其他RPC机制进行的,还是在DominoMailServer1(幕后)上执行的代理用来访问DominoMailServer2上的数据库的底层OS级文件共享机制

  • 在我的初始设计中(我在中间件服务器上的解决方案通过DIIOP与所有单独的服务器进行通信),是否有任何方法来扩展/修改初始设计,以便无需在环境中的所有Domino邮件服务器上打开DIIOP,仍然可以访问/删除电子邮件


  • 当运行在DominaMailServer1上的代理连接到DominaMailServer2时,它使用的是NRPC—Lotus在20世纪80年代末发明的prorprietary协议,允许Lotus Notes和Domino,以及位于其下的Notes C API(以及与Notes数据一起工作的所有其他API的实现),跨不同平台和网络类型进行通信。TCP/IP网络上的NRPC(这是目前最重要的)在端口1352上运行

    对于问题2,您不必使用DIIOP。Java代码可以使用Notes.jar而不是NCSO.jar。但是,为了使用Notes.jar,必须在运行代码的机器上安装Notes或Domino代码。如果是Windows计算机,则可以安装Notes客户端。如果不是Windows,您可以为任何平台安装Domino服务器代码,假设它是IBM支持的平台之一。代码需要安装,也需要设置,但不必运行Java代码即可工作。您的Java代码实际上使用的是底层DLL或库,以及用于身份验证的id文件,这将允许Notes.jar使用NRPC。您需要与Notes/Domino管理人员以及很可能与IBM代表核实这可能带来的任何许可问题。IMHO,因为您的代码是作为客户机使用的,所以即使它使用的是服务器安装附带的库,也应该将其视为客户机-但是我不能告诉您IBM是否同意这一点


    顺便说一句,即使你没有问。。。受信任的服务器设置会执行您猜测的操作。它允许一台Domino服务器上的代理访问另一台Domino服务器上的数据库和文档。在Domino6之前,这是不允许的,因为当代理通过NRPC与另一台服务器联系时,另一台服务器无法知道应该使用谁的权限来确定授予的访问级别。目标服务器只知道发出请求的服务器的标识。即使代理服务器告诉目标服务器谁拥有代理,目标服务器也不会信任该信息,因为这可能是绕过强身份验证说明和Domino通常需要的快捷方式。trusted server设置用于识别Donino在传递与代理关联的身份信息时将信任的服务器

    妙极了。谢谢你,理查德。我将尝试看看您提到的Notes.jar方法(没有DIIOP),然后决定我的前进方向……还有一件事要提:openNTF网站上有一个开源的Notes.jar替代品。它被称为OpenNTF Dominpo API。它改进了使用notes.jar中的标准类的许多恼人的方面,例如,不需要调用recycle()来释放Java GC不知道的notes内存。它仍然依赖于安装Notes或Domino版本。谢谢你,理查德。我觉得代理模型对我来说会更好一些。我的中间件服务器是基于CentOS的服务器。Notes客户端似乎有一个RHEL版本,最有可能在CentOS上工作…我还没有尝试安装并查看它是否在CentOS上工作,但我认为