RESTfull API不会使用jersey框架和apache tomact服务器在特定路径上打印内容

时间:2019-01-27 09:58:28

标签: 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>

这是当前球衣库的屏幕截图:

lib libcont

预期结果应为:嗨,其XML要打印在http://localhost:8080/JavaAPI/rest/hello上,并且出现以下404错误: 类型:状态报告

消息:找不到

说明:原始服务器找不到目标资源的当前表示,或者不愿意透露其存在。

为什么不能重复这个问题,原因:首先,我已经复制/粘贴了他们的代码以及较旧的1.x版球衣,但问题仍然存在。以我的经验,自从我一直在使用Tomcat 8.5以来,我相信版本管理存在问题,并且我还从服务器获得以下响应:

Tomcaterr Tomcaterrcont

我遵循的指南是:https://www.youtube.com/watch?v=5jQSat1cKMo&t=782s&list=LL2fRfBs2m2v1wyy_kKt8E9w&index=2

1 个答案:

答案 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

问题还在于映射。尝试检查

  

http://localhost:8080/JavaAPI/hello