Tomcat 上的 Jersey REST 服务出现 404 错误

2023-12-13

我已经查看了有关该主题的所有可用答案,要么我面临一个完全不同的问题,要么我错过了一些重要的事情。

服务等级:

package org.test;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

//http://localhost:8080/JunkWeb/rest/TestRestService/callService
@Path("/TestRestService")
public class TestRestService {

    @GET
    @Path("/callService")
    @Produces(MediaType.TEXT_PLAIN)
    public String callService(){return "from Rest Service";}

}//class closing

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>JunkWeb</display-name>

  <servlet>
        <servlet-name>jersey-serlvet</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>org.test</param-value>
    </init-param>
    <!-- <init-param>
      <param-name>jersey.api.json.POJOMappingFeature</param-name>
      <param-value>true</param-value>
    </init-param> -->
    <load-on-startup>1</load-on-startup>
  </servlet>
   <servlet-mapping>
        <servlet-name>jersey-serlvet</servlet-name>
        <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>
</web-app>

The URL:

http://localhost:8080/JunkWeb/rest/TestRestService/callService

enter image description here

应该有效,但事实并非如此。任何帮助将非常感激。

我正在使用 Jersey 2.17 和 Tomcat 8.0.20


“我正在使用 Jersey 2.17”

2.17中不存在这个

com.sun.jersey.spi.container.servlet.ServletContainer

我很惊讶你没有遇到类未找到异常。这意味着您可能正在混合版本。或者您可能会遇到例外而没有告诉我们。无论如何,正确的ServletContainer应该

org.glassfish.jersey.servlet.ServletContainer

接下来你应该做的(如果有的话)是删除其包开头的所有(jar)com.sun。这些是 Jersey 1 罐子。在 Jersey 2 中,包命名模式更改为org.glassfish.xxx如果您想让生活变得轻松,请使用 Maven,只需向整个项目添加一个依赖项,它就会引入其余所有内容。

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.17</version>
</dependency>

另外,这在泽西岛二号中也不存在

jersey.api.json.POJOMappingFeature

在 Jersey 2 中,只需添加此 Maven 依赖项,一切都会变得美好。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-json-jackson</artifactId>
    <version>2.17</version>
</dependency>

如果您不使用 Maven,请下载 RI 包here。打开所有文件夹并将每个 jar 添加到您的项目中。这是为了核心支持。

如需 JSON 支持,请下载this, 也所有这些。您可以在同一网站上搜索它们。这样做应该无需额外配置即可工作。或者,您可以只下载第二个链接中的包,然后将包添加到 web.xml 中,如链接中所示。

但为了让它正常工作,由于您的代码不生成或消耗任何 JSON,您只需先运行核心,然后一旦它开始正常工作,您就可以处理 JSON 支持。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tomcat 上的 Jersey REST 服务出现 404 错误 的相关文章

