Hello,
i am using h2 with spring & struts 2. It works fine together, but one
problem occurs when i am closing tomcat.
It appears like tomcat is trying to close one of already closed
connections and got NullpointerException. I think the exception
results from wrong configuration of connectionpool or db.
Any idea?
My spring-configuration is:
<bean id="org.h2.tools.Server" class="org.h2.tools.Server"
scope="singleton" factory-method="createTcpServer" init-method="start"
destroy-method="stop">
<constructor-arg value="-tcp,-tcpAllowOthers,-web,-
webAllowOthers"/>
</bean>
<bean id="h2databasePoolingDataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-
method="close">
<property name="driverClass" value="org.h2.Driver"/>
<property name="jdbcUrl" value="jdbc:h2:./
xscache;DB_CLOSE_DELAY=0;TRACE_LEVEL_FILE=4"/>
<property name="user" value="sa"/>
<property name="password" value=""/>
<property name="maxPoolSize" value="5"/>
<property name="minPoolSize" value="2"/>
<property name="acquireIncrement" value="2"/>
<property name="maxConnectionAge" value="0"/>
<property name="preferredTestQuery" value="SELECT 1"/>
</bean>
The StackTrace was:
Preparing to destroy PooledConnection:
com.mchange.v2.c3p0.impl.NewPooledConnection@d7419b
DEBUG [Resource Destroyer in BasicResourcePool.close()]
(TraceWriterAdapter.java:56) - xscache:jdbc[6]
/**/conn14.close();
INFO [Resource Destroyer in BasicResourcePool.close()]
(TraceWriterAdapter.java:59) - xscache:jdbc[6]
/*SQL */ROLLBACK;
08.07.2009 11:51:45 org.apache.coyote.http11.Http11Protocol destroy
INFO: Stopping Coyote HTTP/1.1 on http-8080
Exception in thread "Resource Destroyer in BasicResourcePool.close()"
java.lang.NullPointerException
at com.mchange.v2.log.log4j.Log4jMLog$Log4jMLogger.isLoggable
(Log4jMLog.java:257)
at com.mchange.v2.resourcepool.BasicResourcePool$5.run
(BasicResourcePool.java:1181)
Exception in thread "Thread-22" java.lang.NullPointerException
at org.apache.log4j.helpers.PatternConverter.spacePad
(PatternConverter.java:106)
at org.apache.log4j.helpers.PatternConverter.format
(PatternConverter.java:82)
at org.apache.log4j.PatternLayout.format(PatternLayout.java:503)
at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:
301)
at org.apache.log4j.WriterAppender.append(WriterAppender.java:
159)
at org.apache.log4j.AppenderSkeleton.doAppend
(AppenderSkeleton.java:230)
at
org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders
(AppenderAttachableImpl.java:65)
at org.apache.log4j.Category.callAppenders(Category.java:203)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.log(Category.java:853)
at
org.slf4j.impl.Log4jLoggerAdapter.info
(Log4jLoggerAdapter.java:377)
at org.h2.message.TraceWriterAdapter.write
(TraceWriterAdapter.java:59)
at
org.h2.message.Trace.info(Trace.java:178)
at org.h2.engine.Database.close(Database.java:1099)
at org.h2.engine.DatabaseCloser.run(DatabaseCloser.java:80)
Regards,
Bob