0

私はしばらくこの問題に直面しています。私の設定は次のとおりです

<!-- Load Properties Files -->
<context:property-placeholder location="classpath:*-${environment}.properties" ignore-unresolvable="true"/>

<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="idleConnectionTestPeriodInMinutes" value="${boneCP.idleConnectionTestPeriodInMinutes}"/>
        <property name="idleMaxAgeInMinutes" value="${boneCP.idleMaxAgeInMinutes}"/>
        <property name="maxConnectionsPerPartition" value="${boneCP.maxConnectionsPerPartition}"/>
        <property name="minConnectionsPerPartition" value="${boneCP.minConnectionsPerPartition}"/>
        <property name="partitionCount" value="${boneCP.partitionCount}"/>
        <property name="acquireIncrement" value="${boneCP.acquireIncrement}"/>
        <property name="statementsCacheSize" value="${boneCP.statementsCacheSize}"/>
        <property name="lazyInit" value="true"/>
        <property name="maxConnectionAgeInSeconds" value="${boneCP.maxConnectionAgeInSeconds}"/>
</bean>

プロジェクトはTomcat 7で実行されています

ローカル マシンでは、プロジェクトは開発サーバーと同様にエラーなしでデプロイされます。残念ながら、プロジェクトを開発サーバーに展開することはできません (サーバー構成は同じままです) が、ローカル マシンは問題ありません。プロジェクトを開発サーバーにデプロイするたびに、Tomcat は INFO: Deploying web application archive /etc/tomcat/webapps/project.war でハングします。しかし、実際の値で BoneCP を構成すると、すべて問題ありません。

何が問題なのか誰か教えてもらえますか?


それは lazyInit の問題であることが判明しました。コメントアウトすると、サーバーは正常に起動できます。しかし今、私は新しい問題に直面しています。ローカル マシンが 100% 正常である間、Mybatis はデータベースにまったくアクセスできません。それでも例外をスローしないでください。しかし、サーバーを停止すると、次の例外が見つかりました

INFO: Illegal access: this web application instance has been stopped already.  Could not load com.jolbox.bonecp.PoolUtil.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at com.jolbox.bonecp.DefaultConnectionStrategy.getConnectionInternal(DefaultConnectionStrategy.java:94)
    at com.jolbox.bonecp.AbstractConnectionStrategy.getConnection(AbstractConnectionStrategy.java:90)
    at com.jolbox.bonecp.BoneCP.getConnection(BoneCP.java:540)
    at com.jolbox.bonecp.BoneCPDataSource.getConnection(BoneCPDataSource.java:131)
    at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111)
    at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:77)
    at org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)
    at org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:66)

INFO: Illegal access: this web application instance has been stopped already.  Could not load org.apache.ibatis.reflection.ExceptionUtil.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:363)
    at sun.proxy.$Proxy15.selectList(Unknown Source)
    at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:195)
    at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:124)
    at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:90)
    at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)
    at sun.proxy.$Proxy45.selectByExample(Unknown Source)
4

1 に答える 1

0

まあ、それは多くのことかもしれませんが、最も可能性が高いのは

  1. プロパティは、あなたが考える値に置き換えられていません
  2. データベースの接続数を超えたか、ホストが間違っています
  3. 1 + 2 の組み合わせ

#1 では、依存関係として com.jolbox.bonecp.BoneCPDataSource を必要とする別の Bean を作成し、BoneCPDataSource のゲッターを出力させます。

#2では、可能な限り多くのログを有効にします(log4jまたはlogback、またはログフレームワークが何であれを参照してください)。

于 2013-02-07T19:52:54.123 に答える