从NSF加载的单例对象的行为

时间:2012-10-21 19:01:01

标签: java xpages

我正在尝试理解Java对象在Domino环境中的行为,并想知道当你使用单例时会发生什么(单例是一个Java对象,其构造方式是JVM中只存在一个实例)

假设我在数据库1中有一个单例,在其上使用getInstance()。该对象是在JVM中创建的,每次我使用getInstance()方法时都返回相同的对象。

现在我将该类复制到数据库2并在该数据库中使用getInstance()。哪个对象被退回?我最初在数据库1中创建的那个还是数据库2中新创建的那个?

1 个答案:

答案 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字符串的数据库会产生不同的输出。所以单身人士不会在数据库之间共享。