2014-04-04 7 views
13

Ich versuche, einen Frühling Web-Anwendung Tomcat 7.0.24 einsetzen, aber es hängt beim Start mit den letzten Zeilen zeigen, wieTomcat 7 hängt an Initialisieren Frühling Wurzel WebApplicationContext

INFO: Deploying web application archive /usr/local/apps/tomcat-7.0.42/webapps/server-webapp.war 
Apr 4, 2014 1:38:28 PM org.apache.catalina.core.ApplicationContext log 
INFO: Spring WebApplicationInitializers detected on classpath: [[email protected]f] 
Apr 4, 2014 1:38:30 PM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring root WebApplicationContext 

I 4.0 zum Frühling vor kurzem aktualisiert. 2 und verwende einen Kunden WebApplicationInitializer über Anmerkungen. Vor dem Upgrade verwendete ich Spring 3 mit reiner XML-Konfiguration und es funktionierte gut. Meine web.xml-Datei wie folgt aussieht:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd 
    http://java.sun.com/xml/ns/javaee/web-common_3_0.xsd" 
    version="3.0"> 

<!-- Define the mime mappings --> 
<mime-mapping> 
    <extension>xsd</extension> 
    <mime-type>text/xml</mime-type> 
</mime-mapping> 

<!-- Define the welcome file list --> 
<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<!-- Define the default session timeout value --> 
<session-config> 
    <session-timeout>240</session-timeout> 
    <cookie-config> 
     <http-only>true</http-only> 
     <secure>true</secure> 
    </cookie-config> 
</session-config> 

Hier ist meine Web-Anwendung initializer:

public class MarketplaceWebAppInitializer implements WebApplicationInitializer 
{ 
    @Override 
    public void onStartup(ServletContext container) 
    { 
    // Instantiate a new web application context 
    XmlWebApplicationContext rootContext = new MarketplaceXmlWebApplicationContext(container); 

    // Add the various listeners 
    container.addListener(new ContextLoaderListener(rootContext)); 
    container.addListener(new RequestContextListener()); 

    // Set the locations of the configuration files 
    rootContext.setConfigLocations(
      new String[] 
        { 
          "applicationContext.xml", 
          "config/api-beans.xml", 
          "config/hibernate-beans.xml", 
          "config/security-beans.xml", 
          "config/service-beans.xml", 
          "config/settings-beans.xml", 
          "config/utility-beans.xml", 
          "config/mvc/web-beans.xml", 
          "config/jmx-beans.xml", 
          "config/ws/ws-beans.xml" 
        } 
    ); 

    // Add the dispatcher servlet 
    ServletRegistration.Dynamic mvc = 
      container.addServlet("mvc", new DispatcherServlet(rootContext)); 
    mvc.setLoadOnStartup(1); 
    mvc.setInitParameter("dispatchOptionsRequest", "true"); 
    mvc.addMapping("/api/*"); 
    mvc.addMapping("/html/*"); 

    // Add the web services servlet 
    ServletRegistration.Dynamic ws = 
      container.addServlet("ws", new MessageDispatcherServlet(rootContext)); 
    ws.setLoadOnStartup(2); 
    ws.setInitParameter("transformWsdlLocations", "true"); 
    ws.addMapping("/service/*"); 

    // Add the spring security filter 
    FilterRegistration.Dynamic springSecurityFilter = 
      container.addFilter("springSecurityFilterChain", 
        new DelegatingFilterProxy("springSecurityFilterChain")); 
    springSecurityFilter.addMappingForUrlPatterns(null, true, "/j_spring_security_check"); 
    springSecurityFilter.addMappingForUrlPatterns(null, true, "/j_spring_security_logout"); 
    springSecurityFilter.addMappingForUrlPatterns(null, true, "/api/*"); 
    springSecurityFilter.addMappingForUrlPatterns(null, true, "/html/*"); 

    // Add the static content filter 
    FilterRegistration.Dynamic staticContentFilter = 
      container.addFilter("staticContentFilter", new StaticContentFilter()); 
    staticContentFilter.addMappingForUrlPatterns(null, true, "/static/*"); 
    staticContentFilter.addMappingForUrlPatterns(null, true, "/generated/*"); 

    // Add the logger filter 
    FilterRegistration.Dynamic loggerFilter = 
      container.addFilter("loggerFilter", new LoggerFilter()); 
    loggerFilter.addMappingForUrlPatterns(null, true, "/api/*"); 
    loggerFilter.addMappingForUrlPatterns(null, true, "/html/*"); 
    } 
} 

Gibt es etwas offensichtlich, dass ich fehle? Ich habe alle anderen Fragen/Antworten zu diesem Thema überprüft und keine Lösung gefunden.

+3

Haben Sie Spring Logging eingeschaltet? Was sagt es? –

+1

Wie können Sie Spring Logging am einfachsten aktivieren? –

+1

Mit SLF4j, siehe [hier] (http://stackoverflow.com/questions/3387441/how-do-i-configure-spring-and-slf4j-so-that-i-can-get-logging). –

Antwort

21

Setzen Sie eine Antwort dafür, damit andere wissen, was mir in dieser besonderen Situation geholfen hat. Durch das Aktivieren der Spring-Protokollierung konnte ich erkennen, dass sich eine Datenbankverbindung in einem blockierten Zustand befand. Durch das Lösen des Datenbankproblems konnte meine Anwendung die Bereitstellung abschließen.

+0

Behoben mein Problem auch. Ich habe eine aktive Abfrage, die auf DB läuft. Die Dinge wurden jetzt gelöst –

+0

Was ist ein blockierter Zustand für eine Datenbankverbindung? – Stephane

+0

Danke. Es war Datenbankverbindungsproblem für mich auch. – rj4u