我在不同的服务器上有大约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()+"*";
任何帮助都会非常感激。
答案 0 :(得分:0)
这些数据库是否在群集中?他们可以吗?如果是这样,那么当你打开它时,会出现“OpenWithFailOver”方法,我忘记了确切的语法。但是,如果数据库处于不可用状态,则应在群集中打开另一个数据库。