0

Итак, у меня была эта небольшая проблема при попытке использовать MongoDB (и java-драйвер), используя Servlets EJB и EJB Timers, работающие на Jboss 4.2.3.MongoDB JavaEE Singleton Дополнительные экземпляры

создать Монго синглтон как так

private static Mongo mongoSingleton = null; 

private MongoSingleton() 
{ 

} 

public synchronized static Mongo getMongo() throws UnknownHostException 
{ 
    if(mongoSingleton == null) 
    { 
     MongoOptions options = new MongoOptions(); 
     options.connectionsPerHost = 40; 
     mongoSingleton = new Mongo("localhost", options); 
    } 
    return mongoSingleton; 
} 

, а затем передать экземпляр между моим сеансные (который я использую для транзакций базы данных) с использованием

DB db = MongoSingleton.getMongo().getDB("data"); 

Если я не хочу что-то не хватает , конечно, это должно использовать единственный экземпляр, созданный в singleton, однако, когда я проверяю консоль Mongo, я замечаю, что дополнительные приложения создаются в приложении после создания экземпляра Mongo, это происходит в нечетные времена (не происходит накануне ry), а mongoSingleton никогда не является нулевым после создания исходного экземпляра.

Возможно, я пропустил что-то простое, но любые советы были бы полезны, приветствия.

+0

частный Mongo() { } – NINCOMPOOP

+0

Извините, забыли включить эту часть в Copy/Paste, у меня там есть. – user2351681

+0

[Что такое эффективный способ реализации одноэлементного шаблона в Java?] (Http://stackoverflow.com/questions/70689/) – fredoverflow

ответ

0

Как насчет того, чтобы вы отложили вывод отладки в свой конструктор?

private MongoSingleton() 
{ 
    long threadId = Thread.currentThread().getId(); 
    System.out.println("New instance created from thread " + threadId); 
} 

Вы также можете установить точку останова в этой строке, чтобы понять, когда именно создается один экземпляр.

+0

Я сделал, единственный экземпляр создается при запуске с помощью threadid 14, после чего нет экземпляров создаются, но соединения продолжают открываться, что довольно странно. – user2351681

+0

Вы не случайно сериализуете свой синглтон, не так ли? Кроме того, у меня нет идей, извините. – fredoverflow

+0

Нет, я не. В любом случае, спасибо. – user2351681

Смежные вопросы