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:
Code Block |
---|
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:
Code Block |
---|
public static EntityManager createEntityManager() { EntityManagerFactory createEntityManagerFactory = Persistence.createEntityManagerFactory(entityManagerUnitName); return createEntityManagerFactory.createEntityManager(); } |
persistence.xml
Code Block |
---|
<?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:
Pre |
---|
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 |
valaki valami tipp hogy mit rontok el ?