2016-05-10 19 views
0

私は、ダービーDbを埋め込んだ春の休止状態のアプリケーションを実行し、自動再デプロイメントを使用してそれをjetty上で実行しています。今すぐ自動再デプロイを行う上で、私は、DB接続エラーが発生します:Spring、埋め込みDerby-Jetty自動再デプロイDB接続問題を持つHibernate

[INFO] restarting [email protected]{/,file:/D:/aa/branches/dev/saas/src/main/webapp/,AVAILABLE}{file:/D:/aa/branches/dev/saas/src/main/webapp/} 
2016-05-10 11:57:40.932:INFO:/:Scanner-0: Destroying Spring FrameworkServlet 'mvc-dispatcher' 
2016-05-10 11:57:40 INFO XmlWebApplicationContext:862 - Closing WebApplicationContext for namespace 'mvc-dispatcher-servlet': startup date [Tue May 10 11:57:25 IST 2016]; root of context hierarchy 
2016-05-10 11:57:40.967:INFO:oejsh.ContextHandler:Scanner-0: Stopped [email protected]{/,file:/D:/aa/branches/dev/saas/src/main/webapp/,UNAVAILABLE}{file:/D:/aa/branches/dev/saas/src/main/webapp/} 
[INFO] Webapp source directory = D:\aa\branches\dev\saas\src\main\webapp 
[INFO] Reload Mechanic: automatic 
[INFO] Classes = D:\aa\branches\dev\saas\target\classes 
[INFO] Context path =/
[INFO] Tmp directory = D:\aa\branches\dev\saas\target\tmp 
[INFO] Web defaults = org/eclipse/jetty/webapp/webdefault.xml 
[INFO] Web overrides = none 
[INFO] web.xml file = file:/D:/aa/branches/dev/saas/src/main/webapp/WEB-INF/web.xml 
[INFO] Webapp directory = D:\aa\branches\dev\saas\src\main\webapp 
2016-05-10 11:57:42.191:INFO:saas:Scanner-0: No Spring WebApplicationInitializer types detected on classpath 
2016-05-10 11:57:42.322:INFO:saas:Scanner-0: Initializing Spring FrameworkServlet 'mvc-dispatcher' 
2016-05-10 11:57:42 INFO DispatcherServlet:484 - FrameworkServlet 'mvc-dispatcher': initialization started 
2016-05-10 11:57:42 INFO XmlWebApplicationContext:510 - Refreshing WebApplicationContext for namespace 'mvc-dispatcher-servlet': startup date [Tue May 10 11:57:42 IST 2016]; root of context hierarchy 
2016-05-10 11:57:42 INFO XmlBeanDefinitionReader:317 - Loading XML bean definitions from ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml] 
2016-05-10 11:57:42 INFO PropertySourcesPlaceholderConfigurer:172 - Loading properties file from class path resource [application.properties] 
2016-05-10 11:57:42 INFO AutowiredAnnotationBeanPostProcessor:153 - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 
2016-05-10 11:57:42 INFO MLog:92 - MLog clients using log4j logging. 
2016-05-10 11:57:42 INFO C3P0Registry:216 - Initializing c3p0-0.9.2.1 [built 20-March-2013 10:47:27 +0000; debug? true; trace: 10] 
2016-05-10 11:57:42 INFO Version:66 - HCANN000001: Hibernate Commons Annotations {4.0.5.Final} 
2016-05-10 11:57:42 INFO Version:54 - HHH000412: Hibernate Core {4.3.8.Final} 
2016-05-10 11:57:42 INFO Environment:239 - HHH000206: hibernate.properties not found 
2016-05-10 11:57:42 INFO Environment:346 - HHH000021: Bytecode provider name : javassist 
2016-05-10 11:57:42 INFO AbstractPoolBackedDataSource:522 - Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge0ws9g16jrn8m15ijs29|2a8c236e, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.apache.derby.jdbc.EmbeddedDriver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge0ws9g16jrn8m15ijs29|2a8c236e, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:derby:aaSaas;create=true, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 15, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 3, numHelperThreads -> 3, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ] 
2016-05-10 11:58:13 WARN BasicResourcePool:1851 - com[email protected]53b953ec -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: Failed to start database 'aaSaas' with class loader [email protected], see the next exception for details. 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 
    at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source) 
    at org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown Source) 
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) 
    at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source) 
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44) 
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810) 
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648) 
Caused by: ERROR XJ040: Failed to start database 'aaSaas' with class loader [email protected], see the next exception for details. 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source) 
    ... 18 more 
Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database D:\aa\branches\dev\saas\aaSaas. 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown Source) 
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown Source) 
    at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.FileMonitor.startModule(Unknown Source) 
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source) 
    at org.apache.derby.impl.store.raw.RawStore.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.FileMonitor.startModule(Unknown Source) 
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source) 
    at org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.FileMonitor.startModule(Unknown Source) 
    at org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown Source) 
    at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown Source) 
    at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStartService(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown Source) 
    at org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown Source) 
    ... 15 more 
2016-05-10 11:58:13 WARN BasicResourcePool:1851 - com[email protected]443e7c3e -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (30). Last acquisition attempt exception: 
java.sql.SQLException: Failed to create database 'aaSaas', see the next exception for details. 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) 
    at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown Source) 
    at org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown Source) 
    at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.getNewEmbedConnection(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) 
    at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source) 
    at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown Source) 
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44) 
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810) 
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:648) 
Caused by: ERROR XJ041: Failed to create database 'aaSaas', see the next exception for details. 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(Unknown Source) 
    ... 18 more 
