2010-11-26 3 views
1

개발 모드에서 웹 응용 프로그램을 실행하려면 maven-jetty-plugin을 사용하고 있습니다. 또한, 나는 jetty-env.xml에서 C3P0의 JNDI 데이터 소스를 구성이 잘 작동하지만웹 응용 프로그램 컨텍스트가 닫힐 때의 폐차 데이터 소스 닫기

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 
    <Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext"> 
    <New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource"> 
     <Arg> 
      <Ref id="wac" /> 
     </Arg> 
     <Arg>jdbc/MyVeryOwnDB</Arg> 
     <Arg> 
      <New class="com.mchange.v2.c3p0.ComboPooledDataSource"> 
       <Set name="driverClass">oracle.jdbc.driver.OracleDriver</Set> 
       <Set name="jdbcUrl">jdbc:oracle:thin:@X:Y:Z</Set> 
       <Set name="user">U</Set> 
       <Set name="password">P</Set>   
      </New> 
     </Arg> 
    </New> 
</Configure> 

, 나는 연결 풀은 웹 애플리케이션 재배포를 종료하지 않은 것으로 나타났습니다 - C3P0 스레드 내가 얻을 것을 의미합니다, 아직 살아있다 PermGen 및 JDBC 연결 누출.

jetty-env.xml에서 정의 된 자원을 삭제하는 것에 대한 참조가 발견되지 않았으며, 제작 설정이 다르기 때문에 개발 전용 후크를 넣는 것도 부끄러워합니다.

개발 시간에 응용 프로그램을 재배포 할 때 연결 풀이 닫히지 않아 누수가 발생하지 않도록하려면 어떻게해야합니까?

답변

0

대답은 jetty-env.xmlconfigure an additional jettyConfig parameter에서 maven-jetty-plugin을 사용하여 참조를 제거하는 것입니다.

<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" 
<Configure id="Server" class="org.mortbay.jetty.Server"> 
    <New id="dataSource" class="org.mortbay.jetty.plus.naming.Resource"> 
     <Arg></Arg> <!-- Global scope --> 
     <!-- Other values elided for brevity --> 
    </New> 
</Configure> 
관련 문제