Java servlet和数据库连接池(Java servlets and database con

2019-08-17 16:59发布

只要看看在网络上连接池的例子,它们都实现连接池在每个servlet的基础。 所以每个Servlet都有自己的数据库连接池。 我的问题是,为什么是最好像DB连接的全局池? 由于全球池似乎比每一个servlet的游泳池更加高效..

另外,因为我想实现这样一个游泳池。 有没有办法让(我使用码头BTW)Servlet的初始化之前一类? 我刚开始的Servlet开发,但是这似乎对其他的东西太喜欢配置非常有用。 否则,我正要使用某种单状花纹..

Answer 1:

1)我会说标准的做法是建立一个连接池作为上下文描述符JNDI资源,这将不会是每个servlet的事情。

2)你想实现和声明的ServletContextListener 。



Answer 2:

说实话,我真的不知道你在说什么。 也许你可以提供你看样品。

在我看来,“真正的”连接池应该是完全Servlet无关,使用连接池在每个Servlet的基础是更多的是使用明细(和一个坏IMO)。 只要看看DBCP或C3P0对于您可以在“外的容器”上下文中使用连接池的好例子。

还要注意的是大部分(如果不是全部)集装箱实际提供自己的连接池实现(有时基于前面提到的例子),我看不出有什么好的理由不使用它们。 使用他们的标准方法是得到一个DataSource与JDNI命名服务注册。 今天, DataSouce是大多数至10C注入时间。 在过去,在服务定位器模式被经常使用。

在码头的情况下,看看数据源实例的文件中。



Answer 3:

我的问题是,为什么是最好像DB连接的全局池?

它不是! 所有的servlet应该共享池中的连接!

另外,因为我想实现这样一个游泳池。

现在已经有办法(春季IOC)注入其容器管理的连接池。

。 有没有办法让(我使用码头BTW)Servlet的初始化之前一类?

IoC容器可以引导每一个资源和servlet!

您可以通过注册的Spring DispatcherServlet和包含的映射和servlet作为bean定义一个xml弹簧线的servlet!

使用下面的定义,如果你只是想注入的连接,并使该servlet的其余部分,因为它是:

<bean name="simpleServletHandlerAdapter"
class="org.springframework.web.servlet.handler.SimpleServletHandlerAdapter" />


<bean name="simpleServletPostProcessor"
class="org.springframework.web.servlet.handler.SimpleServletPostProcessor" />


Answer 4:

它是使用JNDI它使用连接池,但配置它是不规范的方式非常频繁的Web容器提供了连接工厂(或类似)。

请参阅http://docs.codehaus.org/display/JETTY/DataSource+Examples因为它是如何与码头进行。



Answer 5:

其每一个servlet的连接池的一个优点是,如果小服务程序的一个行为不端,并使用其所有可用的连接,那么其他servlet将仍然有其单独的池的可用连接。 这增加了应用程序的稳定性。



文章来源: Java servlets and database connection pooling