僅查看Web上的連接池示例,它們都以每個小服務程序爲基礎實現連接池。所以每個servlet都有自己的數據庫連接池。我的問題是,爲什麼更喜歡像db連接的全局池?由於一個全局池似乎比每個servlet池更高效......Java小服務程序和數據庫連接池
另外,因爲我正在考慮實現這樣一個池。有沒有辦法讓一個類在servlets之前初始化(我使用jetty btw)?我只是開始servlet開發,但對於配置等其他方面也很有用。否則,我只打算使用某種類似單例模式..
僅查看Web上的連接池示例,它們都以每個小服務程序爲基礎實現連接池。所以每個servlet都有自己的數據庫連接池。我的問題是,爲什麼更喜歡像db連接的全局池?由於一個全局池似乎比每個servlet池更高效......Java小服務程序和數據庫連接池
另外,因爲我正在考慮實現這樣一個池。有沒有辦法讓一個類在servlets之前初始化(我使用jetty btw)?我只是開始servlet開發,但對於配置等其他方面也很有用。否則,我只打算使用某種類似單例模式..
1)我會說標準的做法是建立一個連接池作爲上下文描述符中的JNDI資源,其將而不是是每個servlet要做的事情。
2)您需要實現並聲明ServletContextListener。
每個servlet有一個連接池的一個優點是,如果其中一個servlet行爲不當並使用其所有可用連接,則其他servlet仍將具有連接可以在他們獨立的游泳池中使用。這增加了您的應用程序的穩定性
我的問題是,爲什麼更喜歡全局數據庫連接池?
這不是!所有的servlet應該共享池中的連接!
此外,因爲我正在考慮實施這樣的游泳池。
已經有方法(Spring IoC)注入容器管理的池連接。
。有沒有辦法讓一個類在servlets之前初始化(我使用jetty btw)?
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" />
說實話,我真的不知道你在說什麼。也許你可以提供你看過的樣品。
對我來說,一個「真正的」連接池應該是完全Servlet
不可知的,並且在每個Servlet的基礎上使用連接池是一個更多的使用細節(和一個錯誤的IMO)。只需查看DBCP或c3p0就可以在「容器外」上下文中使用的連接池的很好示例。還需要注意的是,大多數(如果不是全部的話)容器實際上都提供了自己的連接池實現(有時基於前面提到的示例),並且我沒有看到沒有任何理由不使用它們。使用它們的標準方法是獲得用JDNI命名服務註冊的DataSource
。今天,DataSouce
大部分時間都是通過IoC注入的。在過去,經常使用Service Locator模式。
在Jetty的情況下,請查看文檔中的DataSource Examples。
++注意更多的話 – 2009-10-10 16:45:54
它是使用JNDI它使用連接池,但配置它是不規範的方式非常頻繁的Web容器提供了連接工廠(或類似)。
請參閱http://docs.codehaus.org/display/JETTY/DataSource+Examples因爲它是如何與碼頭進行。
錯誤的行爲會造成傷害!如果您的應用程序執行單線程(servlet),您將從連接池獲得什麼好處。 – 2009-10-10 15:51:19
如果應用程序只有一個線程,那麼在執行數據庫連接池時沒有意義。我不確定你在問什麼。 – Kolibri 2009-10-10 16:03:11