我正在尝试理解Java对象在Domino环境中的行为,并想知道当你使用单例时会发生什么(单例是一个Java对象,其构造方式是JVM中只存在一个实例)
假设我在数据库1中有一个单例,在其上使用getInstance()
。该对象是在JVM中创建的,每次我使用getInstance()
方法时都返回相同的对象。
现在我将该类复制到数据库2并在该数据库中使用getInstance()
。哪个对象被退回?我最初在数据库1中创建的那个还是数据库2中新创建的那个?
答案 0 :(得分:2)
我已经做了一个测试,正如jjtbsomhorst建议的那样,确实会有两个独立的单身人士。
XPage SingletonTest.xsp
:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:text escape="true" id="computedField1" value="#{javascript:nl.tjit.SingletonTest.INSTANCE.getWhoami()}"></xp:text>
</xp:view>
Java类:
package nl.tjit;
public enum SingletonTest {
INSTANCE;
private final String whoami = "I am your father";
public String getWhoami() {
return whoami;
}
}
将XPage和Java类复制到另一个带有略微修改的whoami
字符串的数据库会产生不同的输出。所以单身人士不会在数据库之间共享。