-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 19 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: connection unexpectedly closed using c3p0 0.8.5
PostPosted: Mon Mar 14, 2005 7:10 pm 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
Anybody knows if c3p0 0.8.5 works with hibernate 2.1.7 (the one released with hibernate is c3p0 0.8.4.5). Somehow we got intermittent jdbc exceptions (sometimes at session.commit(), some like the following stack traces, always at BatchImpl class). The problem is not always reproducible.
We have to use c3p0 0.8.5 because it has a bug fix we need, but it looks like it has more problems. :-(

Thanks,
--Jiunjiun

Read the rules before posting!
http://www.hibernate.org/ForumMailingli ... AskForHelp

[b]Hibernate version:[/b]
2.1.7c

[b]Mapping documents:[/b]

[b]Code between sessionFactory.openSession() and session.close():[/b]
try {
session = getSession();
transaction = session.beginTransaction();
if (object == null) {
session.delete(deleteQueryString, values, types);
} else {
if (isTransient(session, object)) {
session.delete(deleteQueryString, values, types);
}
session.saveOrUpdate(object);
}

transaction.commit();
} catch (Exception exception) {
try {
if (transaction != null) { transaction.rollback(); }
} catch (HibernateException e) {
// ignore nested exception
}
PersistenceOperationException newException =
new PersistenceOperationException(exception.getMessage(),exception);
throw newException;
} finally {
try {
if (session != null) { session.close(); }
} catch (HibernateException e) {
// ignore exception
}
}

protected Session getSession() throws HibernateException {
return getSessionFactory().openSession();
}

[b]Full stack trace of any exception that occurs:[/b]
FINE: Could not save objectjava.sql.SQLException: You can't operate on a closed connection!!! at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:68) at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1682) at net.sf.hibernate.impl.BatcherImpl.closePreparedStatement(BatcherImpl.java:273) at net.sf.hibernate.impl.BatcherImpl.closeStatement(BatcherImpl.java:141) at net.sf.hibernate.id.SequenceGenerator.generate(SequenceGenerator.java:84) at net.sf.hibernate.impl.SessionImpl.saveWithGeneratedIdentifier(SessionImpl.java:774) at net.sf.hibernate.impl.SessionImpl.save(SessionImpl.java:747) at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1397) at net.sf.hibernate.engine.Cascades$4.cascade(Cascades.java:114) at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:436) at net.sf.hibernate.engine.Cascades.cascadeCollection(Cascades.java:526) at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:452) at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:503) at net.sf.hibernate.engine.Cascades.cascade(Cascades.java:482) at net.sf.hibernate.impl.SessionImpl.doUpdate(SessionImpl.java:1484) at net.sf.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:1402) at com.sun.hss.domain.internal.HibernatePersistenceToolkit.store(HibernatePersistenceToolkit.java:102) at com.sun.hss.domain.internal.PersistentMBeanSupport.store(PersistentMBeanSupport.java:87) at com.sun.hss.domain.internal.MonitoringData.store(MonitoringServiceMXBeanImpl.java:1724) at com.sun.hss.domain.internal.MonitoringData.setThresholds(MonitoringServiceMXBeanImpl.java:1996) at com.sun.hss.domain.internal.MonitoringServiceMXBeanImpl.setThresholds(MonitoringServiceMXBeanImpl.java:889) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.java:414) at javax.management.StandardMBean.invoke(StandardMBean.java:421) at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213) at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220) at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815) at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784) at com.sun.jdmk.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:203) at com.sun.jdmk.JdmkMBeanServerImpl.invoke(JdmkMBeanServerImpl.java:764) at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:201) at $Proxy13.setThresholds(Unknown Source) at com.sun.hss.services.svrmgmt.impl.SvrMonitorDelegate.setThreshholds(SvrMonitorDelegate.java:271) at com.sun.hss.services.svrmgmt.impl.SvrMonitorDelegate.setServerThreshholds(SvrMonitorDelegate.java:137) at com.sun.hss.services.svrmgmt.impl.SvrMgmtService.setServerThreshholds(SvrMgmtService.java:659) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.jmx.mbeanserver.StandardMetaDataImpl.invoke(StandardMetaDataImpl.java:414)
at javax.management.StandardMBean.invoke(StandardMBean.java:421)
at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
at com.sun.jdmk.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:203)
at com.sun.cacao.agent.DispatchInterceptor.invoke(DispatchInterceptor.java:806)
at com.sun.jdmk.JdmkMBeanServerImpl.invoke(JdmkMBeanServerImpl.java:764)
at javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:201)
at com.sun.cacao.agent.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:212)
at $Proxy10.setServerThreshholds(Unknown Source)
at com.sun.hss.ui.commands.server.SetServerThresholdCommand.executeCommand(SetServerThresholdCommand.java:71)
at com.sun.hss.ui.commands.AbstractCommand.execute(AbstractCommand.java:80)
at com.sun.hss.ui.commands.CommandProcessor.execute(CommandProcessor.java:138)
at com.sun.hss.ui.commands.CommandProcessor.process(CommandProcessor.java:110)
at com.sun.hss.ui.commands.cacao.CommandParserCommand.execute(CommandParserCommand.java:201)
at com.sun.cacao.commandstream.shell.Shell.execute(Shell.java:212)
at com.sun.cacao.commandstream.CommandStreamAdaptor$1.run(CommandStreamAdaptor.java:592)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:379)
at com.sun.cacao.commandstream.CommandStreamAdaptor$ClientRun.run(CommandStreamAdaptor.java:588)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.NullPointerException
at org.postgresql.jdbc1.AbstractJdbc1Statement.getResultSet(AbstractJdbc1Statement.java:769)
at org.postgresql.jdbc1.AbstractJdbc1Statement.close(AbstractJdbc1Statement.java:789)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1674)
... 63 more

