2012-01-30 3 views
0

tomcat 서버에 spring mvc webapp를 배포하려고합니다. 나는 maven-jetty-plugin을 사용하여 로컬에서 테스트를 해왔다. 그러나 나는 내가받을 Tomcat 서버에 WAR 파일을 배포 할 때 ... 이것은 내 부두 플러그인과 협력Tomcat 서버가있는 외부 속성 로더

<context:property-placeholder ignore-resource-not-found="true" ignore-unresolvable="true"/> 
<bean id="modelPropertyPlaceholder" class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"> 
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> 
    <property name="searchContextAttributes" value="true"/> 
    <property name="contextOverride" value="true"/> 
    <property name="ignoreResourceNotFound" value="true"/> 
    <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    <property name="locations"> 
     <list> 
      <value>classpath:default.model.properties</value> 
      <value>file:/etc/app/app.properties</value> 
      <value>${config}</value> 
     </list> 
    </property> 
</bean> 

: 내 스프링 구성에서 나는 속성 자리 표시 자 사용하고, 외부 파일에서 내 특성을 당겨 다음 오류 :

org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null' 

내 외부 속성 파일에 드라이버 클래스와 연결 URL이 정의되어 있습니다.

jndi.jpa.rms.datasource=jdbc/testDS 
rms.db.driver=com.mysql.jdbc.Driver 
rms.db.url=jdbc:mysql://testdatabaseurl:3306/test 
rms.db.user=sa 
rms.db.password=asfdas 
rms.db.checkconnsql=select 1 
rms.hibernate.generateddl=false 
rms.hibernate.showsql=true 
rms.hibernate.dbdialect=org.hibernate.dialect.MySQLDialect 

업데이트 : 너무로

그것은 그 바람둥이가 픽업을 수행 보인다 외부 특성 파일 :

14:23:09.803 [main] DEBUG o.s.b.f.s.DefaultListableBeanFactory - Finished creating instance of bean 'modelPropertyPlaceholder' 
14:23:09.810 [main] INFO o.s.w.c.s.ServletContextPropertyPlaceholderConfigurer - Loading properties file from class path resource [default.model.properties] 
14:23:09.810 [main] INFO o.s.w.c.s.ServletContextPropertyPlaceholderConfigurer - Loading properties file from URL [file:/etc/app/app.properties] 
14:23:09.810 [main] INFO o.s.w.c.s.ServletContextPropertyPlaceholderConfigurer - Loading properties file from ServletContext resource [/${config}] 
14:23:09.811 [main] WARN o.s.w.c.s.ServletContextPropertyPlaceholderConfigurer - Could not load properties from ServletContext resource [/${config}]: Could not open ServletContext resource [/${config}] 

나는 바람둥이가 연결 URL을 따기되지 않는 이유를 모르겠어요 및 운전사. 바람둥이 문제입니까, 아니면 뭔가 빠졌습니까? 감사합니다

답변

0

톰캣 문제가 아니므로 약간의 실수를 저 지르며 속성을로드하지 않아야합니다.

  1. 속성 파일은 Tomcat 환경의 적절한 위치에 있습니까?
  2. 속성 파일에서 일부 키를 비워 두지 않았습니까?
  3. 질문에 해당하는지에 모두 답변, 다음으로 설정을 변경하려고하면

:

<context:property-placeholder location="ADD_PATH_TO_YOUR_FILES SEPARATED_WITH_SPACES"/>

나는 여기에 두 개의 속성 자리, '일반'과 다른 하나를 혼합하는 추측 - 서블릿 컨텍스트에 한정됩니다. 나는 어떻게 든 그것들이 겹쳐지고 그들 중 하나가 조용히 무시당하는 것을 내기 할 수 있습니다.

나는 단지 property-placeholder을 고집합니다. 로그 출력으로 판단

+0

속성 파일은 tomcat 환경에 전혀 없습니다. 그들은 동일한 기계에 있지만 다른 디렉토리에 있습니다. Tomcat 인스턴스에서 속성 (구성)을 가져 오려고했습니다. 내 default.properties (classpath에 포함되어 있으며, mysql에서 mysql을 사용하는 것 외에는 동일한 구성 옵션을 가짐)이라고 말했듯이 모든 키를 가지고 있다고 확신합니다. –

+0

Ok,하지만 왜 결정 했습니까? 'ServletContextPropertyPlaceholderConfigurer'를 사용 하시겠습니까? 그 재산 자리 표시자는 충분하다고 생각합니다. –

0

오래된 질문,하지만 ...

, 봄이 $ {설정} 참조가 해결되지 않았거나 다른 사람이이에 주어진 경로로 대체 된 것으로 나타납니다 마지막 로그 메시지 :

: 여기

Could not load properties from ServletContext resource [/${config}]: Could not open ServletContext resource [/${config}] 

는 {가리키는 catalina.home}이 제대로을 /conf/myprops.properties $를 해결하지만, 참조 된 파일을로드 할 수 없습니다 난 그냥 발생하는 경우입니다

Could not load properties from ServletContext resource [/D:/somepath/apache-tomcat/conf/myprops.properties]: Could not open ServletContext resource [/D:/somepath/apache-tomcat/conf/myprops.properties] 

필자의 경우 오류를 추적했습니다. 외부 파일 참조에 'file :'접두어를 붙이기가 필요했습니다. 즉, 파일이어야합니다 : $ {catalina.home}/conf/myprops.속성

(Spring 버전 차이가 로그 출력에도 영향을 미칠 수 있으며 참조가 해결되었지만 출력에 표시되지 않을 수 있습니다. 참조를 위해 사용하고 있습니다. Spring 4.1.6 현재).