- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我们使用 javax.ws.rs.ext.ExceptionMapper<Exception>
注释为 @javax.ws.rs.ext.Provider
处理所有异常。在内部这个 ExceptionMapper
区分不同类型的异常以确定向客户端显示哪些信息。
在 javax.validation.ConstraintViolationException
的情况下,我们返回有关哪个字段无效及其原因的附加信息。
我们刚从 TomEE 1.7.2 JAX-RS
切换过来至 TomEE 7.0.0-SNAPSHOT webprofile
.
与 TomEE 1.7.2 JAX-RS
我们使用了 openejb.jaxrs.providers.auto=true
系统属性,我们的ExceptionMapper
被自动发现和使用。
与 TomEE 7.0.0-SNAPSHOT webprofile
该属性不再需要从自动发现中受益。
然而 org.apache.cxf.jaxrs.validation.ValidationExceptionMapper
也被发现,现在作为首选 ExceptionMapper
对于 javax.validation.ConstraintViolationException
.我们自己的ExceptionMapper
不会运行,因此客户端无法获得有关验证期间出现问题的信息。
我们自己的ExceptionMapper<Exception>
仍然处理所有其他异常。
ExceptionMapper
我自己放了javax.ws.rs.ext.ExceptionMapper<javax.validation.ConstraintViolationException>
在我的资源旁边,希望它优先于 CXF 资源。
还是org.apache.cxf.jaxrs.validation.ValidationExceptionMapper
优先。
更新:事实证明这确实有效。我不知道为什么我的初始测试不起作用。
ValidationExceptionMapper
通过system.properties
在changelog的 TomEE 7.0.0-SNAPSHOT
我注意到了
TOMEE-1336 Support classname.activated = true/false for auto discovered providers
查看对应的changeset我希望我可以禁用 org.apache.cxf.jaxrs.validation.ValidationExceptionMapper
通过增加 org.apache.cxf.jaxrs.validation.ValidationExceptionMapper.activated=false到我们的 system.properties
.
这仍然没有效果。
ExceptionMapper
优先?最佳答案
现在花一些时间,但认为规范需要它,但您可以通过设置 cxf.jaxrs.skip-provider-scanning=true
来禁用它。
它完全禁用了自动提供程序,包括扫描的提供程序,但随后您可以在 openejb-jar.xml
中控制您想要的提供程序 - 恕我直言,这肯定是最好和更安全的解决方案,否则您会依赖很多您使用的库和容器设置。
没有优先级 afaik,因为使用了异常层次结构。
编辑:遗漏了一部分:您需要实现 ExceptionMapper{ValidationException}
否则 CXF 的优先级高于您自己的(异常不太具体)编辑 2:https://issues.apache.org/jira/browse/TOMEE-1656对于激活的支持
关于java - 用于 TomEE 7 上的 bean 验证的自定义异常映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33760035/
我想在 TomEE 中测试 hikaricp。我已将 jar 文件添加到我的 lib 文件夹中,并尝试像这样定义资源: .... 当我这样做时,我在启动时收到以下错误: org.apache.xb
平台:TomEE Web 配置文件 1.5.0。 我正在尝试做一件非常基本的事情,为 MySQL 设置数据源。我已经阅读了官方指南(http://openejb.apache.org/configur
我最近在“Red Hat Enterprise Linux Server (6.6)”上安装了“apache-tomee-webprofile-1.7.2”。 我可以通过访问 x.x.x.x:8080
如何在 IntelliJ IDEA VM 选项中进行设置。 我需要设置 set JAVA_OPTS="-Dtomee.serialization.class.whitelist=" set CATAL
正如标题所说。我对 Java EE6 认证的内部工作原理了解不多。但是,TomEE+ 似乎只是 TomEE 的超集,所以 TomEE+ 不应该也通过 Java EE6 认证吗? 我们刚刚决定为我们内部
我正在使用 Apache TomEE(本地主机上的 apache-tomee-plus-1.5.2)处理一些 JEE 网络应用程序,并尝试从 TomEE 主页上的链接访问这些服务。 现在,我记得早些时
尝试在 Windows 上启动 TomEE 时出现以下错误: SEVERE: OpenEJBContextConfig.processAnnotationsFile: failed. java.uti
我的服务器有 48 个 CPU,在 TomEE+ 7.0.2 上托管 Java EE 7 REST API。 一些 API 在运行并行算法时需要使用尽可能多的 CPU。 并行化部分不需要任何数据库或其
所以我试图找到任何引用文档或使用这三个的重要示例。 我发现的“最好的”是: TomEE/OpenEJB JAXRS refactoring Some tips for TomEE andJAXRS c
我正在 TomEE 8 中运行我的应用程序。我想从我的数据库中读取一些属性并将其传递给应用程序。 我看到了 https://rmannibucau.wordpress.com/2014/08/06/t
我正在使用单个 TomEE 实例来部署 2 个 Web 应用程序。两个应用程序使用不同的数据库和不同的实体。 应用程序 2 集成到应用程序 1 中,因此我在运行时随时需要这两个架构。 我在 tomee
假设我有一个包含 persistence.xml 配置和 jpa 实体的 jar。我希望在不同的应用程序之间共享相同的持久性单元。 例如,部署一个 war 应用程序并注入(inject)相同的持久性单
规范:jdk1.8,TOMEE702,win10 问题:为 open-ejb3.X 安装和使用 TOMEE 的方法/内容/哪个? 网址:http://tomee.apache.org/download
我下载并安装了 TomEE 1.7.1。在启动服务器时抛出 IllegalArgumentException。 可能是什么问题,因为我还没有部署任何应用程序。 INFO: Using 'openejb
我有一个关于 TomEE 和使用 tomee.xml 中指定的数据源的奇怪问题。值得注意的是,我使用的是 Netbeans、TomEE 和 MySQL。在 Ubuntu 13.04(Xubuntu 最
无法部署应用程序,但出现异常 java.lang.Exception:持久性单元:持久性 -750441533localhost:未找到名称“openejb/PersistenceUnit/persi
我已经编写了代码,以便可以在不重新启动服务器的情况下更改 EntityManagerFactory 属性。我使用 RESTful Jersey 服务对其进行了测试。 我应该编写junit测试来测试这个
我想将 war 文件部署到 TomEE 但失败了: 原因: javax.naming.NameNotFoundException: Name openejb/Resource/applic
我在 Eclipse 中工作。我已经添加了一个启动良好的 TomEE 服务器,但似乎在创建 MySQL 数据源时出现问题。 我在 TomEE 1.7.2 中定义了以下数据源: jdbcDri
我们正在尝试从 GlassFish 迁移到 TomEE,但是在 TomEE 上部署自定义资源适配器时遇到了问题。在 GlassFish 上,只需部署 RAR 文件、配置资源适配器配置,仅此而已。我们如
我是一名优秀的程序员,十分优秀!