2014-03-13 13 views
15

Ich habe eine einfache Servlet-Konfiguration in web.xml:Wie konfiguriert man das Spring-Boot-Servlet wie in web.xml?

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.atmosphere.cpr.MeteorServlet</servlet-class> 
    <init-param> 
     <param-name>org.atmosphere.servlet</param-name> 
     <param-value>org.springframework.web.servlet.DispatcherServlet</param-value> 
    </init-param> 
    <init-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </init-param> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>net.org.selector.animals.config.ComponentConfiguration</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    <async-supported>true</async-supported> 
</servlet> 

<servlet-mapping> 
    <servlet-name>appServlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

Wie kann ich es für SpringBootServletInitializer umschreiben?

+0

Es ist nicht klar, was Sie zu tun versuchen. Wenn Sie die gleiche Spring-Anwendung mit Servlet 3.0 verwenden möchten, warum definieren Sie einen anderen Servlet-Typ (MeteorServlet vs. DispatcherServlet)? Die Konfigurationsklasse, die Sie in der web.xml laden, wird nirgendwo explizit verwendet. Außerdem erweitern Sie 'SpringBootServletInitializer', scheinen aber die entscheidende' configure'-Methode nicht zu überschreiben. –

+0

Sorry, vielleicht ein Beispiel für den Code, den Sie falsch verstehen. Ich muss das Meteor Servlet konfigurieren, wie in web.xml beschrieben – Selector

+0

Sorry, nicht folgen. Die web.xml hat ein 'DispatcherServlet'. Wenn Sie eine andere Art von Servlet als das Standard-Servlet verwenden möchten, verwenden Sie den Code in der Antwort, aber eine andere Servlet-Klasse (der Bean-Name muss jedoch immer noch "DispatcherServlet" sein). –

Antwort

23

Wenn ich Ihre Frage zum Nennwert nehmen (wollen Sie eine SpringBootServletInitializer, die Ihre vorhandenen App Duplikate) ich denke, es wie folgt aussehen würde:

für weitere Einzelheiten
@Configuration 
public class Restbucks extends SpringBootServletInitializer { 

    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return builder.sources(Restbucks.class, ComponentConfiguration.class); 
    } 

    @Bean 
    public MeteorServlet dispatcherServlet() { 
     return new MeteorServlet(); 
    } 

    @Bean 
    public ServletRegistrationBean dispatcherServletRegistration() { 
     ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet()); 
     Map<String,String> params = new HashMap<String,String>(); 
     params.put("org.atmosphere.servlet","org.springframework.web.servlet.DispatcherServlet"); 
     params.put("contextClass","org.springframework.web.context.support.AnnotationConfigWebApplicationContext"); 
     params.put("contextConfigLocation","net.org.selector.animals.config.ComponentConfiguration"); 
     registration.setInitParameters(params); 
     return registration; 
    } 

} 

Siehe docs on converting an existing app.

Aber anstatt Atmosphere zu verwenden, sind Sie wahrscheinlich heute besser dran mit der nativen Websocket-Unterstützung in Tomcat und Spring (Beispiele finden Sie in den Artikeln websocket sample und guide).

+0

für zusätzliche URL-Zuordnungen verwenden Sie registration.addUrlMappings ("/ was auch immer/*", "/ was auch immer2/*"); – Bamboomy

+0

Ich habe diesen Beitrag gefunden, während ich untersucht habe, wie eine Filterliste für ein Spring Boot-Servlet nach einer Fehlermeldung definiert wird, die durch den anonymen Zugriff auf ein benanntes Servlet in einer Spring Boot-Anwendung verursacht wurde. Sind Sie bereit zu kommentieren? Hier ist der Link: http://stackoverflow.com/questions/36489253/api-url-has-an-empty-filter-list-in-spring-boot-security – CodeMed

Verwandte Themen