0

在驻留在服务器开发上的数据库中的托管 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 中硬编码了服务器名称,但这在现实世界中不起作用。

4

2 回答 2

2

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

于 2014-07-07T21:49:06.357 回答
1
String serverName = s.getEnvironmentString("ServerName", true);
or
String serverName = s.getEnvironmentString("ServerKeyFileName_Owner", true);
于 2014-07-07T22:34:32.333 回答