由于指定的配置文件[默认]不匹配,因此跳过了XML bean定义文件

时间:2017-06-26 19:34:58

标签: java spring-mvc tomcat spring-environment

我们在tomcat上部署了一个Spring应用程序,但它没有启动。

应用程序错误如下:

Caused by: org.springframework.beans.PropertyBatchUpdateException; nested 
PropertyAccessExceptions (1) are:
PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'driverClassName' threw exception; nested exception is java.lang.IllegalStateException: Could not load JDBC driver class [${hibernate.connection.driver_class}]
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:121)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:75)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1564)
... 49 more

我们在以下位置定义了属性文件: 的/ opt / tomcat的/ APPNAME / tomcat8-2 有三个文件:config.properties,core-ws.proprties和log4j-config.xml

我们知道$ {TOMCAT_CONFIG_HOME}定义为:/ opt / tomcat / appname / tomcat8-2

我们知道文件权限是正确的,运行tomcat的用户对此config目录中的目录和文件具有读取权限。我可以像tomcat用户一样编辑/读取属性文件。所以,我们知道这不是权限问题。

从应用日志中,我们收到以下错误消息:

Skipped XML bean definition file due to specified profiles [default] not matching: class path resource [spring/app-platform-entity-context.xml]

Spring应用程序上下文文件具有以下属性:

<beans profile="default">
     <context:property-placeholder location="file:${TOMCAT_CONFIG_HOME}/core-ws.properties" />
 </beans>

最后,这是core-ws.properties的样子:

hibernate.connection.url=jdbc:oracle:thin:@//123.456.789/APP_DB
hibernate.connection.driver_class=oracle.jdbc.driver.OracleDriver
hibernate.connection.username=some_db_user
hibernate.connection.password=some_db_password

所以,我已经研究过这款双门轿跑车了,而且我的智慧结束了。我可以告诉你我们对log4j-config.xml文件没有任何问题。该应用程序可以找到它,并阅读它就好了。只是这一个参数似乎正在崩溃应用......

对此事的任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:0)

跳过XML文件的原因是因为我们的CATALINA_OPTS设置中有-Dspring.profiles.active = prod。

直到我们开始导出值为tomcat的值时,我们才找到它。

一旦我们删除了这一行,我们的[默认]个人资料就会接管它。

谢谢!

答案 1 :(得分:0)

为独立应用解答此问题:

在我的情况下,由于设置ApplicationContext的顺序,我在设置配置文件之前加载了 xml 文件。 正确的顺序是:

  GenericXmlApplicationContext ctx =
            new GenericXmlApplicationContext();
    ctx.getEnvironment().setActiveProfiles("dev");
    ctx.load("com/profiles/*-config.xml");
    ctx.refresh();