使用jersey在restful响应中返回XML验证失败信息的正确方法

时间:2015-07-29 08:40:52

标签: java xml validation jaxb jersey

我正在使用带有自定义ContextResolver的jersey 2.19 unmarshaller是使用要验证的模式创建的。该 验证然后在POST / PUT期间发生,如果失败则a 抛出BadRequestException。客户端仅在响应中看到“BadRequest” 此BadRequestException包含一个UnmarshalException作为其原因,而该原因又包含一个包含SAXParseException的链接XMLMarshalExcpetion。 这个SAXParseException最终保存了我想要返回给客户端的验证消息 我想知道这样做的正确方法是什么,因为在Exceptions原因链中挖掘并且链接的异常对我来说似乎并不合适。
除了它是丑陋的,它是依赖于实现的,并且可能随着jersey / jaxb版本的改变而改变。所以我想要一个更清晰的解决方案。

此外,我尝试在我的ServerProperties.BV_SEND_ERROR_IN_RESPONSE文件中将web.xml设置为true,如下所示:

  <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>package1:package2</param-value>
    </init-param>
    <init-param>
      <param-name>jersey.config.beanValidation.enableOutputValidationErrorEntity.server</param-name>
      <param-value>true</param-value>
    </init-param>
  </servlet>

但仍然没有成功。

0 个答案:

没有答案