我在编程方面还很新,我正在尝试创建我的第一个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>
这是当前球衣库的屏幕截图:
预期结果应为:嗨,其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
答案 0 :(得分:0)
尝试像这样更改init-param配置。
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>Test</param-value>
</init-param>
还可以考虑更改程序包名称以遵循Java命名约定:
包装: 唯一程序包名称的前缀始终以全小写ASCII字母书写,并且应该是顶级域名之一,例如com,edu,gov,mil,net,org。 包名称的后续组成部分会根据组织内部的内部命名约定而有所不同。
示例:
com.sun.eng
com.apple.quicktime.v2
// java.lang packet in JDK
java.lang
问题还在于映射。尝试检查