[b]Name and version of the database you are using:[/b]
Postgres 7.x

[b]The generated SQL (show_sql=true):[/b]

[b]Debug level Hibernate log excerpt:[/b]


Top
 Profile  
 
 Post subject:
PostPosted: Mon Mar 14, 2005 9:42 pm 
C3P0 Developer
C3P0 Developer

Joined: Tue Jan 06, 2004 8:58 pm
Posts: 145
jiunjiunma,

c3p0-0.8.5 is perfectly compatible with hibernate. I recommend all users still using c3p0-0.8.4.x upgrade to c3p0-0.8.5.1. (Those willing to take a few risks in the name of science are encouraged to try out the still early c3p0-0.9.0 series, and provide feedback.)

c3p0's error message is misleading in this case. The relevant c3p0 class misinterprets an unexpected NullPointerException that it sees when working with Postgres' Statement object. It expects to see NullPointerExceptions when a user tries to work with a closed Connection. I'll try to modify c3p0 to give a more correct error message in this case.

In practical terms, this has two ramifications:

1) Your Connection is not (necessarily) closed, really.

2) The event that directly provokes the problem is occurring within Postgres org.postgresql.jdbc1.AbstractJdbc1Statement.getResultSet(AbstractJdbc1Statement.java:769). Looking at various mailing lists, it seemed that postgres' JDBC drivers early on had a variety of cases where failures would provoke NullPointerExceptions, and over time these were replaced with more graceful ways of indicating the problem. Upgrading to the most recent version of Postgres' drivers that is compatible with your database vetsion may resolve the problem, or may at least lead to better information about what's going wrong.

In the end, this problem may or may not turn out to be c3p0-related, but until we know why postgres' Statement implementation is throwing a NullPointerException on close(), it'll be hard to know.

smiles,
Steve (c3p0 guy)


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 15, 2005 2:24 am 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
OK, I am upgrading to the newest jdbc driver. Will let you know if similar problem happens. Thanks a lot.

--Jiunjiun


Top
 Profile  
 
 Post subject: ConstraintException closes connection
PostPosted: Tue Mar 15, 2005 9:21 pm 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
I'm also having this problem. I have a unique constraint in the DB. I try to save a record and then catch the ConstraintException that is thrown when the constraint is violated.

That's what I want to do anyway. But, when I do that, I find that any further use of Hibernate results in a the exceptions:

16:50:51.015 WARN!! [P1-1] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >42> SQL Error: 0, SQLState: null
16:50:51.015 ERROR! [P1-1] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >42> You can't operate on a closed connection!!!

Hibernate version:
3.0.beta4.
DB:
PostgreSQL 8.0
JDBC driver:
postgresql-8.0-310.jdbc3.jar

