如何解决Informix -255“非事务”错误?

时间:2012-10-10 16:16:03

标签: glassfish-3 informix

在非ANSI,无缓冲日志记录模式下使用Informix 11.70数据库。

我通过GlassFish 3.1.2.2服务器访问此数据库,连接池设置为使用javax.sql.ConnectionPoolDataSource类实现的com.informix.jdbcx.IfxConnectionPoolDataSource个对象。

所有事务都在JPA提供程序(在本例中为Hibernate)的控制之下,因此没有明确的BEGIN WORKCOMMIT WORKROLLBACK WORK语句可以控制。

在此配置的一个特定部署中,我们收到-255错误,这表示:

  • 数据库处于非日志记录模式(在我们的情况下不是这样)
  • 数据库处于某种日志记录模式,但是没有前面的COMMIT WORK语句的人发布了BEGIN WORK

如何解决此问题?什么环境因素会导致一个部署而不是另一个部署出现此错误?

1 个答案:

答案 0 :(得分:1)

谢天谢地,答案与Informix或Hibernate对Informix的支持无关。它与GlassFish中模糊的自动数据源创建有关,这取决于您的部署方式。 (此可能与Informix数据源提供给GlassFish Web控制台的默认属性有关。)

具体来说,我们有一个案例,我们的部署者试图在没有首先创建所需的JDBC资源的情况下在GlassFish上部署我们的应用程序。 GlassFish报告说缺少一些奇怪的JDBC资源:jdbc/foobar__pmjdbc/foobar__nontx

我们的部署人员,没有弄清楚任何错误,手工创造了这些资源。 (当您使用Web控制台进行部署时,GlassFish通常显然是creates these automatically。)

因此,我们的部署人员无意中指定了一个非事务性数据源供我们的应用程序使用,这是这里的根本原因。