我是编程新手,我正在尝试创建我的第一个 RESTfull API。我用 Apache Tomcat/8.5.37 创建了一个服务器,我使用了 jersey RESTfull web 服务。我的问题是类内容 (XML) 未使用路径 http://localhost:8080/JavaAPI/rest/hello 在 localhost:8080 上打印
我创建了一个 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>
这是当前 Jersey 库的截图:
预期的结果应该是:,嗨,它的 XML 将打印在 http://localhost:8080/JavaAPI/rest/hello 上我收到以下 404 错误: 类型:状态报告
消息:未找到
描述:源服务器未找到目标资源的当前表示或不愿透露存在的表示。
这可能不是重复问题的原因:首先,我已经复制/粘贴了他们的代码以及 jerseys 旧版本 1.x,但问题仍然存在。根据我的经验,我认为版本控制存在问题,因为我一直在使用 Tomcat 8.5,并且我还从服务器得到以下响应:
我遵循的指南是:https://www.youtube.com/watch?v=5jQSat1cKMo&t=782s&list=LL2fRfBs2m2v1wyy_kKt8E9w&index=2
最佳答案
尝试像这样更改 init-param 配置。
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>Test</param-value>
</init-param>
还要考虑更改包名称以遵循 Java 命名约定:
Packages: The prefix of a unique package name is always written in all-lowercase ASCII letters and should be one of the top-level domain names, like com, edu, gov, mil, net, org. Subsequent components of the package name vary according to an organisation’s own internal naming conventions.
例子:
com.sun.eng
com.apple.quicktime.v2
// java.lang packet in JDK
java.lang
问题也出在映射上。尝试检查
关于java - RESTful API 不使用 jersey framework 和 apache tomcat 服务器打印特定路径上的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386916/