I was initially using c3p0 0.8.5. I tried using version 0.8.5.1 and the problem still occurs. I tried using c3p0-0.9.0-pre2.jar and it still occurs.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 15, 2005 9:24 pm 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
We upgrade our JDBC driver to the latest one (pg74.215.jdbc3.jar) but still encountered this error. Here is the new stack trace we got:

FINE: Could not execute JDBC batch update
java.sql.SQLException: You can't operate on a closed connection!!!
at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:68)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1682)
at net.sf.hibernate.impl.BatcherImpl.closePreparedStatement(BatcherImpl.java:273)
at net.sf.hibernate.impl.BatcherImpl.closeStatement(BatcherImpl.java:141)
at net.sf.hibernate.impl.BatcherImpl.executeBatch(BatcherImpl.java:130)
at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:60)
at net.sf.hibernate.impl.BatcherImpl.prepareStatement(BatcherImpl.java:57)
at net.sf.hibernate.impl.BatcherImpl.prepareBatchStatement(BatcherImpl.java:110)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:637)
at net.sf.hibernate.persister.EntityPersister.update(EntityPersister.java:623)
at net.sf.hibernate.impl.ScheduledUpdate.execute(ScheduledUpdate.java:52)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2438)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2392)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2260)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.sun.hss.domain.internal.HibernatePersistenceToolkit.store(HibernatePersistenceToolkit.java:105)
...
Caused by: java.lang.NullPointerException
at org.postgresql.jdbc1.AbstractJdbc1Statement.getResultSet(AbstractJdbc1Statement.java:771)
at org.postgresql.jdbc1.AbstractJdbc1Statement.close(AbstractJdbc1Statement.java:795)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.close(NewProxyPreparedStatement.java:1674)
... 42 more
Mar 15, 2005 5:44:04 PM net.sf.hibernate.util.JDBCExceptionReporter logExceptions
WARNING: SQL Error: 0, SQLState: null
Mar 15, 2005 5:44:04 PM net.sf.hibernate.util.JDBCExceptionReporter logExceptions
SEVERE: You can't operate on a closed connection!!!

Also, here is the c3p0 properties we have in our hibernate.properties:
hibernate.c3p0.max_size 2
hibernate.c3p0.min_size 2
hibernate.c3p0.timeout 0
hibernate.c3p0.max_statements 100
hibernate.c3p0.idle_test_period 3000
hibernate.c3p0.acquire_increment 1
hibernate.c3p0.validate false


Top
 Profile  
 
 Post subject: I meant ConstraintViolationException
PostPosted: Tue Mar 15, 2005 9:28 pm 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
Oops. In my previous message I said ConstraintException when I meant ConstraintViolationException.


Top
 Profile  
 
 Post subject:
PostPosted: Tue Mar 15, 2005 9:39 pm 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
Interesting. We seemed to have a constraint violation (a duplicate key) when this problem happened too. Have you try c3p0 0.8.4.5? It seemed to be working fine in this case. I am going to try it again.


Top
 Profile  
 
 Post subject: downgrading fixed it
PostPosted: Tue Mar 15, 2005 11:57 pm 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
I just downgraded to c3p0 0.8.4.5 and it does work now.

It also outputs a huge stack every time I do this. It's coming from:
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:277)

Since the constraint exception is expected, I certainly don't want these things filling up my logs.

However, this is easily fixed. I'll just hide it using log4j.properties.

But, I won't be able to upgrade to the latest version of c3p0 until someone fixes this issue or provides a workaround. I hope there aren't any important bugs in 0.8.4.5 that I'll have to deal with now.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 16, 2005 1:17 am 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
We upgraded to c3p0 0.8.5 because it would mask the db username and password dumped to stderr. Other than that, we were pretty happy with 0.8.4.5. It was also the "official" release bundled with hibernate 2.1.7.

I think right now I have no choice but to downgrade to 0.8.4.5.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 16, 2005 1:29 am 
Beginner
Beginner

