解决Transaction is not active: + : Cannot open connection

 16:21:02,015 WARN  [JDBCExceptionReporter] SQL Error: 0, SQLState: null
16:21:02,015 ERROR [JDBCExceptionReporter] Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57ff89:6ed:4ad2e511:55 status: ActionStatus.ABORTING >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57ff89:6ed:4ad2e511:55 status: ActionStatus.ABORTING >)
16:21:02,015 ERROR [STDERR] javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: Cannot open connection

解决办法:之前网上搜到的解决方法:设置JBOSS服务器 jboss-service.xml配置文件 的事务超时时间

 由默认的300秒 改多一点 如600秒

 

   <!-- JBoss Transactions JTA -->
   <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService"
      name="jboss:service=TransactionManager">
      <attribute name="TransactionTimeout">600</attribute>
      <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> 
   </mbean>

测试后发现此方法无效。由于公司的有多台测试机,后来发现只在其中一台上会报此异常,其余的都可以正常运行,这样基本可以排除代码错误。初步定位为数据库问题,手动修改建表语句,默认用utf-8的格式来创建新表,发现问题仍然存在,后来用数据库工具SQLyog(Heidi SQL也可)仔细比较表结构发现,虽然建表是utf8,但是表字段仍然是latin来创建的,这样当插入数据库的记录有中文就出现上述异常。至此,修改建表和字段的字符集,问题解决。

你可能感兴趣的:(Active)