Итак, здесь есть несколько проблем. Во-первых, вам не хватает фракции JAX-RS
Swarm. Это означает, что зависимости в вашем pom.xml
должны выглядеть следующим образом:
<dependencies>
<!-- Java EE 7 dependency -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!-- WildFly Swarm Fractions -->
<dependency>
<groupId>org.wildfly.swarm</groupId>
<artifactId>jaxrs</artifactId>
</dependency>
</dependencies>
Теперь вторая проблема. В 2018.4.1
версии Wildfly Swarm команда Swarm удалила автоматическое создание javax.ws.rs.core.Application
, которое требуется для стандартных приложений JAX-RS (для получения дополнительной информации см. этот блог ). Если вы попытаетесь запустить свой код в 2018.4.1
, вы получите предупреждение:
WFLYRS0015: не найдено декларации сервлета для приложения JAX-RS. В
demo.war либо предоставляет класс, который расширяет
javax.ws.rs.core.Application или объявите класс сервлета в web.xml.
А ваше приложение не работает. Таким образом, у вас есть два варианта решения проблемы . Во-первых, просто используйте 2018.3.1
, поскольку это делает автогенерацию. Однако это плохое решение, так как в будущем Swarm, вероятно, продолжит поведение релиза 2018.4.1
. Поэтому, чтобы исправить это, вам нужно добавить свой javax.ws.rs.core.Application
, который может выглядеть примерно так:
package hu.javacity.app.buildingsofcities.city.rest;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/")
public class RestApplication extends Application {
// intentionally empty
}
Это устанавливает ваш JAX-RS
путь на /
. Распространенный шаблон - использовать что-то вроде /rest
или /svc
, но сейчас это будет хорошо работать для вас.