【发布时间】:2019-06-20 13:34:39
【问题描述】:
我是编程新手,我正在尝试创建我的第一个 RESTfull API。我使用 Apache Tomcat/8.5.37 创建了一个服务器,并使用了 jersey RESTfull Web 服务。我的问题是没有使用路径http://localhost:8080/JavaAPI/rest/hello在 localhost:8080 上打印类内容(XML)
我创建了一个 tomcat 服务器,并在版本控制问题的情况下同时使用了 JAX-RS 2.0 / Jersey 2.25.x 和 JAX-RS 2.1 / Jersey 2.26+,但它们都不起作用。我只是想不出可能是什么问题。
package test;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Application;
@Path("/hello")
public class Hello {
@GET
@Produces(MediaType.TEXT_XML)
public String sayHello(){
String resource ="<? xml version='1.0' ?>" +
"<hello>, Hi, its XML</hello>";
return resource;
}
}
这是REST服务文件的配置:
<display-name>JavaAPI</display-name>
<servlet>
<servlet-name>JAVA API</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>test</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>JAVA API</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
这是当前球衣库的截图:
预期的结果应该是:,嗨,它的 XML 将打印在 http://localhost:8080/JavaAPI/rest/hello 上,我收到以下 404 错误: 类型:状态报告
消息:未找到
描述:源服务器没有找到目标资源的当前表示或不愿意透露存在的表示。
这可能不会重复的原因问题:首先,我已经复制/粘贴了他们的代码以及球衣旧版本 1.x,但问题仍然存在。根据我的经验,我认为版本控制存在问题,因为我一直在使用 Tomcat 8.5,并且我还从服务器收到以下响应:
我遵循的指南是:https://www.youtube.com/watch?v=5jQSat1cKMo&t=782s&list=LL2fRfBs2m2v1wyy_kKt8E9w&index=2
【问题讨论】:
-
您的 REST 服务是如何配置的?您确定基本路径吗?
-
刚刚更新。我相信
JAVA API 和/rest/* 的路径很好 -
能否提供服务器启动的完整日志输出?你在听导游吗?
-
1) 您不需要扩展应用程序。 2) 您使用了错误的 init-param 名称。您正在使用的是 Jersey 1.x。您需要使用的是
jersey.config.server.provider.packages。这是 Jersey 2.x 的属性。这应该对你有用。
标签: java eclipse tomcat jersey