Здравствуйте! При развертывании в Jelastic возникла проблема с REST как я правильно понял из за того что в single-war-web.xml не были зарегистрированы сервлеты отвечающие за REST API. Следуя документации https://doc.cuba-platform.com/manual-7.0-ru/servlet_registration.html#servlet_registration_single_war я программно зарегистрировал все сервлеты и фильтры. Но теперь при запуске приложения на хостинге получаю NPE. Подскажите пожалуйста чем причина и что я делаю не так. Версия платформы 7.0.5
Лог ошибки catalina.txt (39.2 КБ)
Код класса регистрации сервлетов
public class CustomWebListener implements ServletContextListener
{
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
ServletContext servletContext = servletContextEvent.getServletContext();
registerApplicationServlet(servletContext);
registerCubaDispatcherServlet(servletContext);
registerCubaRestApiServlet(servletContext);
registerCubaHttpFilter(servletContext);
registerDelegatingFilterProxy(servletContext);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
}
protected void registerApplicationServlet(ServletContext servletContext) {
ServletRegistration.Dynamic servletReg = servletContext.addServlet("app_servlet", CubaApplicationServlet.class);
servletReg.setLoadOnStartup(0); //ошибка тут
servletReg.setAsyncSupported(true);
}
protected void registerCubaDispatcherServlet(ServletContext servletContext) {
ServletRegistration.Dynamic servletReg = servletContext.addServlet("dispatcher", CubaDispatcherServlet.class);
servletReg.setLoadOnStartup(1);
}
protected void registerCubaRestApiServlet(ServletContext servletContext) {
ServletRegistration.Dynamic servletReg = servletContext.addServlet("app_servlet", CubaRestApiServlet.class);
servletReg.setLoadOnStartup(2);
servletReg.addMapping("/dispatch/*", "/*", "/rest/*");
}
protected void registerCubaHttpFilter(ServletContext servletContext) {
FilterRegistration.Dynamic filterReg = servletContext.addFilter("cuba_filter", CubaHttpFilter.class);
filterReg.setAsyncSupported(true);
filterReg.addMappingForUrlPatterns(null, true,"/*");
}
protected void registerDelegatingFilterProxy(ServletContext servletContext) {
FilterRegistration.Dynamic filterReg = servletContext.addFilter("restSpringSecurityFilterChain", DelegatingFilterProxy.class);
filterReg.setInitParameter("contextAttribute", "org.springframework.web.servlet.FrameworkServlet.CONTEXT.rest_api");
filterReg.setInitParameter("targetBeanName", "springSecurityFilterChain");
filterReg.addMappingForUrlPatterns(null, true,"/rest/*");
}
}