How to configure spring-boot servlet like in web.xml?
77,402
If I take your question at face value (you want a SpringBootServletInitializer
that duplicates your existing app) I guess it would look something like this:
@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;
}
}
See docs on converting an existing app for more detail.
But, rather than using Atmosphere, you are probably better off these days using the native Websocket support in Tomcat and Spring (see the websocket sample and guide for examples).
Related videos on Youtube
Author by
Selector
Updated on October 31, 2020Comments
-
Selector over 3 years
I have a simple servlet configuration 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>
How can I rewrite it for SpringBootServletInitializer?
-
Dave Syer about 10 yearsIt's not clear what you are trying to do. If you want the exact same Spring application using Servlet 3.0 why are you defining a different Servlet type (MeteorServlet vs. DispatcherServlet)? The configuration class that you load in the web.xml isn't explicitly used anywhere. Also you extend
SpringBootServletInitializer
but don't appear to override the crucialconfigure
method. -
Selector about 10 yearsSorry, perhaps an example of the code you astray. I need to configure the Meteor Servlet, as described in web.xml
-
Dave Syer about 10 yearsSorry, not following. The web.xml has a
DispatcherServlet
. If you want another kind of servlet as the default servlet use the code in the answer but a different servlet class (the bean name still has to be "DispatcherServlet" though). -
Dave Syer about 10 yearsAh, I get it. I missed the meteor servlet declaration. I'll update the answer when I get a chance.
-
Selector about 10 yearsThank you Dave! You solved my problem.
-
-
MadBoomy over 8 yearsfor additional url mappings use registration.addUrlMappings("/whatever/*", "/whatever2/*");
-
CodeMed about 8 yearsI found this posting while researching how to define a filter list for a Spring Boot servlet after an error message resulted from trying to allow anonymous access to a named servlet in a Spring Boot app. Are you willing to comment? Here is the link: stackoverflow.com/questions/36489253/…