为什么ServletContextListener看不到数据库?

时间:2017-06-02 03:11:54

标签: java servlets

我使用我的实现ServletContextListener在servlet上下文中编写我的对象来处理数据库。在单元测试中,我的数据库处理程序工作但ServletContextListener抛出java.sql.SQLException中的相同代码。

这是我的数据库处理程序测试,它创建了与数据库的连接并且它正常工作。没有例外没问题。好的:

@Test
public void whenCreateDBJoinInstanceThenResultOfMethodGetDBExecutorNotNull() throws SQLException {
    final DBJoint db = new DBJointHandler("database_scripts", "authentication_database");
    Assert.assertNotNull(db);
    db.closeConnection();
}

这与创建与数据库的连接使用相同的DBJoint

@WebListener
public class ContextListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {

        final ServletContext servletContext = servletContextEvent.getServletContext();

        servletContext.setAttribute("db", new DBJointHandler("database_scripts", "authentication_database"));

    }
    ...
}

这是我的结果:

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/user_storage

抛出此例外的地方:

public Connection getConnection() throws SQLException {

        return DriverManager.getConnection(
                properties.get("url"),
                properties.get("username"),
                properties.get("password")
        );

}

这与测试中的代码完全相同。当我运行测试然后它没关系。当我使用ServletContextListener时,它就是例外。

有什么不对?如何解决这个问题?谢谢。

0 个答案:

没有答案