Проблемы при попытке развернуть приложение Spring в Jboss 7.2, с ошибкой инициализации сервлета - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть приложение Spring MVC , использующее либо версию 4.3.11 , либо 4.3.23 , где Jboss 6.4 работает правильно, но при миграции до Jboss 7.2 мы получаем

java.lang.IllegalStateException: UT010041: Контекст сервлета уже был инициализирован, этот метод можно вызывать только из ServletContainerInitializer или ServletContextListener во время развертывания.

Похоже, это связано с переходом с Jboss на Undertow, но я не мог понять, что мне нужно сделать, чтобы обойти его и заставить приложение работать.

Сначала я обнаружил, что это связано с использованием Spring 4.3.11 и обновлением до Spring 4.3.23 , а также обновлением до JavaEE spec для 8 Но в обеих версиях проблема сохраняется.

11: 27: 09,088 ОШИБКА [org.jboss.msc.service.fail] (Пул потоков ServerService - 93) MSC000001: Не удалось запустить службу jboss.deployment.unit. "SampleDojo-app-1.0.0-SNAPSHOT .war ".undertow-deploy: org.jboss.msc.service.StartException в службе jboss.deployment.unit." sampleDojo-app-1.0.0-SNAPSHOT.war ".undertow-deploy: java.lang.IllegalStateException: UT010041 : Контекст сервлета уже инициализирован, этот метод можно вызывать только из ServletContainerInitializer или ServletContextListener

at org.wildfly.extension.undertow.deployment.UndertowDeploymentService $ 1.run (UndertowDeploymentService.java:81) в java.util.concurrent.Executors $ RunnableAdapter.call (Executors.java:511) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в org.jboss.threads.ContextClassLoaderSavingRunnable.run (ContextClassLoaderSavingRunnable.java:35) в org.jboss.threads.EnhancedQueueExecutor.safeRun (EnhancedQueueExecutor.java:1985) в org.jboss.threads.EnhancedQueueExecutor $ ThreadBody.doRunTask (EnhancedQueueExecutor.java:1487) в org.jboss.threads.EnhancedQueueExecutor $ ThreadBody.run (EnhancedQueueExecutor.java:1378) на java.lang.Thread.run (Thread.java:748) в org.jboss.threads.JBossThread.run (JBossThread.java:485) Причина: java.lang.IllegalStateException: UT010041: контекст сервлета уже инициализирован, этот метод можно вызывать только из ServletContainerInitializer или ServletContextListener в io.undertow.servlet.spec.ServletContextImpl.ensureNotInitialized (ServletContextImpl.java:955) в io.undertow.servlet.spec.ServletContextImpl.addFilter (ServletContextImpl.java:630) на br.com.itau.internet.core.impl.web.BaseAnnotationConfigServlet.addServletFilter (BaseAnnotationConfigServlet.java:67) на br.com.itau.internet.core.impl.web.BaseAnnotationConfigServlet.addServletFilters (BaseAnnotationConfigServlet.java:46) на br.com.itau.internet.core.impl.web.BaseAnnotationConfigServlet.initWebApplicationContext (BaseAnnotationConfigServlet.java:29) в org.springframework.web.servlet.FrameworkServlet.initServletBean (FrameworkServlet.java:494) в org.springframework.web.servlet.HttpServletBean.init (HttpServletBean.java:171) в javax.servlet.GenericServlet.init (GenericServlet.java:244) в io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed (LifecyleInterceptorInvocation.java:117) в org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init (RunAsLifecycleInterceptor.java:78) в io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed (LifecyleInterceptorInvocation.java:103) в io.undertow.servlet.core.ManagedServlet $ DefaultInstanceStrategy.start (ManagedServlet.java:303) в io.undertow.servlet.core.ManagedServlet.createServlet (ManagedServlet.java:143) в io.undertow.servlet.core.DeploymentManagerImpl $ 2.call (DeploymentManagerImpl.java:583) в io.undertow.servlet.core.DeploymentManagerImpl $ 2.call (DeploymentManagerImpl.java:554)по адресу io.undertow.servlet.core.ServletRequestContextThreadSetupAction $ 1.call (ServletRequestContextThreadSetupAction.java:42) по адресу io.undertow.servlet.core.ContextClassLoaderSetupAction $ 1.call.exup.windows.sectoj.dll.SecurityContextThreadSetupAction.lambda $ create $ 0 (SecurityContextThreadSetupAction.java:105) в org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda.wpg для юниверсов..UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ create $ 0 (UndertowDeploymentInfoService.java:1502) по адресу org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService $ Undertow.world.tw..deployment.UndertowDeploymentInfoService $ UndertowThreadSetupAction.lambda $ create $ 0 (UndertowDeploymentInfoService.java:1502) в io.undertow.servlet.core.DeploymentManagerImpl.start (DeploymentManagerImpl.java:596) по адресу org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext (UndertowDeploymentService.java:97 )wwd.wder.run (UndertowDeploymentService.java:78) ... еще 8

К сожалению, у меня нет возможности на момент перехода на Spring 5, мне нужны эти приложения для работы в Spring 4.x.

Я посмотрел повсюду, но до сих пор не могу понять, что может быть не так.

Отладка приложения, я обнаружил, что ошибка происходит, когда я пытаюсь добавить фильтр

final ServletRegistration.Dynamic sr = getServletContext().addServlet(servlet.getServletName(), servlet.getServletClass());
        sr.addMapping(servlet.getServletPath());
        sr.setLoadOnStartup(1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...