从会话中获取服务器名称

时间:2014-07-07 21:22:07

标签: java session xpages lotus-domino xpinc

在驻留在服务器上的数据库中的托管bean中,我有以下代码:

s = ExtLibUtil.getCurrentSession();
theMap.put("Server Name", s.getServerName());

当我查看运行后的地图时,我看到服务器名称,值为空。在此之后,我获得一个数据库RepID,然后尝试使用

通过RepID打开数据库
appDB = s.getDbDirectory(null).openDatabaseByReplicaID(repID);
                if (appDB.isOpen()){
                    theMap.put(thisKey, repID); 
                }else{
                    theMap.put("DB " + thisKey, "Is Not Open");
                }

如果我在本地拥有数据库的副本,则会打开它,如果我删除本地副本,则打开失败。如果我将行更改为:

appDB = s.getDbDirectory("Development").openDatabaseByReplicaID(repID);

正确的appDB打开。所以看起来会话认为它在本地运行,因为它为服务器名称返回null。这真的很奇怪,我错过了什么吗?目前我刚刚在getDbDirectory中对服务器名称进行了硬编码,但在现实世界中无法正常工作。

2 个答案:

答案 0 :(得分:2)

这是XPiNC吗?这将考虑数据库在本地运行,除非您设置了应用程序属性“在服务器上运行基于服务器的XPage”

答案 1 :(得分:1)

String serverName = s.getEnvironmentString("ServerName", true);
or
String serverName = s.getEnvironmentString("ServerKeyFileName_Owner", true);