应用场景

我们需要通过Java远程访问IBM Lotus Domino R6和R5服务器,从中获取用户邮箱的邮件信息等关键数据。我们不需要提供每一个用户密码以及ID文件。





我们的具体做法是,通过Domino ORB,来使得Domino Server与Java远程交互,双方使用IIOP来交互和交换对象数据。





访问的Domino服务器必须配置本文讲述的四个设置,否则会在Domino R6上得到以下错误:





错误日志片段:





错误代码为4488





lotus.domino.NotesException





 at lotus.domino.NotesExceptionHelper.read(NotesExceptionHelper.java)





 at lotus.domino.NotesExceptionHolder._read(NotesExceptionHolder.java)





at com.ibm.CORBA.iiop.RepImpl.invoke(RepImpl.java:325)





 at com.ibm.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:36)





 at lotus.domino.corba._IObjectServerStub.createSession(_IObjectServerStub.java)





 at lotus.domino.cso.Session.OREFtoSession(Session.java:829)





 at lotus.domino.cso.Session.<init>(Session.java:72)





 at lotus.domino.cso.Session.createSession(Session.java:40)





 





在Domino R5上则得到如下错误:





错误日志片段:





错误代码为4536





lotus.domino.NotesException





    at lotus.domino.NotesExceptionHelper.read(NotesExceptionHelper.java:48)





    at lotus.domino.NotesExceptionHolder._read(NotesExceptionHolder.java:25)





    at com.ibm.CORBA.iiop.RepImpl.invoke(RepImpl.java:325)





    at com.ibm.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:36)





    at lotus.domino.corba._IObjectServerStub.createSession(_IObjectServerStub.java:154)





这两个错误都代表“服务器拒绝访问”。





 





下面列出需要配置的四个安全设置。





DIIOP设置

请实施工程师检查Domino Server的DIIOP设置是否和图1一致。





设置范围:此设置对Domino R5/6都有效。





设置生效:在Domino R5版本中,修改并保存IIOP设置后,必须重新启动Domino Server,否则无法生效。





检查 Domino Directory 中 Server 文档。转至 Ports 选项卡,然后转向 Internet Ports 选项卡。查看 DIIOP 选项卡,“Authentication options”中的“Name & password”应该是Yes,如下图所示。这些部分有用于指定端口号以及启用/禁用端口的字段。下图显示了 Internet Ports--DIIOP 选项卡:









图 1 IIOP设置





特别要注意的是,在Domino R5版本中,修改并保存IIOP设置后,应该重新启动Domino Server,否则无法生效。即使命令tell diiop refresh强制刷新,也不能使修改生效。





而在Domino R6版本中,改进了这一功能,不需要重启服务器也不需要强制刷新,即可使这项IIOP设置修改生效!





各项参数的具体含义是:





No.





Items





Descriptions





1





Name and Password





DIIOP 验证需要名称和密码





2





Anonymous





DIIOP 验证不需要名称和密码





3





Enforce server access settings





DIIOP 使用 Security 选项卡下的 Server Access 设置





Access Server设置

请实施工程师检查Domino Server的Access Server设置是否和图2一致。





设置范围:此设置对Domino R5/6都有效。





检查 Domino Directory 中 Server 文档。转至 Security 选项卡,然后查看 “Server Access”中的“Access Server”应该是“All users can access this server”,如下图所示。









图 2 Access Server设置





Programmability  Restrictions设置

请实施工程师检查Domino Server的Programmability  Restrictions设置是否和图3或者图4一致。





设置范围:此设置对Domino R5和R6是有区别的。





设置生效:在Domino R5版本中,修改并保存此设置后,必须命令tell diiop refresh强制刷新,否则无法生效。





检查 Domino Directory 中 Server 文档。转至 Security 选项卡,然后查看 “Programmability  Restrictions” 。





对于Domino R6,总共需要2处权限设置为“*”

    请找到以下2个设置:





l         Run unrestricted methods and operations:





l         Sign agents to run on behalf of someone else:





   请您为这些设置输入“*”,表示允许所有用户。





       作了修改之后,保存并退出。





然后还需要在服务器命令行界面上输入命令“tell diiop refresh”,强制diiop刷新策略。





那么最终的效果应该如下图所示:









图3 R6 Programmability  Restrictions设置





如果没有允许用户“Run unrestricted methods and operations”,那么当用户发送邮件要Sign时可能会遇到如下异常:





错误日志片段:





错误代码为4165





NotesException: You must have permission to sign documents for server based agents





    at lotus.domino.NotesExceptionHelper.read(Unknown Source)





    at lotus.domino.NotesExceptionHolder._read(Unknown Source)





       此种情况下,“Sign agents to run on behalf of someone else”权限并非必要。





在Domino R6版本中,修改并保存了这一设置之后,并不需要强制刷新,即可使这项编程限制设置修改立即生效!





对于Domino R5,总共需要2处权限设置为“*”

    请找到以下2个设置:





l         Run restricted Java/Javascript/COM:





l         Run unrestricted Java/Javascript/COM: 





   请您为这些设置输入“*”,表示允许所有用户。





       作了修改之后,保存并退出。





然后还需要在服务器命令行界面上输入命令“tell diiop refresh”,强制diiop刷新策略。





那么最终的效果应该如下图所示:









图4 R5 Programmability  Restrictions设置





特别要注意的是,在Domino R5版本中,修改了本编程限制设置后,应该命令tell diiop refresh强制刷新,才能使修改生效。





而在Domino R6版本中,改进了这一功能,不需要强制刷新,即可使这项编程限制设置修改生效!





 





HTTP设置

请实施工程师检查Domino Server的HTTP设置是否和图5或者图6一致。





设置范围:此设置对Domino R5和R 6是有区别的。





