2017-07-12 23 views
0

使用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; 
    } 


} 
+0

这将有助于知道什么是“不工作”。提出什么样的例外?什么是写入控制台? –

+0

另外,我会首先检查'result == null',然后检查'result.open()'的值而不是'result.isOpen()'。即使'NotesSession.getDatabase'应该自动打开数据库,您将会使用open()函数在安全的一面。 –

+0

[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 –

回答

0

我看不出什么错在你的代码,虽然最好的做法,我会建议设置servers.getServerName()“”有XPiNC不同的含义。

您的签名者是否可以访问mail.box?这应该可以工作,并且我已经在XPage OpenLog Logger的其他地方使用过此类代码。如果设置了多个mail.box数据库,Domino将自动获取相关信息。

+0

Signer有经理访问mail.box的权限,但签名者证明者与(test-)服务器证明者不同。这可能是原因吗? –

+0

我不确定。通过ACL或数据库API查询该ID的访问可能有助于确认。 –