我无法找到访问部署到wildfly的JAX-RS资源的路径。
耳朵pom:<parent>
<artifactId>jee-services</artifactId>
<groupId>org.mycompany</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<packaging>ear</packaging>
<modelVersion>4.0.0</modelVersion>
<artifactId>ear</artifactId>
<dependencies>
<dependency>
<groupId>org.mycompany</groupId>
<artifactId>ejb_book</artifactId>
<version>1.0-SNAPSHOT</version>
<type>ejb</type>
</dependency>
</dependencies>
ejb_book pom:
<parent>
<artifactId>jee-services</artifactId>
<groupId>org.mycompany</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>ejb</packaging>
<artifactId>ejb_book</artifactId>
应用程序配置
@ApplicationPath("/resources")
public class ApplicationConfig extends Application {
}
资源
@Stateless
@Path("/books")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class BookResource extends AbstractFacade<Book> {
@PersistenceContext
private EntityManager entityManager;
@GET
@Path("/getBooks")
public Book getBook() {
return new Book();
}
我认为问题在于我将ejb_book.jar打包到ear.ear(我收集所有其他ejb模块)
我试过了:
localhost:8080/ear/resources/books/getBooks
和许多其他组合,但没有一个有效。
应用程序可以很好地部署到WildFly服务器。
BTW:有没有一种工具可以帮助人们访问他们的JAX-RS资源?以IDE为例。所以我的问题不再是问题了。答案 0 :(得分:2)
根据JAX-RS 2.0规范, 2.3.2 Servlet
部分JAX-RS应用程序在.war文件中打包为Web应用程序。
由于您未将应用程序打包为WAR模块,并且您的EAR中没有WAR模块,因此您不会为您的(Web)应用程序提供上下文根。
这阻止您通过所需方式访问REST API:
http://localhost:8080/<context-root>/resources/books/getBooks
作为解决方案,您可以将整个应用程序打包为WAR,将应用程序类放在WEB-INF / classes或WEB-INF / lib中,将所需的库放在WEB-INF / lib中,或者可以保持使用你的EAR,增加了一个WAR模块。