[Seasar-user:11104] Tomcatを停止しても、コネクションが開放されないケースがある?
Taro Unno
[E-MAIL ADDRESS DELETED]
2007年 10月 18日 (木) 15:21:03 JST
海野と申します。
いつもお世話になっております。
次の環境で作成して運用しているアプリケーションで問題が起きておりまして、
何かアドバイスいただけたらと思い、メールしました。
Tomcat5.5.23
Oracle10g Release 10.2.0.1.0
Seasar2.4.16
teeda1.0.8
s2-dao1.0.45
DBFlute-0.5.4
まず、アプリケーションにコネクションの開放漏れがあるらしく(調査中です)、
コネクションが取得できない状態になってしまいました。
(これは、こちらの作りの問題です。恥ずかしい。。。)
で、Tomcatを停止/起動したのですが、起動時にコネクションが取得できない状態
が続いていました。(最後にスタックトレースを添付します。)
・Tomcatを停止したらコネクションも開放されるものと思っていたが、
実はそうではないケースもある。
・Oracleが、Tomcat停止によるコネクション開放を感知できなかった。
なんてことを考えてみましたが、イマイチ頭が整理できないでいます。
トランザクション制御はS2JTAのUserTransactionクラスと
RequiredTxアノテーション、コネクションプールはS2DBCPを使用しています。
現象が起きた際にOracleに詳しい人間がいなかったもので
DBの状態をみて分析することができず、復旧を急いでいた為
結局Oracleを再起動したので原因は想像するしかない状態です。
こんな状況に出くわしたことがある人がいらっしゃいましたら、
また、原因や解決策をご存知の方、見当がつく方、アドバイスいただけませんでしょうか。
SeasarMLの話題としては適切でないかもしれませんが、
宜しくお願いします。
INFO 2007-10-17 18:13:09,866 [main]
initializeDatabaseProductNameOfContext threw the exception: class
org.seasar.framework.exception.SQLRuntimeException
org.seasar.framework.exception.SQLRuntimeException:
[ESSR0072]SQLで例外(SQL=[], Message=[I/O例外です。: Connection reset],
ErrorCode=17002, SQLState=null)が発生しました
at org.seasar.extension.jdbc.util.DataSourceUtil.getConnection(DataSourceUtil.java:50)
at jp.co.aaa.bbb.dbflute.allcommon.s2dao.S2DaoMetaDataFactoryImpl.initializeDatabaseProductNameOfContext(S2DaoMetaDataFactoryImpl.java:66)
at jp.co.aaa.bbb.dbflute.allcommon.s2dao.S2DaoMetaDataFactoryImpl.<init>(S2DaoMetaDataFactoryImpl.java:54)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.seasar.framework.util.ConstructorUtil.newInstance(ConstructorUtil.java:54)
at org.seasar.framework.container.assembler.AutoConstructorAssembler.doAssemble(AutoConstructorAssembler.java:47)
at org.seasar.framework.container.assembler.AbstractConstructorAssembler.assemble(AbstractConstructorAssembler.java:55)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:64)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
at org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
at org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
at org.seasar.framework.container.servlet.SingletonS2ContainerInitializer.initialize(SingletonS2ContainerInitializer.java:55)
at org.seasar.framework.container.servlet.S2ContainerServlet.initializeContainer(S2ContainerServlet.java:139)
at org.seasar.framework.container.servlet.S2ContainerServlet.init(S2ContainerServlet.java:127)
at org.seasar.teeda.core.webapp.TeedaServlet.init(TeedaServlet.java:41)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:966)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3956)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4230)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: java.sql.SQLException: I/O例外です。: Connection reset
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:255)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:387)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:414)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:801)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.seasar.extension.dbcp.impl.XADataSourceImpl.getXAConnection(XADataSourceImpl.java:156)
at org.seasar.extension.dbcp.impl.XADataSourceImpl.getXAConnection(XADataSourceImpl.java:146)
at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.createConnection(ConnectionPoolImpl.java:297)
at org.seasar.extension.dbcp.impl.ConnectionPoolImpl.checkOut(ConnectionPoolImpl.java:259)
at org.seasar.extension.dbcp.impl.DataSourceImpl.getConnection(DataSourceImpl.java:63)
at org.seasar.extension.jdbc.util.DataSourceUtil.getConnection(DataSourceUtil.java:48)
... 47 more
Seasar-user メーリングリストの案内