- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试调用此异常映射器以返回 404 未找到响应,但它一直返回 500 内部错误。 Jersey 版本是 2.22.1。下面的代码片段。感谢所有帮助。
谢谢。
异常映射器类。
package org.learn.rest.messengerdemo.exception;
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
public class DataNotFoundExceptionMapper implements ExceptionMapper<DataNotFoundException>{
@Override
public Response toResponse(DataNotFoundException ex) {
return Response.status(Response.Status.FORBIDDEN).build();
}
}
异常类。
包 org.learn.rest.messengerdemo.exception;
public class DataNotFoundException extends RuntimeException{
private static final long serialVersionUID = 2176642539344388961L;
public DataNotFoundException(String message)
{
super(message);
}
}
抛出服务类的方法。
public Message getMessage(long messageId) {
Message message = messages.get(messageId);
if(message == null)
{
throw new DataNotFoundException("Message with id " + messageId + " not found");
}
return message;
}
和资源类。
@GET
@Path("/{messageId}")
public Message getMessage(@PathParam("messageId") long messageId) {
return messageService.getMessage(messageId);
}
最佳答案
查看来自 previous question 的 web.xml
, 你有这个
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.learn.rest.messengerdemo.resources</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
这个 init-parm jersey.config.server.provider.packages
说的是 Jersey 应该扫描命名包以获取 @Path
注释资源类和 @Provider
注释提供者类并注册它们。
您只列出了资源包 org.learn.rest.messengerdemo.resources
,但您的 ExceptionMapper
位于不同的包中。默认行为是递归扫描,也意味着子包。因此,如果您改为列出 org.learn.rest.messengerdemo
,您将同时访问资源包 和 异常包。或者您可以列出两个包,用逗号或分号分隔。两种方法都行
<param-value>org.learn.rest.messengerdemo</param-value>
<!-- OR -->
<param-value>
org.learn.rest.messengerdemo.resources,
org.learn.rest.messengerdemo.exception
</param-value>
关于java - 未调用 Jersey ExceptionMapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33386225/
我如何注册一个包罗万象的 ExceptionMapper确实如此 不是 拦截 WebApplicationException哪个 Jersey 提供特殊处理? 更新 :我提交了此功能请求:http:/
抱歉我的英语不好。我正在使用 grizzly 和 jersey 构建 Web 应用程序。 我是这样实现的 ErrorModel errorModel = new ErrorModel(
我将 Jersey 用于 REST 网络服务。 每当我没有从服务层获得任何对象时,我都会通过抛出 NotFoundException(Package com.sun.jersey.api) 来处理所有
我的应用程序提供了一个 RESTful 接口(interface)来执行某些操作。我正在使用 ExceptionMapper 捕获 NoResultException 或 EntityNotFound
假设我有 3 个想要“捕获”的异常类: Jersey 的 WebApplicationException MyException 扩展了 RuntimeException 异常 我希望 WebAppl
我正在为 EJB 服务开发 REST-facade,这意味着它调用 EJB,将结果转换为 REST 调用者能够理解的表示形式,然后返回它(作为 json 或 xml)。所有这些都表现出色。但是 EJB
我的 Spring Boot + Jersey REST 服务无法按预期工作。 EmailExistsException 在 UserController 中抛出,但我只收到错误 500。一直都是。而
我正在抛出异常 MyCustomException从我的应用程序。 (EJB 层) 我在 Web 服务层中有一个异常映射器,如下所示 - package net.webservices; import
我正在尝试调用此异常映射器以返回 404 未找到响应,但它一直返回 500 内部错误。 Jersey 版本是 2.22.1。下面的代码片段。感谢所有帮助。 谢谢。 异常映射器类。 package or
我有一个ExceptionMapper,它是通用公共(public)库的一部分: @Provider public class GenericExceptionMapper implements Ex
我正在使用 Jersey 在 java 中做一个 Web 服务。我对 Jersey 的依赖是: /* JAX-RS Impl (Jersey) */ compile 'org.glassfish.je
问题Exception Handling/Mapping for a particular class让我想到了如何将 ExceptionMapper 注册到特定资源 Method 的问题。 我试过像
我正在尝试调用此异常映射器以返回 404 未找到响应,但它一直返回 500 内部错误。 Jersey 版本是 2.22.1。下面的代码片段。感谢所有帮助。 谢谢。 异常映射器类。 package or
在 Quarkus 中,异常映射器返回的实体似乎被包装在另一个实体中。 提供一个 JAX-RS 异常映射器,例如: @Provider public class WebhookExceptionMap
我有一个使用RESTeasy 2.0.1.GA在JAX-RS中使用ExceptionMapper的方案。一切正常。 我现在想使用RESTeasy的mock mechanism测试整个过程。不幸的是我的
我为特定对象制作了一个 RESTFUL-API 并使用 javax.validation.Constraints 进行验证,当我执行应用程序时它按预期工作并且 ExceptionMapper 类被正确
我有 REST Web 服务,我使用 Jersey Test、Mockito、Junit 对其进行测试。当 Web 服务方法成功执行时,我得到正确的响应。如果数据无效,则抛出自定义异常,必须由 Exc
我正在开发一个使用 Dropwizard 的应用程序,它具有 ExceptionMapper 的实现:https://github.com/dropwizard/dropwizard/blob/mas
我正在使用 Jersey 2.5.1 和 Jackson 2.2。用于构建 JSON Rest Web 服务。我也用 2 个 ExceptionMappers 启动并运行它,但对于“非 json”请求
我在应用程序中使用RestEasy,并且从ExceptionMapper接口(interface)实现了toResponse方法。 我的问题是:这个方法在海量请求的环境下会不会有问题(很多请求会导致抛
我是一名优秀的程序员,十分优秀!