У меня очень серьезная проблема, связанная с Spring Boot 1.5.16 и JBoss 6.4 EAP.
Введение Приложение архивируется как War и содержится в EAR с другой SpringПриложение и Angular.
Проблема Насколько я тестирую развертывание в локальной системе, никаких проблем не возникает.Несмотря на то, что локальная среда корректно загружает War в Jboss, на удаленном тестовом сервере запуск зависает во время запуска Spring Boot Application, запущенного на этом конкретном этапе.
10:04:53,056 WARN [org.jboss.as.ee] (MSC service thread 1-2) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to an exception (enable DEBUG log level to see the cause)
10:04:53,056 WARN [org.jboss.as.ee] (MSC service thread 1-2) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to an exception (enable DEBUG log level to see the cause)
10:04:53,058 WARN [org.jboss.as.ee] (MSC service thread 1-4) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to an exception (enable DEBUG log level to see the cause)
10:04:53,059 WARN [org.jboss.as.ee] (MSC service thread 1-4) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to an exception (enable DEBUG log level to see the cause)
10:04:53,155 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
10:04:53,157 INFO [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-2) JBAS010404: Deploying non-JDBC-compliant driver class com.mysql.fabric.jdbc.FabricMySQLDriver (version 5.1)
10:04:53,247 INFO [org.jboss.web] (ServerService Thread Pool -- 65) JBAS018210: Register web context: /ng-app
10:04:53,252 INFO [org.jboss.web] (ServerService Thread Pool -- 52) JBAS018210: Register web context: /spring-boot-app
10:04:53,252 INFO [org.jboss.web] (ServerService Thread Pool -- 51) JBAS018210: Register web context: /spring-app
10:04:53,294 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/spring-app]] (ServerService Thread Pool -- 51) No Spring WebApplicationInitializer types detected on classpath
10:04:53,306 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/spring-boot-app]] (ServerService Thread Pool -- 52) 2 Spring WebApplicationInitializers detected on classpath
10:04:53,522 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/spring-app]] (ServerService Thread Pool -- 51) Initializing Spring root WebApplicationContext
10:04:53,525 INFO [stdout] (ServerService Thread Pool -- 51) INFO org.springframework.web.context.ContextLoader - Root WebApplicationContext: initialization started
Несмотря на то, что приложение загружается и работает правильно(все приложение работает), если приложение будет перезапущено, Spring Boot Application не закроет свой сеанс успешно.В результате на новом этапе загрузки JVM удвоит занятые ресурсы и т. Д.
То, что я сделал Я сосредоточился, главным образом, на этом сообщении:
2 Spring WebApplicationInitializers detected on classpath
Возможно, это проблема, связанная с инициализацией нескольких контекстов?Я предоставляю вам свои соответствующие классы и надеюсь на ваши советы.
ServletInitializer .class
@SpringBootApplication(exclude = {EmbeddedServletContainerAutoConfiguration.class})
public class ServletInitializer {
public static void main(String[] args) {
SpringApplication application = new SpringApplication(ApplicationConfig.class);
new SpringApplicationBuilder(application).web(false).run(args); }
}
ApplicationConfig .class
@Configuration
@EnableJpaAuditing
@Order
public class ApplicationConfig extends SpringBootServletInitializer {
// @PostConstruct
// void init() {
// TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
// }
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
application.web(false);
return application.sources(ServletInitializer.class);
}
@Bean
public DispatcherServlet dispatcherServlet() {
return new DispatcherServlet();
}
@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
ServletRegistrationBean registration = new ServletRegistrationBean(
dispatcherServlet(), "/*");
registration
.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
registration.setLoadOnStartup(1);
return registration;
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
System.setProperty(AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME, "test");
super.onStartup(servletContext);
}
}
Некоторые детали У меня есть соединение с базой данных JNDI, которое работает правильно, по крайней мере, в локальной среде.У меня нет web.xml.Это развертывание приложения springboot в jboss-deploy-structure .xml
<sub-deployment name="CRVbusinessService.war">
<dependencies>
<module name="javax.xml.rpc.api"/>
<module name="javax.wsdl4j.api"/>
</dependencies>
<exclusions>
<module name="org.apache.xalan"/>
<module name="org.apache.commons.logging"/>
<module name="org.apache.log4j"/>
<module name="org.jboss.logging"/>
<module name="org.jboss.logging.jul-to-slf4j-stub"/>
<module name="org.jboss.logmanager"/>
<module name="org.jboss.logmanager.log4j"/>
<module name="org.slf4j"/>
<module name="org.slf4j.impl"/>
</exclusions>
</sub-deployment>
<sub-deployment name="restService.war">
<local-last value="true" />
<dependencies>
<module name="deployment.jpa2.1"/>
</dependencies>
<exclusions>
<module name="org.jboss.logging"/>
<module name="org.apache.commons.logging"/>
<module name="org.jboss.logmanager"/>
<module name="org.slf4j"/>
<module name="org.apache.log4j"/>
<module name="javax.persistence.api" />
<module name="org.hibernate" />
<module name="javax.validation.api"/>
<module name="javaee.api" />
</exclusions>
</sub-deployment>
<module name="deployment.jpa2.1" >
<module-alias name="jpa2.1"/>
<resources>
<resource-root path="hibernate-jpa-2.1-api-1.0.0.Final.jar" />
</resources>
</module>
Заранее благодарю за любую помощь.