Joined: Mon Nov 15, 2004 8:32 pm
Posts: 36
I filed a c3p0 bug (bug #1164218). Don't know how long will it take them to fix it though.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 16, 2005 3:26 am 
C3P0 Developer
C3P0 Developer

Joined: Tue Jan 06, 2004 8:58 pm
Posts: 145
mxnmatch,

Please post your huge stack trace, including any "caused by" Exception. I'm trying to track this problem down, and I'd like to know whether your problem and jiunjiunma's are identical.

smiles,
Steve (c3p0 guy)


Top
 Profile  
 
 Post subject: huge stack trace
PostPosted: Wed Mar 16, 2005 4:30 am 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
Here's the log messages generated when this occurs. Note that I changed four values in the query to HIDDEN since they contain a password and an email address that I don't want to post publicly.

The last stack trace has "... 35 more" at the end of it. I don't know how to force log4j to show the rest of the log lines. If you know how then I can change that setting and give you a stack trace with all the lines.

Code:
00:01:13.390 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >38> SQL Error: 0, SQLState: null
00:01:13.390 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >38> Batch entry 0 insert into know.useraccount (password, whenCreated, username, usernamelc, email, status, whenDeactivated, suspendedUntil, network, birthday, id) values (HIDDEN, 2005-03-16 00:01:13.171000-0800, snazzyman2, snazzyman2, HIDDEN, 3, NULL, NULL, 42, 1970-01-09, 1000037) was aborted.  Call getNextException to see the cause.
00:01:13.390 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >38> SQL Error: 0, SQLState: 23505
00:01:13.390 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >38> ERROR: duplicate key violates unique constraint "useraccount_email_key"
00:01:13.390 ERROR! [P1-0] org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:277) >33> Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:63)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:161)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:669)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:293)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
   at com.knowlist.list.hh.base._BaseRootDAO.commitTransaction(_BaseRootDAO.java:230)
   at com.knowlist.list.hh.base._BaseRootDAO.save(_BaseRootDAO.java:659)
   at com.knowlist.list.hh.base.BaseUserAccountDAO.save(BaseUserAccountDAO.java:82)
   at com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:229)
   at com.knowlist.list.user.account.login.RegistrationForm.createAndSaveNewUserIfPossible(RegistrationForm.java:217)
   at com.knowlist.list.user.account.login.RegistrationForm.validate(RegistrationForm.java:96)
   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:822)
   at com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:54)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:813)
   at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:494)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:569)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:624)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1434)
   at org.mortbay.http.HttpServer.service(HttpServer.java:896)
   at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
   at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
   at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
   at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
   at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:366)
   at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into know.useraccount (password, whenCreated, username, usernamelc, email, status, whenDeactivated, suspendedUntil, network, birthday, id) values (HIDDEN, 2005-03-16 00:01:13.171000-0800, snazzyman2, snazzyman2, HIDDEN, 3, NULL, NULL, 42, 1970-01-09, 1000037) was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2387)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2446)
   at com.mchange.v2.sql.filter.FilterPreparedStatement.executeBatch(FilterPreparedStatement.java:260)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:154)
   ... 35 more


Top
 Profile  
 
 Post subject: which stack trace
PostPosted: Wed Mar 16, 2005 4:33 am 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
It occurs to me that I don't know which problem you were referring to. The stack trace I just posted was the one that I get in 0.8.4.5.


Top
 Profile  
 
 Post subject: Other big stack trace
PostPosted: Wed Mar 16, 2005 4:44 am 
Beginner
Beginner

Joined: Fri Dec 17, 2004 8:30 pm
Posts: 20
Since I don't know which one you wanted, here's the stack trace that I get when I switch back to c3p0 0.8.5.1.

Again, I've replaced some values with HIDDEN to prevent my inbox from filling with spam. :)

This is the full set of logging output that's generated when my code attempts to insert a row that violates a unique constraint. I then attempt to execute a normal query (to determine which unique constraint was violated by checking to see which of the values already exists in the table) and it throws the exception that seems to be caused by having the connection closed or a null pointer exception or both.


