根据Mongo驱动程序文档,数据库连接池是由MongoDB对象神奇地处理的。
这是否意味着在servlet中创建连接到MongoDB数据库的单例对象实例是安全的,该servlet将在Tomcat启动时运行,而不必担心通过context.xml在Tomcat中配置数据库连接池?
这是正确的思考方式吗?我是否误解了Tomcat /数据库连接池的一些基本概念?
发布于 2011-01-11 03:08:35
我们一直通过CFMongoDB项目使用Java驱动程序,我们按照您所描述的那样使用它,但是是在ColdFusion应用程序中,而不是在Java中。但想法是一样的:创建一个对象,我们重用它,该对象维护一个到Mongo服务器的连接。
您可以创建一个Mongo Java实例,它将维护一个内部连接池(默认大小为10) -对您来说,它是隐藏的,您无需担心它。Mongo Java文档推荐这样做:
http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency
我们现在已经在生产中运行了它,没有任何问题。多个web请求线程使用相同的Mongo实例,Mongo使用它的内部池可以足够快地处理这个问题(我们正在做日志记录,所以它可以写得非常快!)。
值得记住的是,在您完成的任何实例上调用close() -这将随着时间的推移停止Mongo服务器上的连接耗尽:
http://api.mongodb.org/java/2.5-pre-/com/mongodb/Mongo.html#close()
所以总而言之,不用担心配置Tomcat。
希望这能有所帮助!
https://stackoverflow.com/questions/4647636
复制相似问题