Closing a result set you left open!, MySQL
marcusdidiusfalco Sep 28, 2007 9:04 AMHi, I am just beginning to experiment with JPA.
I have jboss-4.2.1.GA and MySQL 5.0.45 community installed and I am using mysql-connector-java-5.0.6 as JDBC driver.
With
@Stateless
public class TestBean implements TestRemote {
@PersistenceContext(unitName="ejbbuch")
EntityManager entityManager;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public Product addProduct(Product product) {
entityManager.persist(product);
return product;
}
.....
---------------------------------------------------------------------------------
@Entity
public class Product implements Serializable {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
........
-------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<persistence>
<persistence-unit name="ejbbuch">
<jta-data-source>java:/MySqlDS</jta-data-source>
</persistence-unit>
</persistence>
---------------------------------------------------------------------------------
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>ritak1</password>
<min-pool-size>6</min-pool-size>
<max-pool-size>20</max-pool-size>
<blocking-timeout-millis>5000</blocking-timeout-millis>
<idle-timeout-minutes>0</idle-timeout-minutes>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- should only be used on drivers after 3.22.1 with "ping" support
-->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
<new-connection-sql>SELECT count(*) FROM product</new-connection-sql>
<check-valid-connection-sql>SELECT count(*) FROM product</check-valid-connection-sql>
<share-prepared-statements>true</share-prepared-statements>
<prepared-statement-cache-size>10</prepared-statement-cache-size>
<track-statements>true</track-statements>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
I get the following exceptions in the log file:
2007-09-28 13:41:04,265 WARN [org.jboss.resource.adapter.jdbc.WrappedConnection] Closing a result set you left open! Please close it yourself. java.lang.Throwable: STACKTRACE at org.jboss.resource.adapter.jdbc.WrappedStatement.registerResultSet(WrappedStatement.java:617) at org.jboss.resource.adapter.jdbc.WrappedStatement.getGeneratedKeys(WrappedStatement.java:533) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
When I switch back to the DefaultDS (HSQL) this disappears.
Otherwise the code works as expected with the MySQL database. But of course in a production environment you would not want to force JBoss to handle unclosed statements or resultsets.
Is this some problem with the JDBC driver or do I have some bug in my code?
Thanks,
Hans