Code:
com.mchange.v2.c3p0.impl.NewPooledConnection@21a1e invalidated by Exception: java.sql.BatchUpdateException: Batch entry 0 insert into know.useraccount (password, whenCreated, username, usernamelc, email, status, whenDeactivated, suspendedUntil, network, birthday, id) values (HIDDEN, 2005-03-16 00:16:50.843000-0800, snazzyman, snazzyman, HIDDEN, 3, NULL, NULL, 42, 1970-01-09, 1000038) was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2387)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2446)
   at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1592)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:154)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:669)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:293)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
   at com.knowlist.list.hh.base._BaseRootDAO.commitTransaction(_BaseRootDAO.java:230)
   at com.knowlist.list.hh.base._BaseRootDAO.save(_BaseRootDAO.java:659)
   at com.knowlist.list.hh.base.BaseUserAccountDAO.save(BaseUserAccountDAO.java:82)
   at com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:229)
   at com.knowlist.list.user.account.login.RegistrationForm.createAndSaveNewUserIfPossible(RegistrationForm.java:217)
   at com.knowlist.list.user.account.login.RegistrationForm.validate(RegistrationForm.java:96)
   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:822)
   at com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:54)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:813)
   at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:494)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:569)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:624)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1434)
   at org.mortbay.http.HttpServer.service(HttpServer.java:896)
   at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
   at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
   at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
   at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
   at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:366)
   at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
CONNECTION ERROR OCCURRED!

00:16:51.015 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >38> SQL Error: 0, SQLState: null
00:16:51.015 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >38> Batch entry 0 insert into know.useraccount (password, whenCreated, username, usernamelc, email, status, whenDeactivated, suspendedUntil, network, birthday, id) values (HIDDEN, 2005-03-16 00:16:50.843000-0800, snazzyman, snazzyman, HIDDEN, 3, NULL, NULL, 42, 1970-01-09, 1000038) was aborted.  Call getNextException to see the cause.
00:16:51.015 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >38> SQL Error: 0, SQLState: 23505
00:16:51.031 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >38> ERROR: duplicate key violates unique constraint "useraccount_email_key"
00:16:51.031 ERROR! [P1-0] org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:277) >33> Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:63)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:161)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:226)
   at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
   at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
   at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
   at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:669)
   at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:293)
   at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
   at com.knowlist.list.hh.base._BaseRootDAO.commitTransaction(_BaseRootDAO.java:230)
   at com.knowlist.list.hh.base._BaseRootDAO.save(_BaseRootDAO.java:659)
   at com.knowlist.list.hh.base.BaseUserAccountDAO.save(BaseUserAccountDAO.java:82)
   at com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:229)
   at com.knowlist.list.user.account.login.RegistrationForm.createAndSaveNewUserIfPossible(RegistrationForm.java:217)
   at com.knowlist.list.user.account.login.RegistrationForm.validate(RegistrationForm.java:96)
   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:822)
   at com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:54)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:813)
   at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:494)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:569)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:624)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1434)
   at org.mortbay.http.HttpServer.service(HttpServer.java:896)
   at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
   at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
   at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
   at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
   at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:366)
   at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into know.useraccount (password, whenCreated, username, usernamelc, email, status, whenDeactivated, suspendedUntil, network, birthday, id) values (HIDDEN, 2005-03-16 00:16:50.843000-0800, snazzyman, snazzyman, HIDDEN, 3, NULL, NULL, 42, 1970-01-09, 1000038) was aborted.  Call getNextException to see the cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2387)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1257)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:334)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2446)
   at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1592)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:57)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:154)
   ... 35 more

INFO [2005-03-16 00:16:51,062] com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:232)(UserAccountDAO.java232): org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update
00:16:51.109 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >42> SQL Error: 0, SQLState: null
00:16:51.109 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >42> You can't operate on a closed connection!!!
00:16:51.109 WARN!! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:57) >36> SQL Error: 0, SQLState: null
00:16:51.109 ERROR! [P1-0] org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:58) >36> You can't operate on a closed connection!!!
ERROR[2005-03-16 00:16:51,125] com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:60)(HibernateSessionFilter.java60):
org.hibernate.exception.GenericJDBCException: could not execute query
   at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.loader.Loader.doList(Loader.java:1502)
   at org.hibernate.loader.Loader.list(Loader.java:1482)
   at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:365)
   at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:268)
   at org.hibernate.impl.SessionImpl.list(SessionImpl.java:782)
   at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
   at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:569)
   at com.knowlist.list.hh.dao.UserAccountDAO.findByUsername(UserAccountDAO.java:59)
   at com.knowlist.list.hh.dao.UserAccountDAO.getIsUsernameTakenAndDetermineAlt(UserAccountDAO.java:167)
   at com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:236)
   at com.knowlist.list.user.account.login.RegistrationForm.createAndSaveNewUserIfPossible(RegistrationForm.java:217)
   at com.knowlist.list.user.account.login.RegistrationForm.validate(RegistrationForm.java:96)
   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:822)
   at com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:54)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:813)
   at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:494)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:569)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:624)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1434)
   at org.mortbay.http.HttpServer.service(HttpServer.java:896)
   at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
   at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
   at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
   at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
   at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:366)
   at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: java.sql.SQLException: You can't operate on a closed connection!!!
   at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:68)
   at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:198)
   at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:351)
   at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:302)
   at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:85)
   at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1090)
   at org.hibernate.loader.Loader.doQuery(Loader.java:362)
   at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:203)
   at org.hibernate.loader.Loader.doList(Loader.java:1499)
   ... 33 more