随机推荐

  • MATLAB:在 RGB 图像上应用透明蒙版并与另一个图像混合

    我有 2 张图像 前景和背景 前景是一个范围从 50到300的数字矩阵 我通过imagesc显示它 即这不是 RGB 图像 背景是 RGB 图像 我想首先在前景上应用透明蒙版来改变它的外观 这很容易通过使用 altered foregrou
  • Android:如何防止软键盘将我的视图向上推?

    我的应用程序底部有一个垂直滑动抽屉 当软键盘打开时 它会将抽屉的标签向上推 使其位于键盘顶部 我实际上希望它保留在屏幕底部 在显示键盘时隐藏 还有其他人遇到这个问题吗 知道如何解决吗 您只需切换您的 ActivitywindowSoftIn
  • WP7背景音频资源不再可用

    我在用着BackgroundAudioPlayer用于我的 Windows Phone 7 音乐和视频应用程序 播放一些音乐后 我使用MediaPlayerLauncher 然后按 返回 返回到我的应用程序 每当我使用时Background
  • 如何选择模板标签内的元素? [复制]

    这个问题在这里已经有答案了
  • 根据另一个查找/映射数组替换数组中的键

    我有一个以下形式的关联数组key gt value其中 key 是一个数值 但它不是连续的数值 键实际上是一个 ID 号 值是一个计数 这对于大多数情况来说都很好 但是我想要一个函数来获取人类可读的数组名称并将其用作键 而不更改值 我没有看
  • 如何在 Matplotlib 中绘制没有线和点的误差条图?

    我目前正在使用以下代码来绘制误差条图 plt errorbar log I mean log V2 mean xerr yerr 然而 最终结果显示每个误差条交点的中心有一个圆形点 如何按照科学工作的要求只绘制误差线而不绘制中心点 use
  • 空 XmlHttp 响应文本(仅限 Google Chrome)

    我的 Google Chrome 聊天脚本有问题 有时 响应文本是空的 直到您重新加载页面 但有时它运行良好 它每秒打开一个 xmlhttp 连接 如果第一个连接好 那么后面的连接也好 在 Firefox 中 它总是好的 var url t
  • 了解 Javascript 回调参数

    关于回调的一些问题 使用一些示例代码 function uploadPhoto params var win function response console log Success console log Response respon
  • 有没有办法从控制器获取计划任务作为数组? [复制]

    这个问题在这里已经有答案了 我想从控制器获取计划任务列表 一些套餐 articles乃至堆栈溢出解释如何从命令显示它 但我没有找到如何在没有命令的情况下执行此操作 我的目标是获取一系列计划任务及其日期和描述 有没有办法从控制器获取计划任务作
  • 如何替换字符串中的括号

    我有一个包含标记的字符串列表 令牌是 ARG 令牌名称 我还有令牌的哈希图 其中键是令牌 值是我想要替换令牌的值 当我使用 replaceAll 方法时出现错误 java util regex PatternSyntaxException
  • mysql_real_escape_string() 无法建立到服务器的链接

    当我尝试使用 mysql real escape string 时出现此错误 Access denied for user ODBC localhost using password NO 我不明白为什么我必须连接到数据库来检查这些值是否可
  • 将 JSF 与 Spring 集成

    我还没有实现任何代码 我仍在研究新应用程序的整体架构 这将是我第一次使用JSF Spring 我需要将 Web 服务放在 Spring 服务 bean 业务逻辑层 前面 因为这些 bean 可以被表示层之外的其他应用程序访问 在为应用程序定
  • Scala 逆变和协变

    我正在研究 scala 的类型系统 发现了一个奇怪的情况 我有充分的理由相信 我不懂协变和协变 这是我的问题案例 我有两个类 Point 和 ColorPoint 它是 Point 的子类 class Point val x Int val
  • jQuery UI 按钮未“取消单击”

    http jqueryui com demos button default它们使用起来非常简单 但由于某种原因 我的按钮没有 取消点击 也就是说 在我单击按钮后 它保持其悬停样式 如果我将其 onClick 函数设置为仅执行一些简单的操作
  • 有没有办法检索 Dialogflow 中的对话历史记录?

    有没有办法获得用户和代理之间的完整对话 与我通过单击历史标签获得的结果非常相似 但是以编程方式获得 重点是将用户和代理之间的交互保存为文本 提前谢谢各位了 没有 API 可以直接从 Dialogflow 检索历史记录 但您可以做的是启用日志
  • 在python 2.7中同时运行脚本多次

    您好 我正在尝试多次运行脚本 但根据我的理解 希望这同时发生 我将一起使用子进程和线程 但是 当我运行它时 它看起来仍然是按顺序执行的 有人可以帮助我 以便我可以让它一遍又一遍地运行相同的脚本 但同时 它实际上有效但速度很慢吗 编辑忘记了最
  • 在 UIWebView 中显示 .rtf 文件

    我正在尝试显示为我的服务器下载的 rft 文件 我首先使用 UITextView 但我可以看到文本 但也显示了很多编码和与颜色和格式相关的奇怪字符 不管怎样 在这里搜索我发现 UITextView 无法正确显示 rtf 文本 因此 我继续尝
  • 如何在 R 中以美元格式设置条形图标签的格式?

    希望在 x 轴上的标签和条形图中的数字上添加美元符号 下面是我的代码和图表 YTD bar lt ggplot TYSales LYSales aes x as character FSCL YR y SALES geom bar stat
  • 如何在 Nuxt.js 中的内联样式中使用背景图像

    我有一个 vue我想在其中使用内联样式的文件 img src static img info production pic4 jpg class t22 a href page fresco art class btn t23 First
  • Tomcat 上的 Jersey REST 服务出现 404 错误

    我已经查看了有关该主题的所有可用答案 要么我面临一个完全不同的问题 要么我错过了一些重要的事情 服务等级 package org test import javax ws rs GET import javax ws rs Path imp