【发布时间】:2015-07-27 03:34:17
【问题描述】:
我是 RestFul API 的新手。我有一个使用 Maven 的示例项目。正在使用 Jboss 服务器进行部署。
问题是文件已部署,但当我尝试访问 URl 时显示 404 错误
网址:http://localhost:8080/RESTEasy/rest/RESTEasyHelloWorld/data
控制台没有错误
以下是我的文件:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.rest</groupId>
<artifactId>RESTEasy</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>JBoss repository</id>
<url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.0.4.Final</version>
</dependency>
</dependencies>
</project>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>RESTEasy</display-name>
<servlet-mapping>
<servlet-name>resteasy-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<!-- Auto scan REST service -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>
<!-- this should be the same URL pattern as the servlet-mapping property -->
<context-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/rest</param-value>
</context-param>
<listener>
<listener-class>
org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
</listener-class>
</listener>
<servlet>
<servlet-name>resteasy-servlet</servlet-name>
<servlet-class>
org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
</servlet-class>
</servlet>
</web-app>
Rest Java 文件:
package com.rest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/RESTEasyHelloWorld")
public class RESTEasyHelloWorldService {
@GET
@Path("/{pathParameter}")
public Response responseMsg( @PathParam("pathParameter") String pathParameter
) {
String response = "Hello from: " + pathParameter;
return Response.status(200).entity(response).build();
}
}
服务器日志:
08:51:54,288 INFO [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015876:
Starting deployment of "RESTEasy-0.0.1-SNAPSHOT.jar" (runtime-name: "RESTEasy-0.0.1-SNAPSHOT.jar")
08:51:54,300 INFO [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018565:
Replaced deployment "RESTEasy-0.0.1-SNAPSHOT.jar" with deployment "RESTEasy-0.0.1-SNAPSHOT.jar"
【问题讨论】:
-
1) 应用需要部署在一个战争中(使用正确的 webapp 结构)而不是一个 jar。 2)如果不更改最终名称,则战争将具有
-0.0.1-SNAPSHOT后缀,路径中将需要该后缀。您可以在 pom 中将<finalName>${project.artifactId}</finalName>添加到<build>中,这样只会使 war 成为项目名称。 -
我想这就是问题所在。现在可以正常工作了,谢谢
标签: rest maven jakarta-ee