论坛首页 入门技术论坛

java程序连接domino server遇到的问题

浏览 2948 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-27  

首先给出一个参考链接:http://www-900.ibm.com/cn/support/nav/200402/p51-1.shtml

 

可能是由于对domino不熟悉的原因,个人感觉这篇文章虽然有很大的参考价值但是也有一些不准确的地方。按照文章的说法,要连接远程的domino server只有DIIOP一种方法,但这样有一个很大的问题,如果client端的开发人员对domino server没有操作权限的话,那么是无法确定server上的DIIOP是否打开,更不可能去配置server。

 

我遇到的恰恰就是这种情况,所以对于我来说,连接server的唯一方法就剩下了Notes RPC,这种方式的缺点就是需要客户端安装并且正确配置Notes。对于连接的过程,很容易遇到的问题就是:

java.lang.UnsatisfiedLinkError: nlsxbe (JVMPORT015E Unable to resolve DLL references - a prerequisite DLL may be missing)

这个问题耽误了我将近一天的时间,大概意思就是说这个动态链接文件nlsxbe.dll找不到,这个错误在使用JNI的时候应该比较常见,但问题是这个错误信息其实并不完整,在这里缺少的并不仅仅是nlsxbe.dll一个动态链接文件,因为在链接的过程中需要很多Notes当中的dll文件。所以我在一开始的时候尝试了各种方法,包括设置环境变量,set system property等,把这个nlsxbe.dll文件拷贝到/WINDOWS/System32 文件夹下等等,都没有效果,原因就是我仅仅考虑到了这一个dll文件,而实际连接的时候,还需要很多其他的dll文件。正确的做法是将Notes当中所有的dll文件加入环境变量,对于我来说,路径是这样的:"C:\Program Files\IBM\Lotus\Notes".这里面要注意,如果当初是默认安装路径安装的notes 的话,会在c盘下有一个“notes”的文件夹,里面也有一个nlsxbe.dll文件,这里用这个路径是不行的,我开始的时候就犯了这个错误。

 

在这里我还有一个问题没有解决,就是我用直接设置系统环境变量的方法并没有效果,但是在cmd编译的时候用java -Djava.Library.Path="C:\Program Files\IBM\Lotus\Notes".这个方法却可以,无奈之下,只能在代码当中加入了对系统属性的设置:System.setProperty("java.library.path","C:\\Program Files\\IBM\\Lotus\\Notes");

不过这个只是临时的应变之举,在产品级的代码里面,强烈不推荐写类似的代码。

最后在连接的时候,如果连接本地:

Session notesSession = NotesFactory.createSession();

or

Session notesSession = NotesFactory.createSession("");

 

连接远程domino:

Session notesSession = NotesFactory.createSession((String)null, (String)null, "your password");

论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics