确定domino服务器是否正在运行(session.getDatabase(..)在相应服务器关闭时需要太长时间)

时间:2014-11-04 13:01:08

标签: xpages xpages-ssjs

我在不同的服务器上有大约4-5个用户,需要根据日历条目查找空闲时间。直到昨晚功能运行良好,但是,今天我们只是想出了一个小的问题/错误。其中一台服务器机器今天处于脱机状态,SSJS需要大约一分钟(60秒)来解决这个问题。

是否有任何此类选项来验证服务器是否正在运行?我问这个,因为 session.getDatabase 在这种情况下需要很长时间才能提供任何结果。

仅供参考,下面是我验证用户邮件数据库可访问性的代码。当所有服务器都启动时,它工作得很好,但是,当任何服务器关闭时,等待时间太长。

// Set up the names

var names = new java.util.Vector();
var inaccessible_calendars = new java.util.Vector();
var infoDoc:NotesDocument= database.getDocumentByUNID(context.getUrlParameter('refId'));
var members:java.util.Vector = infoDoc.getItemValue("members");
names = infoDoc.getItemValue("members");
//var members:java.util.Vector = infoDoc.getItemValue("members");
var membersIterator = members.iterator();
var maildb ="";

while(membersIterator.hasNext()){
var val = membersIterator.next();
var nab:NotesDatabase=session.getDatabase(database.getServer(),"names.nsf")
var nview:NotesView=nab.getView("($NamesFieldLookup)")
var doc:NotesDocument=nview.getDocumentByKey(val,true)
if(doc){
        var email = doc.getItemValueString("MailFile")
        var emailServer = doc.getItemValueString("MailServer")
        doc.recycle()
        nview.recycle()
        nab.recycle()
        maildb=@LowerCase(emailServer)+'!!'+@LowerCase(email)+ '.nsf'
        var emailServerCN = @Name("[CN]",@LowerCase(emailServer));
        var emailDBName =   @LowerCase(email)+ '.nsf';
        emailDBName = emailDBName.replace("\\","\/");
        try{
            if(session.getDatabase(emailServerCN.toString(),emailDBName.toString())==null){
            names.remove(val);
            inaccessible_calendars.add(val);
            }else{
            var emailDB:NotesDatabase = session.getDatabase(emailServerCN.toString(),emailDBName.toString());
            if(!(emailDB.getCurrentAccessLevel()>0)){
                names.remove(val);
                inaccessible_calendars.add(val);
                }
            }
            }catch(err){
                names.remove(val);
                inaccessible_calendars.add(val);
           }
          } else {
         nview.recycle()
         nab.recycle()
         maildb= ""  
        }
}
if(!inaccessible_calendars.isEmpty())
return "Following calendars are not accessible"+inaccessible_calendars.toString()+"*";

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

这些数据库是否在群集中?他们可以吗?如果是这样,那么当你打开它时,会出现“OpenWithFailOver”方法,我忘记了确切的语法。但是,如果数据库处于不可用状态,则应在群集中打开另一个数据库。