如何将 Jersey ExceptionMapper 与 Google Guice 结合使用?

2024-04-14

我正在使用 Jersey Guice 并且需要配置自定义ExceptionMapper

我的模块如下所示:

public final class MyJerseyModule extends JerseyServletModule
{
   @Override
   protected void configureServlets()
   {
      ...
      filter("/*").through(GuiceContainer.class);
      ...
   }
}

这是我的ExceptionMapper:

import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;

public class MyExceptionMapper implements ExceptionMapper<MyException>
{
   @Override
   public Response toResponse(final MyException exception)
   {
      return Response.status(Status.NOT_FOUND).entity(exception.getMessage()).build();
   }
}

您的 ExceptionMapper 必须注释为@Provider并成为单身人士。

import com.google.inject.Singleton;

import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;

@Provider
@Singleton
public class MyExceptionMapper implements ExceptionMapper<MyException>
{
   @Override
   public Response toResponse(final MyException exception)
   {
      return Response.status(Status.NOT_FOUND).entity(exception.getMessage()).build();
   }
}

然后只需绑定ExceptionMapper在同一 Guice 模块之一中Injector你在哪里JerseyServletModule,Jersey Guice 会自动找到它。

import com.google.inject.AbstractModule;

public class MyModule extends AbstractModule
{
   @Override
   protected void configure()
   {
      ...
      bind(MyExceptionMapper.class);
      ...
   }
}

也可以直接绑定在JerseyServletModule如果你想:

public final class MyJerseyModule extends JerseyServletModule
{
   @Override
   protected void configureServlets()
   {
      ...
      filter("/*").through(GuiceContainer.class);
      bind(MyExceptionMapper.class);
      ...
   }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Jersey ExceptionMapper 与 Google Guice 结合使用? 的相关文章

随机推荐

  • 网页中的复选框 - 如何使它们更大?

    大多数浏览器中呈现的标准复选框都非常小 即使使用较大的字体也不会增加大小 显示较大复选框的最佳 独立于浏览器的方式是什么 如果这可以帮助任何人 这里有一个简单的 CSS 作为起点 将其变成一个基本的圆角正方形 大到足以容纳拇指 并具有切换的
  • Windows Phone 8 Facebook 身份验证

    我正在开发一个适用于 Windows Phone 8 的应用程序 我想让用户可以使用他们的 Facebook 帐户登录 这样他们就不必在我的应用程序上创建帐户 我看到了 Facebook SDK for NET 并决定使用它 因为它似乎非常
  • Axios:收到两个请求 OPTIONS 和 POST

    我正在尝试发布数据 一切正常 但我不知道为什么我收到两个请求OPTIONS POST POST OPTIONS 这是代码 const url http rest learncode academy api johnbob myusers e
  • 重叠圆的组合面积

    我最近遇到一个问题 我有四个圆 中点和半径 并且必须计算这些圆的并集面积 示例图片 对于两个圆来说 这很容易 我可以计算不在三角形内的每个圆圈面积的分数 然后计算三角形的面积 但是当有两个以上的圆圈时 我可以使用一种聪明的算法吗 找到外周上
  • Java“相当于”CSLA

    我读过该书的好几章CSLA http www lhotka net cslanet 我喜欢这本书 但最近我更倾向于 Java 所以我正在寻找基于 Java 的等效书 有谁知道任何接近的东西Java 中的 CSLA 我还愿意将其他现有技术很好
  • 一个 RDD 中的值与另一个 RDD 中的值部分/完全匹配

    我有两个 RDD 其中第一个 RDD 具有以下形式的记录 RDD1 1 2017 2 13 ABX 3354 gsfette 2 2017 3 18 TYET 3423 asdsad 3 2017 2 09 TYET 3423 rewriu
  • WPF滚动和焦点改变问题

    我的 WPF 应用程序滚动时遇到问题 这是交易 我的用户界面如下 我的应用程序的作用是充当许多应用程序的中心枢纽并启动它们 管理员可以启动其他用户记录的转储 因此 我有一个ListView 显示应用程序列表 如果需要 可以滚动 我定义了一个
  • Android 地图 v2 自定义标记的缩放位置不正确

