0

私はJavaオブジェクトがDomino環境でどのように動作するかを理解しようとしており、シングルトンを使用するとどうなるか疑問に思っています(シングルトンは、JVM内に1つのインスタンスのみが存在するように構築されたJavaオブジェクトです)。

データベース1にシングルトンがあり、それを使用getInstance()するとします。オブジェクトはJVMで作成され、そこからメソッドを使用するたびにgetInstance()同じオブジェクトが返されます。

次に、そのクラスをデータベース2にコピーしてgetInstance()、そのデータベースでも使用します。どのオブジェクトが返されますか?私が最初にデータベース1で作成したものですか、それともデータベース2から新しいものですか?

4

1 に答える 1

2

私はテストを行いましたが、jjtbsomhorstが示唆しているように、実際には2つの別々のシングルトンがあります。

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;
    }
}

わずかに変更されたwhoami文字列を使用して別のデータベースにコピーされたXPageおよびJavaクラスは、異なる出力を生成します。したがって、シングルトンはデータベース間で共有されません。

于 2012-10-22T10:23:00.760 に答える