приложение 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.