2013-10-11 21 views
1

我有以下代碼:java.util.NoSuchElementException上的getConnection()

Context ctx = new InitialContext(); // Set the initial context 
DataSource dataSource = (DataSource) ctx.lookup("java:comp/env/" + serverURL);   
conn = dataSource.getConnection(); 

然而,線conn = dataSource.getConnection();被投擲java.util.NoSuchElementException。我對此有點困惑。這是否意味着我的服務器URL不正確?這是我的context.xml:

<Context> 
    <Resource name=serverURL auth="Container" type="javax.sql.DataSource" 
     driverClassName="com.ibm.db2.jcc.DB2Driver" url="jdbc:db2://" 
     username="" password="" maxActive="100" maxIdle="30" maxWait="10000" /> 

</Context> 

這裏是我的web.xml:

<resource-ref> 

     <res-ref-name>serverURL</res-ref-name> 

     <res-type>javax.sql.DataSource</res-type> 

     <res-auth>Application</res-auth> 

     <res-sharing-scope>Shareable</res-sharing-scope> 

    </resource-ref> 

任何人都知道什麼是錯?

回答

0

嘗試如此 -

Context initContext = new InitialContext(); 
Context envContext = (Context)initContext.lookup("java:/comp/env"); 
DataSource ds = (DataSource)envContext.lookup(serverURL); 
Connection conn = ds.getConnection(); 
// ... 

參見JNDI Datasource HOW-TO

+0

與此相同的結果。 –

0

java.util.NoSuchElementException連接池在連接用完時被拋出。機會是你有連接泄漏。您可以嘗試啓用放棄的連接日誌記錄來查找泄漏的位置。

更新:

如果你看到這與第一連接,那麼它很可能是URL。一些Google搜索表示連接URL的格式爲jdbc:db2://<host>[:<port>]/<database_name>。您的網址缺少主機名稱和數據庫名稱。如果端口不是標準的,那麼你也需要指定端口。

+0

我怎樣才能做到這一點? –

+0

如果這是原因,那麼看起來像OP在使用它們之後不關閉連接。 –

+0

這是我在程序中打開的第一個連接。 –

相關問題