问题标签 [exceptionmapper]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
68 浏览

javascript - 出错时,无法在 XMLHttpRequest 响应中检索 ResponseBuilder 实体

在我的 JAXRS 应用程序中,当许可证无效时,我会发出 LicenseKeyException。该异常被 ExceptionMapper 捕获,该异常映射器通过 403 状态代码响应调用者,实体持有一些我想随状态一起发送的额外信息。

但是在我的 javascript 客户端上,在 XMLHttpRequest 中,我只得到状态,而不是响应。

Java 代码

Javascript代码

当状态不是 200(我尝试了 500 和 403)时,xhr 对象中的响应字段为空。我期待找到我认为我在 Java 代码中放入的实体。

我做错了什么?

0 投票
0 回答
203 浏览

java - Javax 异常映射器只抛出 500

我有一个用 javax 实现的 REST 接口来登录用户。

此外,还有一个Exception Mapper将抛出的异常映射到特定的 HTTP 响应。

无论我抛出什么错误以及我在映射器类中定义什么状态代码,服务器总是只响应 500 内部服务器错误而不是定义的 409。有人知道我在这里缺少什么吗?提前致谢。

0 投票
2 回答
408 浏览

tomcat - 使用 ExceptionMapper 自定义 HTTP 原因短语

我已经定义了以下异常映射器来处理自定义HttpCustomException

当在代码中抛出 a时,我可以在 catalina.out 中看到方法HttpCustomNotAuthorizedException末尾定义的日志消息。toResponse因此,在请求处理期间调用了 HttpCustomExceptionMapper 类。但是,在最终响应中,我在客户端中看到,我只看到标准Not Authorized消息,而不是我在响应中设置的自定义消息。

为什么会这样?

0 投票
1 回答
1503 浏览

java - JAX-RS(球衣实现)ExceptionMapper没有捕获 ConstraintViolationException

我有一个ExceptionMapperas a@Provider来处理我的所有异常。

所以很明显,我的类实现了ExceptionMapper<Throwable>,我们知道,所有异常都Throwable以某种方式扩展。

现在我使用 jax-rs@NotNull检查我的资源输入值是否不为空,并且通过一些搜索,我意识到ConstraintViolationException当带注释的字段为空时它会抛出。

所以我尝试在我的 ExceptionMapper 中处理它并添加一些细节来响应(添加一些自定义 json 模型),如下所示:

问题是这不起作用,但如果我要创建另一个ExceptionMapper<ConstraintViolationException>在那里实现和处理它的异常映射器提供程序,它可以正常工作。

正如我之前所说(并且也检查过)所有异常都Throwable以某种方式从类扩展,所以我错过了什么以及为什么它不起作用?

……

没有用,我的意思是它忽略了我的映射器(从 实现的那个ExceptionMapper<Throwable>)并且具有正常行为,即返回状态代码 400 没有响应有效负载,就像根本没有映射器一样

0 投票
0 回答
109 浏览

java - Jersey Web 服务 ExceptionMapper Oracle EPM HFMException

我使用标准 Oracle EPM Java API 之一创建了一个 Web 服务(在 Tomcat 服务器上运行),用于提取 HFM 元数据。当 API 中出现错误时,它会抛出一个 HFM 异常,它是 java 异常类的子类。我想在错误到达 Tomcat 服务器之前捕获错误,并能够显示来自 HFM 的正确消息。我为 HFMException 创建了一个 ExceptionMapper,但没有捕获错误。我检查了 WEB.XML 以确保创建 ExceptionMapper 的包在其中,并且看起来没问题。

以下是最初的 HFM 错误:来自 Tomcat 服务器的错误 (Eclipse)

截屏

这是我为处理 HFM 异常而创建的 ExceptionMapper(我还为 RegistryException 创建了一个)

HFMExceptionMapper 类

截屏.

让 ExceptionMapper 工作还需要什么。

谢谢

Web.xml

