java - 从 Jersey RESTful Web 服务中抛出信息性错误消息

标签 java rest glassfish jersey jax-rs

我有一个 RESTful Web 服务,它执行一些 IO 和数据库 Activity 以返回结果。

有一些我希望看到的Exceptions,即因为未设置预期变量或我的数据库不再存在等而抛出的异常......

但是,当我抛出这些异常时,它们会被捕获并包装在 HTTP 500(内部服务器错误) 异常中,这就是客户端得到的(与根异常相反)。

我想在这里看到我的异常,而不是必须查看应用程序服务器日志。

最佳答案

你可以实现一个 ExceptionMapper 来返回你想要的任何东西。因此,例如,它可以将带有堆栈跟踪的整个异常放入响应中。

这是您在客户端想要的吗?我不确定。
客户端重建异常并重新抛出它可能是一项非常困难的工作。

此外,它非常不安全,因为堆栈跟踪会将服务器的内部代码暴露给客户端。

我建议您声明一些对客户端有意义并且您想公开的服务器错误代码。示例:

  • 1000 - 连接数据库失败。
  • 2000 - 其他

因此对于特定的异常,在 ExceptionMapper 中你可以将服务器异常映射到错误代码,然后在客户端重新映射它们。

关于java - 从 Jersey RESTful Web 服务中抛出信息性错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6124543/

相关文章:

java - 有没有办法在站点关闭的情况下运行 ObjectAid 序列图 Eclipse 插件?

Java 终结器 : An acceptable use-case?

java - 尝试在多个 JPanel 中显示图像

java - 使用 Java 创建 WADL 和 WSDL?

java - 当我使用 glassfish 在 netbeans 上部署我的项目时,为什么 tomcat 正在运行?

java - SAXParseException;源代码解析 : Cannot resolve the name '...' to a(n) 'type definition' component

java - Restful Jersey Web 服务可以接受所有类型的资源吗?

rest - JavaEE Jersey 2.0 项目中的 MOXy 异常

glassfish - 如何以编程方式创建 jms Topic 和 TopicConnectionFactory?

server - 如何将自定义JNDI资源添加到wildfly-10中,类似于glassfish服务器的<custom-resource>?