приложение springBoot на JBoss EAP, контекст сервлета не lodaed

у меня есть очень простое приложение spring boot, которое я хочу развернуть в JBoss EAP. Вот мой простой класс приложений:

@SpringBootApplication

public class MayurApplication extends SpringBootServletInitializer{

    public static void main(String[] args) {
        SpringApplication.run(MayurApplication.class, args);
    }

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(applicationClass);
    }

    private static Class<MayurApplication> applicationClass = MayurApplication.class;
}

@RestController
class GreetingController {

    @RequestMapping("/hello/{name}")
    String hello(@PathVariable String name) {
        return "Hello, " + name + "!";
    }
}

и мой пом.xml также очень прост. Когда я запускаю это приложение на Tomcat, используя встроенный Tomcat, что поставляется с spring boot. Все работает как шарм в один клик. Я могу получить доступ http://localhost:8080/demo/hello/World и это тоже работает.

теперь я попытался сделать его совместимым с JBoss EAP war, я отключил Tomcat, исключив из spring-boot-starter-web и преобразовать его в военный проект. (в соответствии со статьей http://spring.io/blog/2014/03/07/deploying-spring-boot-applications).

я добавил:

<dependency>
                  <groupId>javax.servlet</groupId>
                  <artifactId>javax.servlet-api</artifactId>
                 <scope>provided</scope>
            </dependency>,

как он жаловался.

теперь после всего этого он отлично компилируется и создает войну. Когда я скопировал эту войну в развертывание jboss, я вижу, что она успешно развернута на консоли. Но остальные api http://localhost:8080/demo/hello/World просто не работает и постоянно выкидывает ошибку браузер:

JBWEB000068: message /demo/hello/World
JBWEB000069: description JBWEB000124: The requested resource is not available.

что я делаю не так?

3 ответов


нашел в Справочник По Весенней Загрузке добавить ниже строку в приложение.свойства файла

server.servlet-path=/*

протестировал это в JBoss EAP 6.2 и работал нормально.


ответ здесь : Spring Java Config vs Jboss 7

по-видимому, " / "не работает на JBoss EAP 6.3 , но "/ * " работает. и они, кажется, исправили это с wildfly 8


вы упомянули JBoss 6 в тегах. Основываясь на моем опыте Spring Boot Автоконфигурирование и JBoss 6 (в частности) не идет. Если включено горячее развертывание или, возможно, другое условие, JBoss VFS выполняет агрессивное сканирование всех банок в файле war. Как только он начнет сканировать классы в модуле autoconfigure, он будет прерван из-за ошибки, похожей на ClassNotFoundException. Если вы используете Autoconfigure, одним из решений может быть размещение модулей spring в Контейнера Либ. Но это сделало бы развертывание громоздким. Я не видел такого поведения на JBoss 7 или Wildfly 8.