2010-07-05 6 views
2

Tomcat에서 실행중인 웹 응용 프로그램 내에서 Spring JdbcTemplate과 함께 Apache Derby를 사용하고 있습니다.Derby에서 스프링 연결 해제

스프링이 데이터 소스를 관리하고 있습니다. 나는이 .WAR 파일과 톰캣 배포 취소를 업데이트하면/나는이 오류를 응용 얻을 재배포 것으로 나타났습니다 :

java.sql.SQLException: Another instance of Derby may have already booted the database /tmp/manager_db/manager. 

는 Tomcat이 문제를 해결 다시 시작,하지만 순수 주의자로, 나는 물건을 청소하고 싶습니다 웹 응용 프로그램을 배포 취소 할 때 올바르게 작동합니다.

임베디드 드라이버에 'destroy-method'아래의 bean 선언을 넣는 'close'메소드가없는 것 같습니다. 나는 정상적으로 '종료'연결 URL "jdbc : derby :; shutdown = true"를 사용하여 종료가 이루어진다는 것을 알고 있습니다.

제안 사항?

내 데이터 소스에 대한 Spring 구성 파일의 선언은 다음과 같습니다 (db는/tmp/아래에 있지 않습니다.

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.apache.derby.jdbc.EmbeddedDriver"/> 
    <property name="url" value="jdbc:derby:/tmp/manager_db/manager;create=true"/> 
    <property name="username" value=""/> 
    <property name="password" value=""/> 
</bean> 
+0

너는 이것을 알아 냈는가, 나는 부두의 밑에 동일한 문제를 얻고있다. –

+0

Tomcat이 연결 풀링을 수행하도록 변경했습니다. –

답변

1

더 좋은 대답은 봄과 함께 Tomcat JNDI data source pool을 사용하는 것입니다. Spring의 JDBC 템플릿은 완료되면 연결을 풀로 반환합니다.

관련 문제