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

数据库未打开(通过DIIOP的Java程序),java,eclipse,lotus-domino,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.g

我尝试通过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");
session = NotesFactory.createSession(DOMINO_SERVER, DOMINO_USER, DOMINO_PW);
if ( session == null ) {
//do something
}
DbDirectory dir = session.getDbDirectory(null);
db = dir.openDatabase(DOMINO_DATABASE);
出现以下错误消息:

注意:数据库xyz尚未打开

如果我使用“开放”方法

错误

NotesException:数据库打开()失败

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

domino服务器上是否有我可以检查的配置? 似乎是安全问题,但我看不出原因。 有什么建议/提示吗

[更新] 完成堆栈跟踪

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]: 服务器控制台的屏幕截图:


好的,根据日志,可以检查类路径上是否没有Notes.jar,只有NCSO.jar

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

例如:

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

用西蒙的上述想法解决了这个问题

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

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");
session = NotesFactory.createSession(DOMINO_SERVER, DOMINO_USER, DOMINO_PW);
if ( session == null ) {
//do something
}
DbDirectory dir = session.getDbDirectory(null);
db = dir.openDatabase(DOMINO_DATABASE);
用户对服务器和数据库的访问权限没有更改。 不知道为什么会这样?服务器配置是否存在bug或问题


但最重要的是。。。它现在起作用了。。。谢谢西蒙和理查德

您使用的是什么版本的Domino(以及什么补丁包,如果有的话)?这是你另一个问题的后续问题。创建DIIOP调试日志有什么乐趣吗?Domino服务器版本:Release 8.5.3FP4是的,Simon,这是我另一个问题的后续内容。DIIOP调试日志不是很有用。它输出了很多信息,但没有新的有用的错误消息。你想找一些具体的东西吗?我可以向您发送更多详细信息吗?如果您可以发布日志,我可以阅读它们,但我没有什么可以向您指出的详细信息。CONSOLE_LOG_ENABLED=1,日志应该显示在您的IBM_TECHNICAL_SUPPORT文件夹中。拿我的眼镜我必须完成这件事。有更多的细粒度调试来帮助确定根本原因,但需要打开一个PMR,因为日志在开发上下文之外是冗长和无意义的(因此不会帮助发布在So上)。检查了jar文件。只有来自服务器的NCSO.jar在类路径中。根据其他命令的工作情况,这确实是个好消息。我会看看是否能找到更多细节。