java - RESTful API 不使用 jersey framework 和 apache tomcat 服务器打印特定路径上的内容

标签 java eclipse tomcat jersey

我是编程新手,我正在尝试创建我的第一个 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 库的截图:

lib libcont

预期的结果应该是:,嗨,它的 XML 将打印在 http://localhost:8080/JavaAPI/rest/hello 上我收到以下 404 错误: 类型:状态报告

消息:未找到

描述:源服务器未找到目标资源的当前表示或不愿透露存在的表示。

这可能不是重复问题的原因:首先,我已经复制/粘贴了他们的代码以及 jerseys 旧版本 1.x,但问题仍然存在。根据我的经验,我认为版本控制存在问题,因为我一直在使用 Tomcat 8.5,并且我还从服务器得到以下响应:

Tomcaterr Tomcaterrcont

我遵循的指南是: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

问题也出在映射上。尝试检查

http://localhost:8080/JavaAPI/hello

关于java - RESTful API 不使用 jersey framework 和 apache tomcat 服务器打印特定路径上的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54386916/

相关文章:

java - Spring RestTemplate 接收 sun.security.validator.ValidatorException : PKIX path building failed:

java - 在java中加载的类和字段顺序是什么?

java - Tomcat 7 + MyFaces 2.1 : java. security.NoSuchAlgorithmException

java - web项目的eclipse-lib问题

java - 诊断 android 3.0 中不需要的 onPause

java - IntelliJ 与 Eclipse 相比有哪些优势?

java - 在 Eclipse 4 (RCP/SWT/OSGi) 应用程序中包含 log4j 的正确方法

eclipse - 如何离线安装 Subversive

java - Java Cookie.setMaxAge(0) 的行为取决于实现还是有规范?

java.lang.NoSuchMethodError : javax. ws.rs.core.Application.getProperties()Ljava/util/Map;将 jersey ws 部署到 Weblogic 时