2013-05-27 41 views
0

看看我的問題出現在下面,每當​​我想使用連接池訪問我的數據庫總是需要調用Servlet中的Init方法來檢索連接,對於我來說是一個問題,我一直在這裏查看頁面上的幾個問題。tomcat連接池的理想結構

我的想法是調用我的第一個servlet init和Connection發送會話來更改我的數據庫,而不必調用init方法,但它出現了我的問題,應該在哪裏關閉我的連接。

我試圖找到一個理想的連接池結構來解決這個問題。

我的init方法包含以下

public void init(ServletConfig config) throws ServletException { 
    Context ctx; 
    try { 
     ctx = new InitialContext(); 
     sourceDb = (DataSource) ctx.lookup("java:comp/env/jdbc/Practica5"); 

    } catch (NamingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

我去會議:

synchronized (sourceDb) { 
    con = sourceDb.getConnection(); 
} 
if (con == null) { 
    throw new ServletException("Problemas con la conexion"); 
} 
request.getSession().setAttribute("con",con); 

回答

0

共享會話的數據庫連接將是麻煩在任何時候... 我覺得它可能會導致執行期間的序列化問題...

如果要求在會話中使用單個連接對象,那麼它是tter在這種情況下,我們確保連接對象通過數據源的servlet的

+0

然後將不得不維持之間的連接對象返回到池中,並在另一個servlet再次得到它...

在每個servlet中放置init方法?會有一種方法將它們分開嗎? –

+0

不需要這樣做...在一個init()方法中初始化並使該類首先加載...它的工作原理... –

+0

然後當我初始化servlet init時,我的第一個接下來我可以使用我的connecion進行以下操作小服務程序? –