0

我试图了解 Java 对象在 Domino 环境中的行为方式,并且想知道当您使用单例时会发生什么(单例是一种 Java 对象,它的构造方式使得在 JVM 中只存在一个实例)。

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

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

4

1 回答 1

2

我做了一个测试,正如 jjtbsomhorst 建议的那样,确实会有两个单独的单例。

页面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字符串会产生不同的输出。所以单例不在数据库之间共享。

于 2012-10-22T10:23:00.760 回答