检查 Domino Directory 中 Server 文档。转至 Internet Protocols 选项卡,然后查看 HTTP 选项卡,找到“Allow HTTP clients to browse databases:”(或者为“允许HTTP客户浏览数据库”)设置。





Domino R6的图形界面

这是R6的图形界面:









图5 R6 HTTP设置





Domino R5的图形界面

这是R5的图形界面:









图6 R5 HTTP设置





安装R5时,默认这个设置是No(否),所以请实施工程师设置它为Yes(是)。

[Domino]Java访问Domino必需配置的服务器设置的更多相关文章

  1. java 访问剪切板(读取与设置)

    设置文本到剪切板 public void setIntoClipboard(String data) { Clipboard clipboard = Toolkit.getDefaultToolkit ...

  2. Windows 7下配置JDK环境变量,JAVA环境变量配置,Tomcat服务器的使用

    参考来源: http://www.cnblogs.com/pannysp/archive/2012/03/07/2383364.html 1. 常识: 1.1 War包 War包一般是在进行Web开发 ...

  3. 玩玩微信公众号Java版之一:配置微信公众平台服务器信息

    在进行微信公众平台开发前,前先做好准备工作,好了以后,我们可以开始啦!   第一.准备好服务端接口   定义一个http服务接口,主要分为如下几步:   1.创建一个servlet类,用来接收请求: ...

  4. 如何在客户端配置ODBC来访问远程DB2 for Windows服务器

    如何在客户端配置ODBC来访问远程DB2 for Windows服务器                                  马根峰                    (广东联合电子服 ...

  5. 巨高兴,偶的文章 “如何在服务器上配置ODBC来访问本机DB2for Windows服务器”被推荐至CSDN博客首页

    非常高兴,偶的文章 "如何在服务器上配置ODBC来访问本机DB2for Windows服务器"被推荐至CSDN博客首页,截图留念.                  文章被推荐在C ...

  6. 使用nodejs和Java访问远程服务器的服务

    既然这篇文章用的是nodejs和Java访问远程服务器的服务,那么咱们先用另一门编程语言,SAP的ABAP(我日常工作使用得最多的编程语言)来开发一个服务吧. 这是我用ABAP编程语言实现服务的类:Z ...

  7. Java访问Oracle服务器

    Java访问Oracle服务器--orcl数据库---emp表 private static String driver =         "oracle.jdbc.driver.Orac ...

  8. 如何配置web服务器

    如何配置web服务器 (1)了解DNS主机名和IP地址.如果此WEB服务器在Internet上,需向ISP申请和注册此服务器的DNS主机名和IP地址.如果此服务器只在企业网内使用,则在内部的DNS服务 ...

  9. [原创]多版本Java环境变量的配置

    起因:   偶然突发兴致, 收拾下自己的老T500电脑, 用来做个家庭开发用机. 应为每次装系统都有GHOST备份的习惯, 所以需要提前搭建好开发环境. 而且新装系统的目的之一, 也是想研究下Andr ...

随机推荐

  1. Android简易实战教程--第一话《最简单的计算器》

    转载请注明出处:http://blog.csdn.net/qq_32059827/article/details/51707931 从今天开始,本专栏持续更新Android简易实战类博客文章.和以往专 ...

  2. Android初级教程理论知识(第七章服务)

    服务两种启动方式 startService:服务被启动之后,跟启动它的组件没有一毛钱关系 bindService:跟启动它的组件同生共死 绑定服务和解绑服务的生命周期方法:onCreate->o ...

  3. myeclipse一直停留在Loading workbench界面上的处理办法

    找到工作目录比如我的叫work,在.metadata中删掉以下两个文 件,再次重启myeclipse走一个! org.eclipse.ui.workbench org.eclipse.ui.workb ...

  4. UNIX/LINUX程序设计教程(1)-- 获取系统信息

          1.主机标识 每一台机器都有一个主机名,主机名由系统管理员指定,在网络中主机名可能是一个网络域名. 函数 gethostname() 和 sethostname() 可以用来获取和设置主机 ...

  5. 如何彻底的删除MySQL数据库(图文教程)

    最近有个小课题数据库使用Mysql,提前写一下Mysql作为复习. 第一步当然是要看如何卸载Mysql,因为安装之前要清理掉一切与Mysql有关的数据,否则后边安装失败. 以下操作以Window7操作 ...

  6. MyBatis进阶(一)运行原理

    初次学习MyBatis,自己花了不少时间,理解一件事物是需要时间的.经过多次反复的理解,你的认知能力就可以得到提升.以下是学习MyBatis的一些理解认识,技术理解上若有不当之处,敬请朋友们提出宝贵意 ...

  7. (国内)完美下载android源代码(文章已经丢失)

    刚刚文章莫名其妙的丢了,我重写了一篇,http://blog.csdn.net/song19891121/article/details/50099857 我们在很多时候需要下载android源代码进 ...

  8. EBS DBA指南笔记(二)

    第三章 监控和诊断   本章涵盖以下几个主题:监测的方法,数据库的监测,apache的监测,forms的监测,并发管理器的监测,服务器的监测,网络的监测,其它的一些监测和诊断方法. 1.监测的方法:主 ...

  9. 四大组件之Service小结

    总结提高,与君共勉! 1.Service是什么 Service 是看不到界面的,,就是一个没有界面的Activity, 并且长期在后台运行的一个组件.. 由于ANR对Activity和Broadcas ...

  10. 从JDK源码角度看java并发的公平性

    JAVA为简化开发者开发提供了很多并发的工具,包括各种同步器,有了JDK我们只要学会简单使用类API即可.但这并不意味着不需要探索其具体的实现机制,本文从JDK源码角度简单讲讲并发时线程竞争的公平性. ...