使用ExtLibUtil.getCurrentSessionAsSigner打开mail.box不适用于mail.box。ExtLibUtil.getCurrentSessionAsSigner打开mail.box
所有元素都使用相同的ID进行签名。
我想复制由Anonymous创建的邮件到mail.box。任何想法,解决方法?
package de.egvpb.surveys;
import java.io.Serializable;
import lotus.domino.Database;
import lotus.domino.Session;
import com.ibm.xsp.extlib.util.ExtLibUtil;
public class SessionAsSignerBean implements Serializable{
private static final long serialVersionUID = 1L;
private Database mailBoxDb ;
public SessionAsSignerBean(){
this.mailBoxDb = this.getMailBoxDbAsSigner() ;
}
private Database getMailBoxDbAsSigner() {
Session s = ExtLibUtil.getCurrentSessionAsSigner() ;
Database result = null ;
Database currentDb = null ;
String server = "" ;
String filepath = "" ;
try {
// Anonymous has reader access for currentDb; database is opend
currentDb = s.getCurrentDatabase() ;
if(currentDb.isOpen()) {
System.out.println("getMailBoxDbAsSigner, currentDB is open: " + currentDb.getFilePath() + " on " + currentDb.getServer());
} else {
System.out.println("getMailBoxDbAsSigner, currentDB is NOT open");
}
server = currentDb.getServer() ;
// Anonymous has no Access for names.nsf; database is opend
filepath = "names.nsf" ;
result = s.getDatabase(server, filepath) ;
if(result.isOpen() == false) {
System.out.println("getMailBoxDbAsSigner, failed to open database " + filepath + " on " + server);
} else {
System.out.println("getMailBoxDbAsSigner, database opend " + filepath + " on " + server);
}
// Anonymous has no Access for mail.box; database is NOT opend
filepath = "mail.box" ;
result = s.getDatabase(server, filepath) ;
if(result.isOpen() == false) {
System.out.println("getMailBoxDbAsSigner, failed to open database " + filepath + " on " + server);
} else {
System.out.println("getMailBoxDbAsSigner, opend database " + filepath + " on " + server);
}
} catch (Exception e) {
e.printStackTrace() ;
}
return result ;
}
// ====
public Database getMailBoxDb() {
return mailBoxDb;
}
public void setMailBoxDb(Database mailBoxDb) {
this.mailBoxDb = mailBoxDb;
}
}
这将有助于知道什么是“不工作”。提出什么样的例外?什么是写入控制台? –
另外,我会首先检查'result == null',然后检查'result.open()'的值而不是'result.isOpen()'。即使'NotesSession.getDatabase'应该自动打开数据库,您将会使用open()函数在安全的一面。 –
[0F70:000E-16B4] 12.07.2017 10:54:36 HTTP JVM:getMailBoxDbAsSigner,currentDB已打开:CN = dev01/O = Hubi上的SessionAsSigner.nsf [0F70:000E-16B4] 12.07.2017 10:54 :36 HTTP JVM:getMailBoxDbAsSigner,CN = dev01/O = Hubi上的数据库开放名称.nsf [0F70:000E-16B4] 12.07.2017 10:54:39 HTTP JVM:getMailBoxDbAsSigner,无法在CN上打开数据库mail.box = dev01/O = Hubi –