当前位置: 首页 > 知识库问答 >
问题:

为什么我的例外形象会被扔进泽西/灰熊?

颛孙钱青
2023-03-14

目前我在灰熊2.3.16和泽西2.14工作。我试图得到一个自定义异常处理的服务器和返回到客户端。相反,我似乎得到了通用的灰熊错误,即使正确的代码似乎被调用。

这是筛选器方法(具有“@Provider”装饰的类的一部分)。

@Override
public void filter(ContainerRequestContext context) throws IOException 
{
    throw new MappableException(
        new CustomAuthenticationException(
            "Custom Error message"));
}

下面是整个ExceptionMapper实现:

@Provider
public class CustomAuthenticationExceptionMapper
    implements ExceptionMapper<CustomAuthenticationException>
{
    public Response toResponse(CustomAuthenticationException e)
    {
        return Response.status(Status.UNAUTHORIZED.getStatusCode()).
                header("WWW-Authenticate", "Basic realm=\"Custom\"").
                type("text/plain").entity(e.getMessage()).build();
    }
}

下面是我如何得到回复并阅读的:

response = invocationBuilder.method(requestMethod.toString(), Response.class);
System.out.println(response.readEntity(String.class));

当我得到实体时,它是来自Grizzly的HTML,而不是我的自定义消息。

这是调用toResponse之前的堆栈跟踪-我可以验证代码是否被调用,但看起来Jersey或Grizzly只是在丢弃它,并最终被默认的Grizzly消息替换。

at org.glassfish.jersey.server.ServerRuntime$Responder.mapException(ServerRuntime.java:528)
    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:409)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:277)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1030)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:377)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.glassfish.grizzly.servlet.FilterChainImpl.doFilter(FilterChainImpl.java:147)
    at org.glassfish.grizzly.servlet.FilterChainImpl.invokeFilterChain(FilterChainImpl.java:106)
    at org.glassfish.grizzly.servlet.ServletHandler.doServletService(ServletHandler.java:221)
    at org.glassfish.grizzly.servlet.ServletHandler.service(ServletHandler.java:169)
    at org.glassfish.grizzly.http.server.HttpHandler$1.run(HttpHandler.java:219)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
    at java.lang.Thread.run(Unknown Source)

我不确定还有哪些部分是相关的,但可以根据需要提供。

共有1个答案

戚阳
2023-03-14

我需要添加Maven的jersey-grizzly-connector.jar。

 类似资料:
  • 我正在使用quickstart原型构建一个Jersey Moxy服务。我的代码运行良好,我可以得到一些JSON返回。然而,在我开发的过程中,如果我犯了一个错误,比如说请求处理程序有一个不支持的类型,我将得到一个空的500响应,这使得调试变得困难。例如,如果我用@XmlElementRef错误地修饰了一个属性,我将得到如下响应: 服务器将表现得好像什么都没发生一样: 我尝试使用日志配置文件: 这产生

  • 在Java理论上,您只能抛出。 这是语言允许的,并在类加载期间进行检查。但是如果您禁用类检查 然后,您可以运行一个抛出任何类(不是从派生的)的类(示例) 为什么? 为什么要这样设计...意味着一个允许抛出对象的虚拟机和一个必须过滤掉错误代码的验证器。好像有些代码可能是错误的。这不是代码,这是设计! 为什么?

  • 问题内容: 请帮忙。将来自扫描仪的提示显示到控制台后,出现此错误: 问题是来自printf吗?我检查了格式,它看起来正确。 这是程序: 问题答案: 答:因为您的格式说明符与方法中使用的输入参数不匹配。 使用而不是将值用作格式说明符 另外需要额外的逃脱角色 最后,删除不必要的点字符 阅读:Formatter javadoc

  • 问题内容: 我已经在这个程序上工作了一段时间了,我的大脑被炸了。我可以向其他人寻求帮助。 我正在尝试制作一个程序来逐行读取文本文件,并且将每一行都制成一个,以便可以访问每个令牌。我究竟做错了什么? 我要戳一下眼球。我遇到了三个错误: 我究竟做错了什么? 问题答案: 在大多数情况下,当您使用Java使用I / O时,您必须处理IOException,这可能在您读/写甚至关闭流时随时发生。 您必须将敏

  • 我已经设法在Jersey,HK2和一个普通的GrizzlyServer中设置了我自己的服务类的注入(到资源类中)。(基本上遵循了这个例子。) 我现在很好奇将JPA EntityManager注入我的资源类中的最佳方法是什么?(我目前正在考虑一个请求作为一个工作单元)。我目前正在研究的一个选项是以以下方式使用: null (我不想仅仅为了覆盖这个用例而依赖于重量级容器或额外的依赖注入库。)

  • 我正在尝试运行一个使用SimpleTransformersRoberta模型进行分类的服务。推断脚本/函数本身在测试时按预期工作。当我将其与FastAPI一起使用时,它会关闭服务器。 错误: 推理脚本: 更新:试用了flask,服务正在运行,但在flask顶部添加uvicorn时,它陷入了重启循环。