Caused by: ERROR XBM0J: Directory D:\aa\branches\dev\saas\aaSaas already exists. 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) 
    at org.apache.derby.impl.services.monitor.StorageFactoryService$10.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.apache.derby.impl.services.monitor.StorageFactoryService.createServiceRoot(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown Source) 
    at org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(Unknown Source) 
    at org.apache.derby.impl.services.monitor.FileMonitor.createPersistentService(Unknown Source) 
    at org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Unknown Source) 
    ... 15 more 

今、私の質問は、私はそれが新しいものを作成することができます再配備の接続を閉じるか、または私は同じ接続を使用する方法ですか?

MVC-ディスパッチャ-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd 
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 

    <!-- Specifying base package of the Components like Controller, Service, 
     DAO --> 
    <context:component-scan base-package="com.aa.saas" /> 

    <!-- Getting Database properties --> 
    <context:property-placeholder location="classpath:application.properties" /> 

    <mvc:annotation-driven /> 

    <!-- Specifying the Resource location to load JS, CSS, Images etc --> 
    <mvc:resources mapping="/resources/**" location="/resources/" /> 

    <!-- View Resolver <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> <property name="suffix" 
     value=".jsp" /> </bean> --> 

    <!-- DataSource --> 
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 
     destroy-method="close"> 
     <property name="driverClass" value="${database.driverClass}" /> 
     <property name="jdbcUrl" value="${database.url}" /> 
     <property name="user" value="${database.username}" /> 
     <property name="password" value="${database.password}" /> 
     <!-- <property name="acquireIncrement" value="${connection.acquireIncrement}" 
      /> <property name="minPoolSize" value="${connection.minPoolSize}" /> <property 
      name="maxPoolSize" value="${connection.maxPoolSize}" /> <property name="maxIdleTime" 
      value="${connection.maxIdleTime}" /> --> 
    </bean> 

    <!-- Hibernate SessionFactory --> 
    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="dataSource"></property> 
     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
       <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      </props> 
     </property> 
     <property name="packagesToScan" value="com.aa.saas"></property> 
    </bean> 

    <!-- Transaction --> 
    <bean id="transactionManager" 
     class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
     <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 

    <tx:annotation-driven transaction-manager="transactionManager" /> 

    <bean id="aaSaasUserDAO" class="com.aa.saas.aaSaasUserDAOImpl"></bean> 

</beans> 

のweb.xml

<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    id="WebApp_ID"> 
    <display-name>saas</display-name> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
     <welcome-file>index.htm</welcome-file> 
     <welcome-file>index.jsp</welcome-file> 
     <welcome-file>default.html</welcome-file> 
     <welcome-file>default.htm</welcome-file> 
     <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 

application.properties

#Database related properties 
database.driverClass=org.apache.derby.jdbc.EmbeddedDriver 
database.url=jdbc:derby:aaSaas;create=true 
database.username=aa 
database.password=aa 

#Hibernate related properties 
hibernate.dialect=org.hibernate.dialect.DerbyDialect 
hibernate.hbm2ddl.auto=update 
hibernate.show_sql=true 
hibernate.format_sql=true 

#Connection pool related properties 
#connection.acquireIncrement=2 
#connection.minPoolSize=20 
#connection.maxPoolSize=50 
#connection.maxIdleTime=600 
+0

あなたの問題については、以下の記事を見てください。http://stackoverflow.com/questions/24491328/stopping-tomcat-doesnt-delete-derby-db-lck – shankarsh15

+0

@ shankarsh15これは彼らの言うことです:最初の問題:組み込みデータベースとしてDerbyを使用する場合、データベースは最初の接続時に起動されますが、明示的にシャットダウンする必要があります。そうでない場合は、db.lockファイルは削除されず、アプリケーションを再起動すると問題が発生する可能性があります。 Tomcatや(デフォルトでは)春にはこのようなデータベースを自動的にシャットダウンするものはありません...しかし、その解決策は何ですか? – Harinder

答えて

0

Harのinder、

私はあなたがいくつかのコードを編集する必要があると思います。

読むエラーメッセージ..

  1. ディレクトリD:\単三\枝\ devがaaSaas \ SaaSはすでに存在します\。ダービーフォルダ(aaSaas)私はJPAとダービーを使用

     <props> 
          <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop> 
          <prop key="hibernate.default_schema">test</prop> 
          <prop key="hibernate.connection.pool_size">4</prop> 
          <prop key="hibernate.connection.shutdown">true</prop> 
          <prop key="hibernate.show_sql">true</prop> 
          <prop key="hibernate.hbm2ddl.auto">create</prop><!--delete all entity after create entity --> 
         </props> 
    

    ええと...

    のdataSource

    <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource"> 
        <property name="driverClass" value="org.apache.derby.jdbc.ClientDriver"></property> 
        <property name="username" value="user"></property> <property name="password" 
        value="1234"></property> <property name="url" value="jdbc:derby://localhost:1527/aaSaas;create=true"></property> 
        </bean> 
    

  2. 変更スキーマ<prop key="hibernate.default_schema">aaSaas</prop>

delateフォルダ。 その他の場合。

ええと...幸運

+0

私は質問を更新し、私が使用しているプロパティを追加しました。作成するhbm2ddlを変更しようとしましたが、動作しませんでした – Harinder

+0

あなたが読んで - > http://stackoverflow.com/questions/4999106/fail-to-create-embedded-derby-java – Byeon0gam

関連する問題