    我知道这个问题以前已经讨论过 但我实际上找不到解决方案 我正在为我的标记添加自定义图标 markerUserLocation mMap addMarker new MarkerOptions position new LatLng poin
  • 为什么我无法在 Visual Studio 中整合项目 sdk 版本?

    首先 我收到此构建错误 但仅在某些机器上 错误 CS1705 程序集 与标识 版本 1 0 0 0 文化 中立 PublicKeyToken null 使用 System Net Http 版本 4 1 1 1 Culture neutra
  • 在功能测试方法中运行 for 循环可以吗?

    在测试方法中运行 for 循环可以 概念上 吗 我想测试控制器中的一系列参数值 以确定不同的输入是否返回正确的值 test logged in user add something 0 qty do app Factory create a
  • 将 PHP 变量传递到 MySQL

    我在 PHP 中有一个函数 可以将值插入到 MYSQL 表中 function insertRow db new table ID Partner Merchant insert INSERT INTO new table VALUES n
  • 如何从 Visual Studio 调试器和立即窗口中运行 Windbg/dbeng.dll 命令?

    我在 Bart de Smet 的视频演讲中看到 他通过将 Windbg 命令输入到即时窗口在 Visual Studio 中 当在 Visual Studio 调试器内以调试模式运行项目时 所以 我想自己尝试一下 这就是我所做的 我去了项
  • Laravel 拒绝在 iFrame 中显示为“'X-Frame-Options' to 'SAMEORIGIN'”。

    因此 我在 Laravel 中构建了一个表单并在外部托管 但我想在 HTML 页面中显示它 但 X Frame Options 存在问题 确切的错误消息是 Refused to display url in a frame because
  • 注意使用 nusoap 进行数组到字符串的转换

    我正在使用 nosoap 用 PHP 开发一个 Web 服务 这是我的文件 webservice php
  • 使用 gekko 进行优化时返回“@Error:未找到解决方案”

    我正在尝试完成长达一年的电池优化问题 8760 小时 ind 1 和 ind 2 是长度为8760的列表 包含0 1 一年中的某些时间可能会获得额外的收入 因此这些指标列表用于区分这些时间 进一步用于最大化函数 m Gekko remote
  • MPI mpirun execvp 错误:没有这样的文件或目录

    我正在尝试使用 MPI 运行 C 代码 BCparallel cpp 编译代码 mpic BCparallel cpp o BCparallel 很成功 但是当我通过这条线时 mpiexec np 4 BCparallel file txt
  • logger.debug 未写入 Rails 中的日志文件

    我正在尝试在 Rails 中调试模型 因此我使用以下代码 logger debug asasd 但是 我正在追踪日志文件development log 但我没有看到它添加到该文件中 我确信这个模块正在运行 我已经确认运行时错误正在记录到该文
  • C# 导入 Adob​​e Illustrator (.AI) 文件渲染为位图?

    任何人都知道如何加载 AI 文件 Adobe Illustrator 然后将矢量光栅化 渲染为位图 以便我可以生成例如 是 JPG 还是 PNG 如果可能的话 我想生成缩略图 渲染带有PNG透明背景的大版本 当然 如果您知道 AI 的规格
  • PHP date() 外语 - 例如3 月 25 日 Aoû 09 [重复]

    这个问题在这里已经有答案了 我有一个脚本需要向国际观众显示日期数据 例如 于 2009 年 8 月 25 日星期二提交 有没有一种更简单 更干净的方法可以将其转换为法语 等 等效项 Mar 25 Ao 09 而不是 设置常数LANG and
  • 如何将 Jersey ExceptionMapper 与 Google Guice 结合使用?

    我正在使用 Jersey Guice 并且需要配置自定义ExceptionMapper 我的模块如下所示 public final class MyJerseyModule extends JerseyServletModule Overr