Hi All,
I'm using Tomee latest snapshot (from yesterday) with JSF and Deltaspike .5.
All on Apache stack with Hibernate 4.2.7.sp1
I have a view scoped bean that gets called from from UI, then it saves to
DB, and calls an EJB async. I get below error if I click fast enough on link
from UI.
I also get the same pooledConnection error if I load pages in certain pages.
I cannot isolate what's the problem. I spent 2 days on it already.
Appreciate your help.
Sample code:
@ViewScoped
@Named
public class WallComponent implements Serializable {
@Inject
private EntityManager em;
@Inject
private SocialNotificationHandler notificationHandler;
@Transactional
public void saveLlikeAction(){
em.persist(new LikeObject(memInfo));
notificationHandler.handleAsyncSocialLike(memId);
}
}
@Singleton
public class SocialNotificationHandler implements Serializable {
@PersistenceContext(unitName = PersistenceConfiguration.UNIT_NAME)
private EntityManager entityManager;
@Asynchronous
public void handleAsyncSocialLike(UUID memId) {
MemberSocialNotification notification = new
MemberSocialNotification(memId);
entityManager.persist(notification);
}
}
public class PersistenceConfiguration implements Serializable {
public static final String UNIT_NAME = "PU";
@PersistenceUnit(unitName = UNIT_NAME)
private EntityManagerFactory entityManagerFactory;
@Produces
@RequestScoped
@Default
public EntityManager createEntityManager() {
return entityManagerFactory.createEntityManager();
}
public void closeEntityManager(@Disposes final EntityManager em) {
if (em.isOpen()) // this check is optional -not needed if
#close doesn't
get called by the transactional bean
{
em.close();
}
}
}
javax.transaction.xa.XAException
at
org.apache.openejb.resource.jdbc.managed.local.LocalXAResource.rollback(LocalXAResource.java:160)
at
org.apache.geronimo.transaction.manager.RollbackTask.run(RollbackTask.java:64)
at
org.apache.geronimo.transaction.manager.TransactionImpl.rollbackResources(TransactionImpl.java:599)
at
org.apache.geronimo.transaction.manager.TransactionImpl.rollback(TransactionImpl.java:498)
at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.rollback(TransactionManagerImpl.java:265)
at
org.apache.openejb.core.transaction.JtaTransactionPolicy.rollbackTransaction(JtaTransactionPolicy.java:370)
at
org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:320)
at
org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75)
at
org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:76)
at
org.apache.openejb.core.singleton.SingletonContainer._invoke(SingletonContainer.java:251)
at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:197)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(EjbObjectProxyHandler.java:253)
at
org.apache.openejb.async.AsynchronousPool$AsynchronousCall.call(AsynchronousPool.java:110)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: PooledConnection has already been closed.
at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:86)
at $Proxy87.rollback(Unknown Source)
at
org.apache.openejb.resource.jdbc.managed.local.LocalXAResource.rollback(LocalXAResource.java:158)
... 18 more
A second error caused by something else but the same root cause:
INFO: HHH000327: Error performing load command :
org.hibernate.exception.GenericJDBCException: could not prepare statement
Nov 8, 2013 7:46:51 PM
org.apache.openejb.core.transaction.EjbTransactionUtil handleSystemException
SEVERE: EjbTransactionUtil.handleSystemException: could not prepare
statement
org.hibernate.exception.GenericJDBCException: could not prepare statement
at
org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
at
org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:188)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:159)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1859)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1836)
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1816)
at org.hibernate.loader.Loader.doQuery(Loader.java:900)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:342)
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:312)
at org.hibernate.loader.Loader.loadCollectionBatch(Loader.java:2272)
at
org.hibernate.loader.collection.LegacyBatchingCollectionInitializerBuilder$LegacyBatchingCollectionInitializer.initialize(LegacyBatchingCollectionInitializerBuilder.java:95)
at
org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:674)
at
org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:85)
at
org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1855)
at
org.hibernate.collection.internal.AbstractPersistentCollection.forceInitialization(AbstractPersistentCollection.java:681)
at
org.hibernate.engine.internal.StatefulPersistenceContext.initializeNonLazyCollections(StatefulPersistenceContext.java:1030)
at
org.hibernate.event.internal.DefaultLoadEventListener.convertCacheEntryToEntity(DefaultLoadEventListener.java:683)
at
org.hibernate.event.internal.DefaultLoadEventListener.loadFromSecondLevelCache(DefaultLoadEventListener.java:571)
at
org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:421)
at
org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206)
at
org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:145)
at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1098)
at
org.hibernate.internal.SessionImpl.immediateLoad(SessionImpl.java:1013)
at
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:173)
at
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:285)
at
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)
at
com.sportivity.model.Member_$$_jvst9fb_1e.equals(Member_$$_jvst9fb_1e.java)
at
com.sportivity.services.handlers.SocialNotificationHandler.handleAsyncSocialLike(SocialNotificationHandler.java:125)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
at
org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:180)
at
org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:99)
at sun.reflect.GeneratedMethodAccessor406.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:182)
at
org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:164)
at
org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:80)
at
org.apache.openejb.core.singleton.SingletonContainer._invoke(SingletonContainer.java:233)
at
org.apache.openejb.core.singleton.SingletonContainer.invoke(SingletonContainer.java:197)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:268)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler$1.call(EjbObjectProxyHandler.java:253)
at
org.apache.openejb.async.AsynchronousPool$AsynchronousCall.call(AsynchronousPool.java:110)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.sql.SQLException: PooledConnection has already been closed.
at
org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:86)
at $Proxy87.prepareStatement(Unknown Source)
at sun.reflect.GeneratedMethodAccessor117.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.apache.openejb.resource.jdbc.managed.local.ManagedConnection.invokeUnderTransaction(ManagedConnection.java:165)
at
org.apache.openejb.resource.jdbc.managed.local.ManagedConnection.invoke(ManagedConnection.java:133)
at $Proxy88.prepareStatement(Unknown Source)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:161)
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:182)
... 50 more
My DS confi from resources.xml:
<Resource id="sportivityDS" type="javax.sql.DataSource">
DataSourceCreator tomcat
JdbcDriver org.postgresql.Driver
JdbcUrl jdbc:postgresql://127.0.0.1:5432/sportivity
UserName sportivity
Password sportivity
JtaManaged true
MaxActive 60
InitialSize 4
MaxIdle 6
MinIdle 2
maxWait 8000
validationInterval 30000
TimeBetweenEvictionRunsMillis 30000
minEvictableIdleTimeMillis 50000
testOnBorrow true
testOnReturn false
removeAbandoned true
removeAbandonedTimeout 60
logAbandoned true
ValidationQuery SELECT 1
jmxEnabled false
jdbcInterceptors=ConnectionState;StatementFinalizer;
</Resource>
--
View this message in context:
http://openejb.979440.n4.nabble.com/PooledConnection-has-already-been-closed-tp4666074.html
Sent from the OpenEJB User mailing list archive at Nabble.com.