Printemps - application Initialisé deux fois?

Quand je démarre mon printemps, mon application tomcat , le ContextRefreshedEvent se déclenche deux fois. Veuillez voir le StackTrace.

Dec 20, 2013 6:07:56 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:SpringValidations' did not find a matching property.
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;F:\sub\svn\bin;%DERBY_HOME%\bin;D:\Lal\Lab\SW\apache-maven-3.0.4/bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Java\jdk1.6.0_25\bin;;F:\Eclipse\sts-2.9.2.RELEASE;
Dec 20, 2013 6:07:56 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Dec 20, 2013 6:07:56 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 289 ms
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.16
Dec 20, 2013 6:07:56 PM org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(F:\anand\Spring_Training\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\SpringValidations\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.springframework.web.context.ContextLoaderListener" is already configured for this context. The duplicate definition has been ignored.
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.springframework.web.util.Log4jConfigListener" is already configured for this context. The duplicate definition has been ignored.
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.springframework.web.context.ContextLoaderListener" is already configured for this context. The duplicate definition has been ignored.
Dec 20, 2013 6:07:56 PM org.apache.catalina.core.StandardContext addApplicationListener
INFO: The listener "org.springframework.web.context.ContextLoaderListener" is already configured for this context. The duplicate definition has been ignored.
log4j:WARN Continuable parsing error 108 and column 11
log4j:WARN The content of element type "logger" must match "(param*,level?,appender-ref*)".
log4j:WARN Continuable parsing error 114 and column 11
log4j:WARN The content of element type "logger" must match "(param*,level?,appender-ref*)".
Dec 20, 2013 6:07:57 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
--------------- Context Refreshed -----------------
:::::::::::::::::::::::: Now you can Start the Server Initialization ! :::::::::::::::::::::::::::::
Dec 20, 2013 6:07:57 PM org.apache.catalina.core.ApplicationContext log
INFO: Set web app root system property: 'webapp.root' = [F:\anand\Spring_Training\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\SpringValidations\]
Dec 20, 2013 6:07:57 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing log4j from [F:\anand\Spring_Training\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\SpringValidations\WEB-INF\classes\log4j.xml]
log4j:WARN Continuable parsing error 108 and column 11
log4j:WARN The content of element type "logger" must match "(param*,level?,appender-ref*)".
log4j:WARN Continuable parsing error 114 and column 11
log4j:WARN The content of element type "logger" must match "(param*,level?,appender-ref*)".
Dec 20, 2013 6:07:57 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
--------------- Context Refreshed -----------------
:::::::::::::::::::::::: Now you can Start the Server Initialization ! :::::::::::::::::::::::::::::
Dec 20, 2013 6:07:58 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Dec 20, 2013 6:07:58 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Dec 20, 2013 6:07:58 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/16  config=null
Dec 20, 2013 6:07:58 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1659 ms

Mon Initialiseur de classe sera comme ,

public class ApplicationListenerBean implements ApplicationListener<ContextRefreshedEvent> {
private String message;
public void onApplicationEvent(ContextRefreshedEvent event) {
System.out.println("--------------- Context Refreshed -----------------");
System.out.println( ":::::::::::::::::::::::: " +message+ " :::::::::::::::::::::::::::::");
//Other stuff like logger Initialization , Server Initailization etc..
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

Et mon applicationContext.xml sera comme ,

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org./dtd/spring-beans.dtd">
<beans>
<bean id="test" class="com.pointel.applicationListener.ApplicationListenerBean">
<property name="message"
value="Now you can Start the Server Initialization !">
</property>
</bean>
</beans>

Mon web.xml sera ,

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>SpringValidations</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
</web-app>

Mon répartiteur-servlet sera comme,

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- Application Message Bundle -->
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- <property name="basename" value="/WEB-INF/messages/messages.properties" /> -->
<property name="basenames">
<list>
<value>/WEB-INF/messages/messages.properties</value>
<value>/WEB-INF/messages/mymessages.properties</value>
</list>
</property>
<property name="cacheSeconds" value="3000" />
</bean> 
<!-- Scans the classpath of this application for @Components to deploy as beans -->
<context:component-scan base-package="com.pointel.controllers" />
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
<!-- <context:annotation-config /> -->
<!-- Resolves view names to protected .jsp resources within the /WEB-INF/views 
directory -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>

Est , je sais, Pourquoi l'--------------- Contexte Actualisé ----------------- message vient deux fois ?

Edit : je sais qu'il y a de nombreuses façons d'initialiser un printemps de l'application. Mais what is the best and the efficient way to initialize an Spring application like logger,Domain server startup to get protocol connection , stating the threads etc... ?

De l'espoir , vous pouvez comprendre ma question.

Avez-vous un Spring MVC contexte spécifique fichier XML (telles que webContext.xml par exemple)?
Publier vos web.xml et dispatcher-servlet.xml (ou quoi que ce fichier se trouve être appelé)
Keeling Veuillez voir mes modifications .
Veuillez voir mes modifications
jetez un oeil à la classe org.springframework.context.SmartLifecycle

OriginalL'auteur Human Being | 2013-12-20