我有以下代码:
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 :(得分:0)
java.util.NoSuchElementException
。您有连接泄漏的可能性。您可以尝试启用废弃连接日志记录以找出泄漏的位置。
更新
如果你看到第一个连接,那么它很可能是URL。某些Google搜索表示连接网址的格式为jdbc:db2://<host>[:<port>]/<database_name>
。您的URL缺少主机名和数据库名称。如果端口不是标准端口,那么您也需要指定端口。
答案 1 :(得分:0)
试试 -
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup(serverURL);
Connection conn = ds.getConnection();
// ...