我尝试通过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]: 服务器控制台的屏幕截图:
答案 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" )