I have an old web application (pure servlet, without Spring) that I want to run as fat-jar.
This app provides a lot of REST services. I don\'t want to modified old code.
It wasn't so difficult. I simply rewrote configuration from my old web.xml using Spring annotations.
package kjkrol;
import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher;
import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.embedded.ServletContextInitializer;
import org.springframework.boot.context.embedded.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import javax.servlet.ServletContextListener;
@ComponentScan
@EnableAutoConfiguration
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public ServletContextInitializer initializer() {
return servletContext -> {
// RestEasy configuration
servletContext.setInitParameter("resteasy.scan", "true");
servletContext.setInitParameter("resteasy.servlet.mapping.prefix", "/services");
};
}
@Bean
public ServletContextListener restEasyBootstrap() {
return new ResteasyBootstrap();
}
@Bean
public ServletRegistrationBean restEasyServlet() {
final ServletRegistrationBean registrationBean = new ServletRegistrationBean();
registrationBean.setServlet(new HttpServletDispatcher());
registrationBean.setName("restEasy-servlet");
registrationBean.addUrlMappings("/services/*");
registrationBean.addInitParameter("javax.ws.rs.Application", "kjkrol.MyRESTApplication");
return registrationBean;
}
}
package kjkrol;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;
public class MyRESTApplication extends Application {
private final Set