Приложение Spring Boot зависло при развертывании на JBoss 6.4 - PullRequest
0 голосов
/ 23 октября 2018

У меня очень серьезная проблема, связанная с 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>

Заранее благодарю за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...