2014-02-12 3 views
2

내가 잘못 질문을 표현할 수도 있지만 여기에 문제가 있습니다. 나는 util이라는 라이브러리를 가지고 있는데, util 내부에는 데이터베이스 연결을 위해 C3P0을 사용할 데이터베이스 클래스가 있습니다. 이 유틸리티 라이브러리는 팀 내의 다른 개발자가 사용합니다.클래스 경로 외부에서 C3P0-config.xml을 읽도록 jar 파일의 클래스 경로에 C3p0.properties 파일을 구성하는 방법

모듈 식 시스템이 있으므로 모든 사람이 쉽게 사용할 수 있도록 시스템의 각 모듈은 자신의 데이터베이스 연결 및 속성을 해당 모듈에 맞는 것으로 지정할 수 있습니다. 우리가 실행하는 유일한 이유는 실행 쿼리를 호출하는 메소드가 모두이 라이브러리에 정의되어 있기 때문에 모든 사용자가 동일한 코드를 반복해서 다시 쓰는 대신 계속해서 그 기능을 가진 공유 라이브러리를 사용하는 것이 훨씬 효율적이기 때문입니다.

현재 설정은 내 유틸리티 라이브러리 클래스 경로 내에 C3P0.properties 파일이 있고 그 안에 C3P0-config.xml 파일의 경로를 정의한 것입니다.

com.mchange.v2.c3p0.cfg.xml =./conf의/C3P0-config.xml에

그때 구축하고 항아리와 DEVS의 나머지를 제공합니다. 그런 다음 응용 프로그램에 conf 디렉토리를 만들고 c3p0-config.xml을 추가합니다. 디렉토리의 Strucuture이 jar 파일을 실행에이

Parent directory - module name { 

Sub directories 

-lib -> {Util.jar & other jars} 

-conf -> {c3p0-config.xml & other config files} 

-logs 

-modulename.jar 

} 

처럼 보이는 우리는 오류

2014-02-12 20:50:59 INFO MLog:124 - MLog clients using log4j logging. 
2014-02-12 20:50:59 DEBUG MLog:101 - Could not find resource path text file for path '/com/mchange/v2/cfg/vmConfigResourcePaths.txt'. Skipping. 
2014-02-12 20:50:59 DEBUG MLog:101 - Added paths from resource path text file at '/mchange-config-resource-paths.txt' 
2014-02-12 20:50:59 DEBUG MLog:101 - Reading VM config for path list /com/mchange/v2/log/default-mchange-log.properties, /mchange-commons.properties, /c3p0.properties, hocon:/reference,/application,/c3p0,/, /mchange-log.properties,/
2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier '/mchange-commons.properties' could not be found. Skipping. 
java.io.FileNotFoundException: Resource not found at path '/mchange-commons.properties'. 
    at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:185) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110) 
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) 
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115) 
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46) 
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59) 
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59) 
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51) 
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51) 
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260) 
    2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier 'hocon:/reference,/application,/c3p0,/' could not be found. Skipping. 
java.io.FileNotFoundException: HOCON lib (typesafe-config) is not available. Also, no resource available at '/reference,/application,/c3p0,/' for HOCON identifier 'hocon:/reference,/application,/c3p0,/'. 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.configSource(BasicMultiPropertiesConfig.java:86) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:184) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110) 
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) 
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115) 
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46) 
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59) 
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59) 
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51) 
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51) 
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260) 
2014-02-12 20:50:59 DEBUG MLog:101 - The configuration file for resource identifier '/mchange-log.properties' could not be found. Skipping. 
java.io.FileNotFoundException: Resource not found at path '/mchange-log.properties'. 
    at com.mchange.v2.cfg.BasicPropertiesConfigSource.propertiesFromSource(BasicPropertiesConfigSource.java:64) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.firstInit(BasicMultiPropertiesConfig.java:185) 
    at com.mchange.v2.cfg.BasicMultiPropertiesConfig.<init>(BasicMultiPropertiesConfig.java:110) 
    at com.mchange.v2.cfg.ConfigUtils.read(ConfigUtils.java:63) 
    at com.mchange.v2.cfg.ConfigUtils.readVmConfig(ConfigUtils.java:115) 
    at com.mchange.v2.cfg.MLogConfigSource.readVmConfig(MLogConfigSource.java:46) 
    at com.mchange.v2.log.MLogConfig.refresh(MLogConfig.java:59) 
    at com.mchange.v2.log.MLog.refreshConfig(MLog.java:59) 
    at com.mchange.v2.log.MLog.<clinit>(MLog.java:51) 
    at com.mchange.v2.naming.JavaBeanReferenceMaker.<clinit>(JavaBeanReferenceMaker.java:51) 
    at com.mchange.v2.c3p0.impl.PoolBackedDataSourceBase.<clinit>(PoolBackedDataSourceBase.java:260) 

어떤 문제가 될 수를 얻을? 내가 뭘 잘못하고 있니?

답변

3

표시된 로그 메시지와 스택 추적에서 전혀 문제가 없습니다. 모두 DEBUG 레벨 메시지입니다. (c3p0 & com.mchange 라이브러리는 일반적으로 INFO에 로그인해야합니다.) 다른 장소의 많은 잠재적 인 설정 정보를

c3p0 & mchange-commons-java 확인하시기 바랍니다. 그 장소의 많은 곳에서 그들은 아무것도 발견하지 못하고 계속 나아 간다. DEBUG에 로깅하면 CLASSPATH에있는 예를 들어 /mchange-log.properties과 같은 라이브러리 검사 과정을보고있어 찾지 못했습니다. DEBUG에 도서관은 그들이 찾은 것, 찾지 못했던 것, 찾지 못하는 것과 함께 나온 예외를 기록합니다.

이 내용은 전혀 중요하지 않습니다. 보통이다.

주된 질문은 설정 사용자가 c3p0-config.xml에 들어가는 지 여부입니다. 절대 파일 시스템 위치가 아닌 파일에 대한 상대 디렉토리를 사용하고 있습니다. 나는 상대방이 프로세스의 작업 디렉토리에 상대적으로 해석되면서 작동 할 것이라고 추정하지만 작동 여부를 확신 할 수는 없지만 실제로는 그것이 깨지기 쉽고, 사용자가 어떻게 사용되는지 프로세스를 시작 하시겠습니까? 사용자가 적절한 작업 디렉토리를 보장하는 스크립트를 실행합니까?

+0

이상적으로 그것은 상대 디렉토리로 작업해야하지만 이상하지는 않습니다. 그냥이 디버그 로그를 표시하고에 대한 연결 풀을 만들지 않습니다. 질문에 대답하기 위해 작업 디렉토리가 변경되지 않도록 정의 된 스크립트가 있습니다. 사실 위에서 언급 한 구조는 정적이며 변경되지 않습니다. 디자인 팀에 의해 동의되었습니다. – kimathie

+1

내가해야 할 일은 스크립트에서 시스템 속성으로 예상되는 c3p0-config.xml의 절대 경로를 설정하는 것입니다 (예 :'-Dcom.mchange.v2.c3p0 스크립트에서 JVM을 시작할 때 .cfg.xml = $ {APP_HOME}/conf/c3p0-config.xml 파일에 복사하십시오. –