我已经使用 ResourceConfig 重写了 Web 服务,因此避免使用 WEB.XML。我已经为来自 HFM ( HFMException / RegistryException ) 的以下第 3 方异常创建了 ExceptionMapper 类,并且还创建了一个 GeneralExceptionMapper。我已经在我的 ResourceConfig 类中注册了这些类,现在 GeneralExceptionMapper 正在工作,但没有更具体的基于 HFM 的 Excpetions。

0 投票
0 回答
138 浏览

guice - RestEasy ExceptionMapper 无法映射在过滤器级别引发的异常

ExceptionMapper 实现适用于在我的代码的控制器级别引发的异常。但是,在 api 调用之前和之后会执行一些身份验证过滤器。ExceptionMapper 未映射在过滤器级别引发的异常。因此,我的 UI 响应具有异常的完整堆栈跟踪。因此可能有两种解决方案:
1.是否有任何配置,以便异常映射器可以映射在过滤器级别引发的异常
2.当在过滤器级别引发异常时,是否有任何优雅的方法来删除堆栈跟踪。

使用 RestEasy 3.6.2 和 Google Guice 作为 DI 框架。

@Provider
@Singleton
public class MyExceptionMapper implements ExceptionMapper<Throwable> { //implementation for mapper }

0 投票
0 回答
302 浏览

java - 返回在 Glassfish 5 和 Jersey 2.27 上的响应过滤器中引发的自定义异常

我有一个带有 jersey 2.27 服务器应用程序的 glassfish 5,它有一个自定义响应过滤器,在某些情况下会引发自定义业务异常。

响应过滤器如下所示:

异常和异常映射器的定义如下:

一个请求通过端点,然后当它到达自定义响应过滤器时,它会抛出上面的自定义异常。

异常由 jersey 框架捕获和处理。使用异常映射器将其转换为响应。

我的问题是响应没有返回给客户端,而是调用了一个processResponse(response)方法,再次调用所有响应过滤器。这基本上再次抛出相同的错误,女巫被捕获并包装到 Internal Server Error中。

您可以看到下面的球衣框架代码以及我这边的一些评论。

我的问题是如何从响应过滤器中抛出的自定义异常返回响应?

谢谢!

0 投票
0 回答
126 浏览

java - Jersey 没有捕获注入异常

在我的 Jersey / JAX-RS 资源中,我正在注入一个标头参数:

我注册了一个 NotAuthorizedExceptionMapper 来处理异常,它工作正常。它捕获异常,按照我想要的方式记录它,然后返回一个 Response 对象。

问题是 Jersey / HK2 对此不满意。它坚持记录完整的堆栈跟踪:

其余的,根据评论:

这是我的异常映射器代码:

HK2 不应该这样做。异常已被处理。我该如何解决?

0 投票
2 回答
65 浏览

java - Java:当抛出异常并使用 ExceptionMapper 时,客户端会收到什么 REST 响应?

我试图了解 ExceptionMapper 的工作原理。

假设我定义了一个 REST 服务,它返回扩展 BaseResponse 的 XYZResponse。我还定义了一个 ExceptionMapper,它返回一个扩展 BaseResponse 的 FailureResponse。

如果发生异常,客户端会收到什么响应?

客户端不应该能够期望总是得到一个 XYZResponse,因为它是在 REST 方法的签名中定义的?如果发生异常,客户端会收到一个 FailureResponse 吗?因此,客户端只能依赖始终接收 BaseResponse 吗?

更新

我测试过:

结果:

因此,FailureResponse 似乎从未收到过。那么 FailureResponse 有什么用呢?应该收到吗?结果是否意味着 ExceptionWrapper 设置不正确?

0 投票
0 回答
66 浏览

java - 我可以直接调用 Dropwizard/Jersey 异常映射吗?

是否可以直接调用球衣异常映射器?

我们有一个 Dropwizard REST 应用程序,我们需要添加一个非 REST 接口。
当服务抛出异常时,我们会隐式调用大量异常映射器。
我们想在非 REST 代码中调用相同的异常映射器,因为它们映射到应用程序错误代码和消息以及最终的 http 响应代码。

我们找到org.glassfish.jersey.internal.ExceptionMapperFactory了,但它位于“内部”包中。

有没有我们可以调用的接口来映射异常?