Child pages
  • Hibernate connection pooling beállítása
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Current »

Sziasztok!
Szeretnék segítséget kérni egy mysql-hibernate c3p0 pooling beállításához mivel valamiért mindig elfogynak a kapcsolatok... ez egy GWT alapú webapp viszont van benne egy print thread és ebben a threadben fogy el valamiért a szabad kapcsolatok száma.
A print thread nagyon egyszerű: elindul a szál, megnézi egy List-ben hogy van-e nyomtatandó blokk, ha igen akkor kinyomtat 6 darabot, ha ezzel megvan akkor csinál egy másik szálat és ő elmegy 1 percre aludni. A másik szál csak annyit csinál hogy interneten egy json rest apit meghív ha kap vissza adatot akkor feldolgozza és a nyomtatandó blokkot berakja a print thread-be(statikus metodussal...)

A print threadben így inditom el a másik szálat:

new Thread(new Runnable() {
@Override
public void run() {
logger.trace("START PRINT THREAD => getNewDatasAndPrint() THREAD");
EntityManager entityManager = createEntityManager();
try {
entityManager.getTransaction().begin();
bkp_POSPrintService.getNewDatasAndPrint(entityManager);
entityManager.getTransaction().commit();
entityManager.close();
logger.trace("END PRINT THREAD => getNewDatasAndPrint() THREAD");
} catch (Exception ex) {
if (entityManager.getTransaction().isActive()) {
entityManager.getTransaction().rollback();
}
entityManager.close();
logger.warn("PRINT THREAD EXCEPTION2: " + ex.getMessage());
}
}
}).start();

az entity managert így hozom létre:

public static EntityManager createEntityManager() {
EntityManagerFactory createEntityManagerFactory = Persistence.createEntityManagerFactory(entityManagerUnitName);
return createEntityManagerFactory.createEntityManager();
}

persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" version="2.0">
<persistence-unit name="etelkiszallitoszamlazo">
<class>......</class>
<properties>
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.current_session_context_class" value="thread" />
<property name="hibernate.format_sql" value="true" />
<property name="hibernate.connection.CharSet" value="utf8" />
<property name="hibernate.connection.characterEncoding" value="utf8" />
<property name="hibernate.connection.useUnicode" value="true" />
<property name="hibernate.archive.autodetection" value="class, hbm" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
<property name="hibernate.connection.password" value="" />
<property name="hibernate.connection.url" value="jdbc:mysql://localhost/DBNEV" />
<property name="hibernate.connection.username" value="root" />
<property name="hibernate.dialect" value="hgexengine.utils.server.hibernate.Mysql5BitBooleanDialect" />
<property name="hibernate.c3p0.min_size" value="1" />
<!-- 5 -->
<property name="hibernate.c3p0.max_size" value="4" />
<!-- 20 -->
<property name="hibernate.c3p0.timeout" value="1200" />
<!-- 1800 -->
<property name="hibernate.c3p0.max_statements" value="15" />
<!-- 50 -->
<property name="hibernate.c3p0.idle_test_period" value="300" />
</properties>
</persistence-unit>
</persistence>

mysql-nel a mysql-huge config fájlt használom...

és ezt az exceptiont kapom:

2013-03-25/13:32:29.937/CET [Thread-479] TRACE (hu.eggproject.etelkiszallito.szamlazo.server.servlet.PrintThread:103) - run - END PRINT THREAD => getNewDatasAndPrint() THREAD
2013-03-25/13:32:56.343/CET [com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread-#2] WARN (com.mchange.v2.resourcepool.BasicResourcePool:1841) - run - com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask@114344a -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
at sun.reflect.GeneratedConstructorAccessor193.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1102)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2142)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:773)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
at sun.reflect.GeneratedConstructorAccessor62.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:135)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)

valaki valami tipp hogy mit rontok el  ? (smile)

 

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels