数据库无法打开(通过DIIOP的Java程序)

时间:2013-11-21 11:05:57

标签: java eclipse lotus-domino

我尝试通过java程序在Domino服务器上打开数据库。 得到了Domino服务器的会话。我使用以下代码来获取/打开数据库。

session = NotesFactory.createSession(DOMINO_SERVER, DOMINO_USER, DOMINO_PW);
if ( session == null ) {
//do something
}
db = session.getDatabase(DOMINO_SERVER, DOMINO_DATABASE);
view = db.getView("someView");

出现以下错误消息:

NotesException:数据库xyz尚未打开

如果我使用“开放”方法

db.open();

错误

NotesException:数据库open()失败

发生。 用户可以访问数据库。最大Internet名称和密码:READER。

我可以检查多米诺骨牌服务器上的配置吗? 似乎是一个安全问题,但我没有看到原因。 有什么建议/提示吗?

[更新] 完整的堆栈跟踪...

NotesException: Database XYZ 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.getSize(Unknown Source)
at lotus.domino.cso.Database.getSize(Unknown Source)

为了进行测试,我尝试使用“getSize()”方法获取数据库的大小。

从其他错误消息中完成堆栈跟踪:

NotesException: Database open failed ()
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.open(Unknown Source)
at lotus.domino.cso.Database.open(Unknown Source)

[更新2]: 服务器控制台的屏幕截图:

Screenshot from server console

2 个答案:

答案 0 :(得分:3)

解决了Simon上面提出的问题。

我尝试了另一种方法来打开数据库。 这是我尝试打开数据库的方式。

session = NotesFactory.createSession(DOMINO_SERVER, DOMINO_USER, DOMINO_PW);
if ( session == null ) {
//do something
}
DbDirectory dir = session.getDbDirectory(null);
db = dir.openDatabase(DOMINO_DATABASE);

用户对服务器和数据库的访问权限没有任何变化。 不知道为什么它这样工作?有没有错误或服务器配置有什么问题?

但最重要的是......它现在有效......感谢西蒙和理查德。

答案 1 :(得分:1)

根据日志确定,您可以检查CLASSPATH上没有Notes.jar,只检查NCSO.jar。

您也可以尝试其他方法来打开同一个数据库,并在问题再次出现时发布日志。

示例:

Dim db As New NotesDatabase( "", "" )
Call db.Open( "server", "names.nsf" )