据说每个JVM应该有一个Mongo
个实例。我正在尝试在JEE6应用中设置Mongo
,到目前为止我已经这样做了。
@Startup
@Singleton // EJB not CDI singleton
public class MongoDatabase {
private Mongo mongo;
@PostConstruct
public void init() throws Exception {
mongo = new Mongo();
}
@PreDestroy
public void shutdown() {
mongo.close();
}
@Produces
public DBCollection getProjectsCollection() {
return mongo.getDB("testdatabase").getCollection("mycollection");
}
}
这没关系,我可以@Inject
使用我想要的所有CDI服务并在应用启动时启动,但它不是每个JVM一个,每个应用程序一个。如果我在我的应用服务器上部署了多个应用,则所有应用都可以根据需要设置自己的Mongo
。
如何在JEE6中为每个服务器设置一个Mongo
,以便部署的所有应用程序都可以访问相同的连接池(类似于数据源到RDBMS)?我能以某种方式在JNDI注册吗?或者可能根据应用程序不够需要它?