Java 使用Spring Framework部署.war文件时出错

Java 使用Spring Framework部署.war文件时出错,java,spring,Java,Spring,该应用程序使用Spring框架,需要一个名为config.path的环境变量,可以在名为web.xml的文件中配置。看起来是这样的: <!-- Creates the Spring Container shared by all Servlets and Filters --> <!-- *** Opcional, si no se quiere arrancar la aplicación con ninguna JAVA_OPT *** --> <!-- co

该应用程序使用Spring框架,需要一个名为config.path的环境变量,可以在名为web.xml的文件中配置。看起来是这样的:

<!-- Creates the Spring Container shared by all Servlets and Filters -->

<!-- *** Opcional, si no se quiere arrancar la aplicación con ninguna JAVA_OPT *** -->
<!-- context-param>
    <param-name>config.path</param-name>
    <param-value>ruta_absoluta_carpeta_ficheros_configuracion</param-value>
</context-param-->

<listener>
    <listener-class>es.mpt.dsic.inside.ws.configuration.ConfigLoaderListener</listener-class>       
</listener>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>file:${config.path}/log4j.properties</param-value>     
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:es/mpt/dsic/inside/context/inside-ws-context.xml,
        /WEB-INF/mvc-dispatcher-servlet.xml,
        classpath:es/mpt/dsic/inside/context/inside-security-context.xml,
        classpath:es/mpt/dsic/inside/context/inside-context.xml
    </param-value>
</context-param>

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

<!-- Spring MVC -->
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- Spring encoding obligando a utf-8 -->
<filter>  
    <filter-name>encodingFilter</filter-name>  
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    <init-param>  
       <param-name>encoding</param-name>  
       <param-value>UTF-8</param-value>  
    </init-param>  
    <init-param>  
       <param-name>forceEncoding</param-name>  
       <param-value>true</param-value>  
    </init-param>  
</filter>  
<filter-mapping>  
    <filter-name>encodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping> 


<!-- Firma Trifasica -->
<servlet>
    <description>Servicio de firma electronica en 3 fases v2.1</description>
    <servlet-name>SignatureService</servlet-name>
    <servlet-class>es.gob.afirma.triphase.server.SignatureService</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>SignatureService</servlet-name>
    <url-pattern>/SignatureService</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>config.path</param-name>
    <param-value>/var/lib/tomcat8/webapps/aplicacion/resources/config</param-value>
</context-param>
JAVA_OPTS='-Xmx256m -Djava.awt.headless=true -Dconfig.path=/var/lib/tomcat8/webapps/aplicacion/resources/config' 

