与PostgreSQL的Wildfly连接池。获得JdbcSQLException

时间:2016-11-27 14:11:40

标签: java postgresql servlets jdbc

我正在尝试为只有一个servlet的简单Web项目实现连接池。但由于某种原因,我得到一个JdbcSQLException org.h2.jdbc.JdbcSQLException:ERROR [stderr](默认任务-4)表“EMP”未找到; 这是我第一次在Wildfly中配置连接池。经过一番研究后,我仍然无法弄清楚如何解决这个问题。我想也许在我的Intelij项目中没有正确配置somethig。 我做了以下步骤:

  • 在Wildfly中部署了一个JDBC驱动程序(postgresql-9.4-1201.jdbc4.jar);
  • 配置了JDBC数据源(名称:PostgresDS,JNDI:java:/ PostgresDS);
  • 在Wildfly中测试了连接(连接URL:jdbc:postgresql:// localhost:5433 / sample_db);
  • 已成功连接到数据库PostgresDS。

在Intellij项目中:

  • 创建了一个数据源(也称为PostgresDS),成功连接到数据库(URL:jdbc:postgresql:// localhost:5433 / sample_db)。

但是当我尝试运行servlet时,会发生JdbcSQLException。

[2016-11-27 06:03:38,447] Artifact employees-jsp:war exploded: Artifact is deployed successfully
[2016-11-27 06:03:38,447] Artifact employees-jsp:war exploded: Deploy took 1 619 milliseconds
18:03:45,222 ERROR [stderr] (default task-4) org.h2.jdbc.JdbcSQLException: Таблица "EMP" не найдена
18:03:45,222 ERROR [stderr] (default task-4) Table "EMP" not found; SQL statement:
18:03:45,223 ERROR [stderr] (default task-4) SELECT * FROM emp [42102-173]

我在这里错过了什么?我是否需要在项目中配置任何.xml文件?

我会感激所有的暗示,意见和批评。

这是servlet:

    @WebServlet(name = "ServletDS", urlPatterns = {"/ServletEmp"})
public class ServletDS extends HttpServlet {
    @Resource(name = "PostgresDS")
    private DataSource dataSource;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // Set up the Printwriter
        PrintWriter out = response.getWriter();
        response.setContentType("text/plain");

        // Get a connection to the DB
        Connection myConnection = null;
        Statement myStatement = null;
        ResultSet myResultSet = null;

        try {
            myConnection = dataSource.getConnection();

            // Create a SQL statement
            String sql = "SELECT * FROM emp";
            myStatement = myConnection.createStatement();

            // Execute SQL query
            myResultSet = myStatement.executeQuery(sql);

            // Process the result set
            while (myResultSet.next()) {
                String name = myResultSet.getString("ename");
                out.println(name);
            }

        } catch (Exception exc) {
            exc.printStackTrace();
        }

    }
}

1 个答案:

答案 0 :(得分:0)

我刚刚解决了这个问题。我错过的是使用JNDI查找数据源以获取连接。以下是我为了获得连接而添加到代码中的内容:

    function getPosition(event)
    {
        var x = event.clientX;
        var y = event.clientY;

        var viewportArray = [
            0, 0, 700, 700
        ];

        var modelPointArrayResults = [];

        var success = GLU.unProject(
            x, y, 0,
            mvMatrix, mOrtho,
            viewportArray, modelPointArrayResults);

        alert("x:" + modelPointArrayResults[0] + " y:" + modelPointArrayResults[1]);
    }