2011-12-21 84 views
0

我有一個數據源,在我的jetty.xml文件中設置看起來像這樣:多個servlet可以綁定到相同的數據源(JNDI)嗎?

<New id="MySQL_DS" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/MySQL_DS</Arg> 
    <Arg> 
    <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
     <Set name="driverClass">com.mysql.jdbc.Driver</Set> 
     <Set name="jdbcUrl">jdbc:mysql:[IP]</Set> 
     <Set name="user">[USER]</Set> 
     <Set name="password">[PASSWORD]</Set> 
     <Set name="checkoutTimeout">5000</Set> 
     <Set name="initialPoolSize">3</Set> 
     <Set name="maxIdleTime">3600</Set> 
     <Set name="maxPoolSize">50</Set> 
     <Set name="minPoolSize">1</Set> 
     <Set name="maxStatements">200</Set> 
     <Set name="maxConnectionAge">0</Set> 
     <Set name="acquireIncrement">3</Set> 
    </New> 
    </Arg> 
</New> 

它在我的web.xml中定義的,像這樣:

<resource-ref> 
    <description>DB Connection</description> 
    <res-ref-name>jdbc/MySQL_DS</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

我綁定到我的數據源像這在我的servlet代碼:

InitialContext ctx = new InitialContext(); 
_dataSource = (DataSource)ctx.lookup("java:comp/env/jdbc/MySQL_DS"); 

我的問題是:

我甲腎上腺素編輯有4個servlet使用這種上下文查找,在同一個數據源上。這樣的事情甚至可能嗎?

我的意思是,多個servlet可以綁定到同一個數據源,還是必須每個servlet都有自己的一個?

我這樣問,因爲我有一個正常工作的servlet,但另一個引發了一個javax.naming.NameNotFoundException(其餘名稱爲jdbc/MySQL_DS)。

謝謝!

回答

2

據我所知,你不應該爲每個servlet指定唯一的數據源。

我正在研究一個具有多個servlet的Java EE Web應用程序,它們都使用一個數據源連接到數據庫。此Web應用程序使用Oracle作爲後端,WebLogic Server作爲應用程序服務器。

在這個Web應用程序的體系結構中,有一個用於連接到數據庫的專用類。所有的servlet調用這個類來連接到數據庫。

此連接類有在構造以下行(如上類似你)...

InitialContext ic=new InitialContext();
DataSource ds=(DataSource) ic.lookup("jdbc/OracleDS");
con=ds.getConnection("user","pwd"); \\ ("con" is a private Connection instance var)

然後,將每個小服務程序的只是使用的連接類連接到數據庫。

例如...

MyConnectionClass con = new MyConnectionClass(); // ("MyConnectionClass" is where the data source info is...)
PreparedStatement ps=con.prepareStatement("SELECT * FROM SOME_TABLE");
ResultSet rs=ps.executeQuery();
more code below...

+0

好吧,似乎很相似,我在做什麼。謝謝! – Mathieu 2011-12-22 13:19:07

相關問題