es.mpt.dsic.inside.ws.configuration.ConfigLoaderListener
log4jConfigLocation
文件:${config.path}/log4j.properties
org.springframework.web.util.Log4jConfigListener
org.springframework.web.context.ContextLoaderListener
上下文配置位置
类路径:es/mpt/dsic/inside/context/inside-ws-context.xml,
/WEB-INF/mvc-dispatcher-servlet.xml,
类路径:es/mpt/dsic/inside/context/inside-security-context.xml,
类路径:es/mpt/dsic/inside/context/inside-context.xml
CXF服务器
org.apache.cxf.transport.servlet.CXFServlet
1.
CXF服务器
/ws/*
mvc调度器
org.springframework.web.servlet.DispatcherServlet
1.
mvc调度器
/
springSecurityFilterChain
org.springframework.web.filter.DelegatingFilterProxy
springSecurityFilterChain
/*
编码滤波器
org.springframework.web.filter.CharacterEncodingFilter
编码
UTF-8
强制编码
真的
编码滤波器
/*  
电子公司服务en 3 fases v2.1
签名服务
es.gob.afirma.triphase.server.SignatureService
签名服务
/签名服务

我是这样设置的:

<!-- Creates the Spring Container shared by all Servlets and Filters -->

<!-- *** Opcional, si no se quiere arrancar la aplicación con ninguna JAVA_OPT *** -->
<!-- context-param>
    <param-name>config.path</param-name>
    <param-value>ruta_absoluta_carpeta_ficheros_configuracion</param-value>
</context-param-->

<listener>
    <listener-class>es.mpt.dsic.inside.ws.configuration.ConfigLoaderListener</listener-class>       
</listener>

<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>file:${config.path}/log4j.properties</param-value>     
</context-param>

<listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath:es/mpt/dsic/inside/context/inside-ws-context.xml,
        /WEB-INF/mvc-dispatcher-servlet.xml,
        classpath:es/mpt/dsic/inside/context/inside-security-context.xml,
        classpath:es/mpt/dsic/inside/context/inside-context.xml
    </param-value>
</context-param>

<servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
</servlet-mapping>

<!-- Spring MVC -->
<servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- Spring Security -->
<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- Spring encoding obligando a utf-8 -->
<filter>  
    <filter-name>encodingFilter</filter-name>  
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    <init-param>  
       <param-name>encoding</param-name>  
       <param-value>UTF-8</param-value>  
    </init-param>  
    <init-param>  
       <param-name>forceEncoding</param-name>  
       <param-value>true</param-value>  
    </init-param>  
</filter>  
<filter-mapping>  
    <filter-name>encodingFilter</filter-name>  
    <url-pattern>/*</url-pattern>  
</filter-mapping> 


<!-- Firma Trifasica -->
<servlet>
    <description>Servicio de firma electronica en 3 fases v2.1</description>
    <servlet-name>SignatureService</servlet-name>
    <servlet-class>es.gob.afirma.triphase.server.SignatureService</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>SignatureService</servlet-name>
    <url-pattern>/SignatureService</url-pattern>
</servlet-mapping>
<context-param>
    <param-name>config.path</param-name>
    <param-value>/var/lib/tomcat8/webapps/aplicacion/resources/config</param-value>
</context-param>
JAVA_OPTS='-Xmx256m -Djava.awt.headless=true -Dconfig.path=/var/lib/tomcat8/webapps/aplicacion/resources/config' 

config.path
/var/lib/tomcat8/webapps/aplicacion/resources/config
Mi的问题是,如果我让这些行注释并尝试部署应用程序,我会在catalina.out上得到以下错误:

INFORMACIÓN: Despliegue del archivo /var/lib/tomcat8/webapps/inside.war de la aplicación web abr 25, 2017 1:51:12 PM org.apache.jasper.servlet.TldScanner scanJars INFORMACIÓN: Al menos un JAR, que se ha explorado buscando TLDs, aún no contenía TLDs. Activar historial de depuración para este historiador para una completa lista de los JARs que fueron explorados y de los que nos se halló TLDs. Saltarse JARs no necesarios durante la exploración puede dar lugar a una mejora de tiempo significativa en el arranque y compilación de JSP . DEBUG: setDebug: JavaMail version 1.4ea 13:51:16,880 ERROR ContextLoader:308 - Context initialization failed java.lang.IllegalArgumentException: Could not resolve placeholder 'config.path' at org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:173) at org.springframework.util.PropertyPlaceholderHelper.replacePlaceholders(PropertyPlaceholderHelper.java:125) at org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:151) at org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:142) at org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:440) at org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:188) at org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:149) at org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:126) at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:263) at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:203) at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:617) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) abr 25, 2017 1:51:16 PM org.apache.catalina.core.StandardContext startInternal GRAVE: One or more listeners failed to start. Full details will be found in the appropriate container log file abr 25, 2017 1:51:16 PM org.apache.catalina.core.StandardContext startInternal GRAVE: Falló en arranque del Contexto [/inside] debido a errores previos 13:51:16,938 WARN XmlWebApplicationContext:1028 - Exception thrown from ApplicationListener handling ContextClosedEvent java.lang.IllegalStateException: ApplicationEventMulticaster not initialized - call 'refresh' before multicasting events via the context: Root WebApplicationContext: startup date [Tue Apr 25 13:51:12 CEST 2017]; root of context hierarchy at org.springframework.context.support.AbstractApplicationContext.getApplicationEventMulticaster(AbstractApplicationContext.java:337) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:324) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1025) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556) at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4859) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) 13:51:16,939 WARN XmlWebApplicationContext:1036 - Exception thrown from LifecycleProcessor on context close java.lang.IllegalStateException: LifecycleProcessor not initialized - call 'refresh' before invoking lifecycle methods via the context: Root WebApplicationContext: startup date [Tue Apr 25 13:51:12 CEST 2017]; root of context hierarchy at org.springframework.context.support.AbstractApplicationContext.getLifecycleProcessor(AbstractApplicationContext.java:350) at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1033) at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:988) at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:556) at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142) at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4859) at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478) at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:224) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:159) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) abr 25, 2017 1:51:17 PM org.apache.catalina.startup.HostConfig deployWAR INFORMACIÓN: Deployment of web application archive /var/lib/tomcat8/webapps/inside.war has finished in 8.323 ms INFORMACIÓN:Despliegue del archivo/var/lib/tomcat8/webapps/inside.war de la aplicacióN web abr 252017年1月25日下午1:51:12 org.apache.jasper.servlet.TldScanner scanJars 信息:所有人都知道,他们都知道TLD,没有内容。历史净化行动是一项历史活动,它是一项关于探索和保护海洋的完整的历史活动。盐罐不需要在卢加的勘探区内进行,也不需要对JSP进行汇编。 调试:setDebug:JavaMail版本1.4ea 13:51:16880错误ContextLoader:308-上下文初始化失败 java.lang.IllegalArgumentException:无法解析占位符“config.path” 位于org.springframework.util.PropertyPlaceholderHelper.parseStringValue(PropertyPlaceholderHelper.java:173) 位于org.springframework.util.PropertyPlaceholderHelper.ReplacePlaceHolderHelper(PropertyPlaceholderHelper.java:125) 位于org.springframework.core.env.AbstractPropertyResolver.doResolvePlaceholders(AbstractPropertyResolver.java:151) 位于org.springframework.core.env.AbstractPropertyResolver.resolveRequiredPlaceholders(AbstractPropertyResolver.java:142) 位于org.springframework.core.env.AbstractEnvironment.resolveRequiredPlaceholders(AbstractEnvironment.java:440) 位于org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:188) 位于org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:149) 位于org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:126) 位于org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:263) 位于org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:203) 位于org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:617) 位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:446) 位于org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:385) 位于org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:284) 位于org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 位于org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4812) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5255) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) 位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) 位于org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:939) 位于org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1812) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 运行(Thread.java:745) 美国广播公司2017年1月25日下午1:51:16 org.apache.catalina.core.StandardContext startInternal GRAVE:一个或多个侦听器启动失败。完整的详细信息将在相应的容器日志文件中找到 美国广播公司2017年1月25日下午1:51:16 org.apache.catalina.core.StandardContext startInternal 格雷夫:福尔奥恩·阿伦克·德尔·康文斯托[/inside]debido a Errors previos 13:51:16938警告XmlWebApplicationContext:1028-从处理ContextClosedEvent的ApplicationListener引发的异常 java.lang.IllegalStateException:ApplicationEventMulticaster未初始化-通过上下文在多播事件之前调用“刷新”:根WebApplicationContext:启动日期[2017年4月25日星期二13:51:12 CEST]