加载数据源时出错

时间:2017-05-23 07:01:55

标签: java mysql tomcat jdbc

所以我最近开始在一个新的项目中工作。这些人以这种方式声明了Datasource连接:

Context init = new InitialContext();
Context context = (Context) init.lookup("java:comp/env");
ds = (DataSource)context.lookup("jdbc/WhateverDS");

我不知道为什么他们这样宣布。我一直都这样看过:

DataSource ds = new InitialContext().lookup("java:comp/env/jdbc/WhateverDS");

首先,你们知道为什么他们会分两步完成这项工作?

我的第二个问题是,有时我们会收到以下错误,如果它可能与上面的代码有关:

Caused by: javax.naming.NameNotFoundException: The name comp/env is not bound in this context
    at org.apache.naming.NamingContext.lookup(NamingContext.java:818)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:166)
    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:157)
    at javax.naming.InitialContext.lookup(InitialContext.java:411)
    ... 19 more

我们使用MySQL而不是Tomcat使用jdbc。

编辑: 他们对web.xml中声明的数据库一无所知。 context.xml(以及其他参数)如下所示:

Resource driverClassName="com.mysql.jdbc.Driver"
            name="jdbc/WhateverDS"
            type="javax.sql.DataSource"
            url="jdbc:mysql://localhost:3306/someDB"

1 个答案:

答案 0 :(得分:1)

回答您的第一个问题:DataSource的两步和一步查找之间没有任何有效差异。

您的第二个问题似乎与javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context

重复