Настройка развертывания Spring-Boot JBoss AS 7.1 - PullRequest
0 голосов
/ 29 ноября 2018

Иметь очень ванильное приложение Spring-Boot, которое нужно запустить на AS7 / JDK7, столкнуться с некоторыми начальными проблемами при попытке развертывания.

Работает совершенно нормально при запуске с использованием gradle bootRun

Я попытался изучить расширение SpringBootServletInitializer и вручную зарегистрировать сопоставления для корневого контекста в Application.java с требуемым конфигом, что, как кажется, предлагают другие ответы, но безуспешно.

Среда

  • Java 1.7
  • JBoss EAP 6.4 (AS7)
  • Определенный приложением источник данных (ojdbc6)
  • springBoot 1.4.7.RELEASE
  • Gradle 4.10

Докер-файл, который я использую для проверки, выглядит следующим образом:

FROM pascalgrimaud/jboss-as:7.1.1
COPY build/libs/app.war /opt/jboss-as-7.1.1.Final/standalone/deployments/app.war

Application.java

@SpringBootApplication
public class Application {

private static final Logger log = LoggerFactory.getLogger(Application.class);

@Inject
private Environment env;

/**
 * Initialises the application
 * @throws IOException
 */
@PostConstruct
public void initApplication() throws IOException {
    if (env.getActiveProfiles().length == 0) {
        log.warn("No Spring profile configured, running with default configuration");
    }else {
        log.info("Running with Spring profile(s) : {}", Arrays.toString(env.getActiveProfiles()));
    }
}

/**
 * main method, used to run the application
 * @param args
 */
public static void main(String[] args) throws UnknownHostException {
    SpringApplication app = new SpringApplication(Application.class);
    SimpleCommandLinePropertySource source = new SimpleCommandLinePropertySource(args);
    addDefaultProfile(app, source);
    Environment env = app.run(args).getEnvironment();
    log.info("Access URLs:\n----------------------------------------------------------\n\t" +
                    "Local: \t\thttp://127.0.0.1:{}\n\t" +
                    "External: \thttp://{}:{}\n----------------------------------------------------------",
            env.getProperty("server.port"),
            InetAddress.getLocalHost().getHostAddress(),
            env.getProperty("server.port")
    );
}

/**
 * If no profile has been configured, set by default the "dev" profile.
 */
private static void addDefaultProfile(SpringApplication app, SimpleCommandLinePropertySource source) {
    if (!source.containsProperty("spring.profiles.active") &&
            !System.getenv().containsKey("SPRING_PROFILES_ACTIVE")) {
        app.setAdditionalProfiles(Constants.SPRING_PROFILE_DEVELOPMENT);
    }
}

application.yml

server:
   port: 8080
   servlet-path: /app
   #  context-path: /app

src / main / webapp / WEB-INF / jboss-web.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE jboss-web>
<jboss-web>
    <context-root>/app</context-root>
</jboss-web>

зависимости build.gradle

dependencies {
    //spring core deps
    implementation("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-jdbc:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-aop:$springBootVersion")

    compileOnly("org.springframework.boot:spring-boot-starter-tomcat:$springBootVersion")

    //Spring additional deps
    testCompile("org.springframework.boot:spring-boot-starter-test:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-actuator:$springBootVersion")
    implementation("org.springframework.boot:spring-boot-starter-logging:$springBootVersion")

    //Core utils
    implementation('javax.inject:javax.inject:1')
    compile files('src/main/resources/lib/ojdbc6.jar')
    compile('joda-time:joda-time:2.9.9')
    compile('org.jadira.usertype:usertype.core:5.0.0.GA')

    //Additional deps
    compile('io.springfox:springfox-swagger2:2.6.1')
    compile('com.google.guava:guava:18.0')
}

** Выход журнала JBoss **

15:55:49,893 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "app.war"
15:56:03,635 WARN  [org.jboss.as.ee] (MSC service thread 1-2) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.http.server.ServletServerHttpAsyncRequestControl
        at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
        at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_95]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_95]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_95]

15:56:03,688 WARN  [org.jboss.as.ee] (MSC service thread 1-2) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.web.context.request.async.StandardServletAsyncWebRequest
        at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
        at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_95]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_95]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_95]

15:56:03,980 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC00001: Failed to start service jboss.deployment.unit."app.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."app.war".INSTALL: Failed to process phase INSTALL of deployment "app.war"
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_95]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_95]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_95]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: Deployment error processing SCI for JAR: tomcat-embed-websocket-8.5.15.jar
        at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:186)
        at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.deploy(ServletContainerInitializerDeploymentProcessor.java:121)
        at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
        ... 5 more
Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more from [Module "deployment.app.war:main" from Service Module Loader]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
        at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:183)
        ... 7 more

15:56:04,111 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "app.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"app.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"app.war\".INSTALL: Failed to process phase INSTALL of deployment \"app.war\""}}
15:56:04,390 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015877: Stopped deployment app.war in 281ms
15:56:04,397 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."app.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."app.war".INSTALL: Failed to process phase INSTALL of deployment "app.war"

15:56:04,404 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"app.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"app.war\".INSTALL: Failed to process phase INSTALL of deployment \"app.war\""}}}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...