GlassFish中的连接,奇怪的行为?

时间:2013-05-07 15:17:53

标签: jsf glassfish connection-pooling managed-bean postgresql-9.0

我有这个一般性的问题:连接池是否可以在缓存中保留一些“古老”连接并在调用另一个连接时服务它?我知道它以某种方式存在,但它是否使用已经通过某些DataSource创建的连接对象,而我明确地将查找更改为该数据源到新的JNDI地址,并且使用这个新的查找创建了一个新连接(我希望使用它,那是)?

有点具体,这是我的步骤:

我在GlassFish服务器中创建了一个连接,在JNDI中给它一个名字,在我的代码中使用它,如下所示:

InitialContext ctx = new InitialContext();
         //The JDBC Data source that we just created
        DataSource ds = (DataSource) ctx.lookup("postgresJNDI");
        Connection connection = ds.getConnection();
        Statement st = connection.createStatement();

        ResultSet rs = st.executeQuery("SELECT util_firm, util_name, previlege FROM utilisateur WHERE password = '" + password + "' AND pseudo = '" + pseudo + "' ") ;

问题是,一旦请求发送,我就会收到一条警告,说明:

serverError: class javax.faces.el.EvaluationException the name of column utilfirm was not found in this ResultSet.

utilfirm甚至不在我的请求中,也不在我的数据库中(但是我已经删除了一个古代的,通过其他JNDI地址访问的那个......)。

我可能会补充一点,我已经完成了关闭我使用过的所有连接。

这是正常的吗?或者它是我配置中的东西?

提前致谢。

1 个答案:

答案 0 :(得分:0)

正如所期望的那样,使用连接池的bean实际上(出于一些神秘的原因)保留了一些旧JNDI的名称,因此没有考虑代码中指定的新名称。因此,我只是继续创建一个新的bean并使用它,现在一切正常。

我仍然对与该主题相关的任何文档感兴趣。

祝你们日夜愉快!