Я пытаюсь выяснить, в чем проблема, создавая новый сервер Wildfly 8.2 с простым приложением restEasy 3.0.10.включение автоматического сканирования с помощью resteasy 3.0.10 с wildfly 8.2
Мое веб-приложение упрощено.
src/main/
java/my-package/
RootApplication.java
HomePageResource.java
webapp/
index.html
WEB-INF/
beans.xml
web.xml
web.xml и beans.xml выглядеть следующим образом
---- web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false">
</web-app>
---- beans.xml
<beans xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
</beans>
в RootApplication.java У меня есть
@ApplicationPath("/app")
public class RootApplication extends Application
{
private Set<Object> singletons = new HashSet<>();
public RootApplication()
{
singletons.add(new HomePageResource());
}
@Override
public Set<Object> getSingletons()
{
return singletons;
}
}
// ResourceProvider is a simple class hiding getResource and createStreamer
@Path("/")
public class HomePageResource extends ResourceProvider
{
private final static Logger logger = LoggerFactory.getLogger(HomePageResource.class);
@GET
@Produces(MediaType.TEXT_HTML)
public Response getHomePage()
{
final InputStream homePageResource = getResource("/static/view/home/home.html");
return Response.ok(createStreamer(homePageResource)).build();
}
}
который работает, но я никогда не указаны какие-либо классы ресурсов в Заявке RestEasy всегда мог сканировать контент WAR. И если я удалю все из RootApplication, вот так.
@ApplicationPath("/app")
public class RootApplication extends Application
{
}
В любом случае документация также говорит (https://docs.jboss.org/resteasy/docs/3.0.9.Final/userguide/html_single/)
Поскольку мы не используем отображение JAX-RS сервлета, мы должны определить класс приложения, который аннотированный с @ApplicationPath аннотацию. Если вы вернете пустой набор для классов и одиночек, ваша WAR будет отсканирована для ресурсов JAX-RS и ресурсов провайдера.
любые подсказки, что я могу сделать неправильно с этой простой настройкой ??? и еще один вопрос: я могу удалить beans.xml для использования guice DI, я понимаю, что эта проблема не имеет ничего общего с CDI/WELD.
мой pom.xml выглядит так
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-bom</artifactId>
<version>3.0.10</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>jaxrs-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
</dependency>
</dependencies>
Можете ли вы показать 'HomePageResource.java' тоже? – pWoz
уверен, я добавлю его на главный вопрос – kamiseq