Caused by: java.lang.NullPointerException
   at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:173)
   ... 40 more
00:16:51.140 WARN!! [P1-0] org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:590) >11> /know/list/user/account/login/RegistrationSubmit.do:
org.hibernate.exception.GenericJDBCException: could not execute query
   at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:82)
   at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:70)
   at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
   at org.hibernate.loader.Loader.doList(Loader.java:1502)
   at org.hibernate.loader.Loader.list(Loader.java:1482)
   at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:365)
   at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:268)
   at org.hibernate.impl.SessionImpl.list(SessionImpl.java:782)
   at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
   at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:569)
   at com.knowlist.list.hh.dao.UserAccountDAO.findByUsername(UserAccountDAO.java:59)
   at com.knowlist.list.hh.dao.UserAccountDAO.getIsUsernameTakenAndDetermineAlt(UserAccountDAO.java:167)
   at com.knowlist.list.hh.dao.UserAccountDAO.createAndSaveNewUserIfPossible(UserAccountDAO.java:236)
   at com.knowlist.list.user.account.login.RegistrationForm.createAndSaveNewUserIfPossible(RegistrationForm.java:217)
   at com.knowlist.list.user.account.login.RegistrationForm.validate(RegistrationForm.java:96)
   at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:919)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1192)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:430)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:615)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
   at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:822)
   at com.knowlist.hibernate.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:54)
   at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:813)
   at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:494)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:569)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
   at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:624)
   at org.mortbay.http.HttpContext.handle(HttpContext.java:1434)
   at org.mortbay.http.HttpServer.service(HttpServer.java:896)
   at org.mortbay.http.HttpConnection.service(HttpConnection.java:814)
   at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981)
   at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831)
   at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
   at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:366)
   at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: java.sql.SQLException: You can't operate on a closed connection!!!
   at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:68)
   at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:198)
   at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:351)
   at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:302)
   at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:85)
   at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1090)
   at org.hibernate.loader.Loader.doQuery(Loader.java:362)
   at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:203)
   at org.hibernate.loader.Loader.doList(Loader.java:1499)
   ... 33 more
Caused by: java.lang.NullPointerException
   at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:173)
   ... 40 more


Top
 Profile  
 
 Post subject:
PostPosted: Wed Mar 16, 2005 9:48 am 
C3P0 Developer
C3P0 Developer

Joined: Tue Jan 06, 2004 8:58 pm
Posts: 145
mxnmatch -- thanks a lot for the extra info. it's interesting.

jiunjiunma & mxnmatch -- if you're willing to help, i'm going to want to send you versions of c3p0 that try to collect more information about these problems. please write me (swaldman@mchange.com -- mmmm I love spam) and i'll send you test versions to try to track these issues down.

also -- you guys don't have to downgrade to 0.8.4.5 to get the old behavior. set...

c3p0.usesTraditionalReflectiveProxies=true

...in a c3p0.properties file at the top of your app's classpath, and you will probably get the 0.8.4.5 behavior in the newer (0.8.5.1, 0.9.0-pre2) libraries. This should only be a temporary workaround -- the newer, nonreflective codebase is better and faster -- but rather than switching out jars to test this problem (and possibly running into old bugs), you can just switch the setting of this parameter.

But I'd rather just figure out and fix the problems.

thanks!
Steve (c3p0 guy)


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 19 posts ]  Go to page 1, 2  Next

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.