使用 jdbc 到 MySQL 连接时出错 |命名异常

Error while using jdbc to MySQL connection | Naming Exception

我完全是个初学者,我正在使用 Tomcat 9.0、MySQL 和 jdbc 做一个简单的 jee 项目。 在尝试连接到数据库时,我得到: javax.naming.NameNotFoundException: Name [jdbc/city2] is not bound in this Context. Unable to find [jdbc].

我已经尝试将配置文件添加到 Tomcat 文件夹 apache-tomcat-9.0.24\conf\Catalina\localhost,但确实如此没有什么。 这就是我的 ConnectionProvider class 的样子:;

    private static DataSource dataSource;

    public static Connection getConnection() throws SQLException {
        return getDSInstance().getConnection();
    }

    private static DataSource getDSInstance() {
        if (dataSource == null) {
            try {
                Context initContext = new InitialContext();
                dataSource = (DataSource) initContext.lookup("java:comp/env/jdbc/city2");
            } catch (NamingException e) {
                e.printStackTrace();
            }
        }
        return dataSource;
    }

我的 context.xml 文件如下所示:

<Context>
    <Resource name="jdbc/city2"
              auth="Container"
              type="javax.sql.DataSource"
              initialSize="10"
              maxTotal="100"
              maxIdle="30"
              maxWaitMillis="10000"
              username="root"
              password="admin"
              driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/city2?useSSL=false&amp;serverTimezone=UTC"  />
</Context>

在web.xml中声明数据源:

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

查看更多详情here