在驻留在服务器开发数据库中的托管 bean 中,我有以下代码:
s = ExtLibUtil.getCurrentSession();
theMap.put("Server Name", s.getServerName());
当我在运行后查看 map 时,我看到服务器名称并且该值是空白的。之后我得到一个数据库 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 打开。所以看起来 session 认为它在本地运行,因为它返回服务器名称 null。这真的很奇怪,我是不是错过了什么?目前,我刚刚在 getDbDirectory 中硬编码了服务器名称,但这在现实世界中不起作用。
最佳答案
这是 XPiNC 吗?这将认为数据库在本地运行,除非您设置了应用程序属性“在服务器上运行基于服务器的 XPage”
关于java - 从 session 中获取服务器名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24620094/