2014-10-02 1 views
3

Oracle XE 데이터베이스를 설정하여 응용 프로그램에서 일부 테스트를 수행했습니다. 이 응용 프로그램은 JDBC를 사용하여 데이터베이스에 대해 작업합니다. 특히 Liquibase를 사용하여 스키마를 추가/업데이트하고 있습니다.Oracle XE를 사용하여 JDBC 연결을 유지할 수 없습니다.

내 JDBC 연결 URL은 : JDBC : 신탁 : 얇은 : @ // localhost를 : 1521/XE

그것이 오류 초과되기 전에 두 개의 테이블을 작성 관리 나는 그것을 데이터베이스에 도달 것을 확인할 수 있습니다

liquibase.exception.LockException: liquibase.exception.UnexpectedLiquibaseException: java.sql.SQLRecoverableException: Closed Connection 
     at liquibase.lockservice.LockService.releaseLock(LockService.java:152) 
     at liquibase.Liquibase.update(Liquibase.java:117) 
     at com.company.liquibase.LiquibaseAdapter.update(LiquibaseAdapter.java:53) 
     at com.company.startup.LiquibaseInitializingBean.afterPropertiesSet(LiquibaseInitializingBean.java:42) 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFac 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactor 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory. 
     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.ja 
     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java 
     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.jav 
     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472) 
     at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:388) 
     at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293) 
     at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
     at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
     at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
     at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632) 
     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1073) 
     at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
     at java.util.concurrent.FutureTask.run(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
     at java.lang.Thread.run(Unknown Source) 
Caused by: liquibase.exception.UnexpectedLiquibaseException: java.sql.SQLRecoverableException: Closed Connection 
     at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.hasTable(JdbcDatabaseSnapshotGenerator.java:63) 
     at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.hasDatabaseChangeLogLockTable(JdbcDatabaseSnapshotGenerator.java:49) 
     at liquibase.database.AbstractDatabase.hasDatabaseChangeLogLockTable(AbstractDatabase.java:549) 
     at liquibase.lockservice.LockService.releaseLock(LockService.java:135) 
     ... 30 more 
Caused by: java.sql.SQLRecoverableException: Closed Connection 
     at oracle.jdbc.driver.PhysicalConnection.getMetaData(PhysicalConnection.java:5216) 
     at org.apache.commons.dbcp.DelegatingConnection.getMetaData(DelegatingConnection.java:345) 
     at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.getMetaData(PoolingDataSource.java:245) 
     at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.getMetaData(JdbcDatabaseSnapshotGenerator.java:258) 
     at liquibase.snapshot.jvm.JdbcDatabaseSnapshotGenerator.hasTable(JdbcDatabaseSnapshotGenerator.java:54) 
     ... 33 more 

이것은 회사 오라클 데이터베이스와 완벽하게 작동하며, XE와 함께 작동하지 않습니다. XE에서 설정하지 않은 설정이 있어야한다고 생각하지만 실제로 무엇이 될지 잘 모르겠습니다. 그것은 연결이 닫히지 않아야하는 것처럼 보입니다.

여러 ojdbc 드라이버를 사용해 보았습니다. SQL Developer에 연결 설정을 지정하고 데이터베이스에 쉽게 액세스 할 수 있습니다. 또한 "SELECT 1 FROM DUAL"이라는 유효성 검사 쿼리를 사용합니다.

내가 제공 할 수있는 정보가 더있는 경우 알려주십시오.

+0

몇 가지 와일드 한 아이디어 : 동일한 DB에 다중 연결을 열어 보시겠습니까? 다른 스레드에서 _same_ 연결을 사용합니까 _? –

+0

@SylvainLeroux 필자는 그것이 실패한 시점에서 단일 연결 만 열어 놓고 있다고 생각하지만 각 테이블을 만들 때 열거 나 닫을 수 있다고 생각합니다. 아마도 연결이 풀로 전달되고 닫히지 만 제대로 퇴거되지 않은 것 같지만 유효성 검사 쿼리가이를 방지해야합니다. – AHungerArtist

답변

2

Oracle XE는 파티셔닝을 허용하지 않는 문제점이있었습니다. 불행하게도, 내가 겪고 있던 오류와 스택 추적은 전혀 도움이되지 못하여 왜 실패했는지 분명하지 않았습니다.

관련 문제