【问题标题】:Glassfish Bean Validation weird errorGlassfish Bean 验证奇怪的错误
【发布时间】:2013-02-19 12:53:48
【问题描述】:

我在我的应用程序中使用 bean 验证。当没有约束验证错误时,一切都很好。每次出现验证错误时,Glassfish 都会抛出以下异常:

Caused by: java.lang.ClassNotFoundException: javax.validation.groups.Default: java.net.MalformedURLException: Unknown protocol: osgi
at com.sun.corba.ee.impl.util.JDKBridge.loadClassM(JDKBridge.java:325)
at com.sun.corba.ee.impl.util.JDKBridge.loadClass(JDKBridge.java:228)
at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.loadClass(Util.java:640)
at com.sun.corba.ee.impl.util.RepositoryId.getClassFromType(RepositoryId.java:628)
at com.sun.corba.ee.impl.orbutil.RepIdDelegator.getClassFromType(RepIdDelegator.java:169)
at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readClass(CDRInputStream_1_0.java:1439)

bean-validation.jar 存在于 glassfish/modules 文件夹中。启动不会抛出任何关于验证的异常。

PS。请注意,我们将远程 bean 与 CORBA 一起使用。

可在 GlassFish 3.1.2.2 和 3.1.1 上重现。

【问题讨论】:

  • 我将此问题追溯到通过 CORBA 对 ConstraintValidationException 的序列化。不知何故,osgi 没有正确加载 bean-validation 模块,并且缺少 javax.validation.groups.Default 类。我做了一个快速的解决方法,以便拦截 ConstraintValidationException 并且永远不会通过 CORBA 发送。相反,验证错误信息被收集在一个自定义的异常类中,该类实际上可以通过服务进行序列化。
  • 您能否提供一些信息,因为我有同样的错误,您是如何拦截该消息的。使用我的 dao 我知道什么时候会发生违规,但使用拦截器会更好。
  • 我不再能够访问或提供我使用的代码,但基本上我只是创建了一个拦截器,它在适当的层捕获 ConstraintValidationExceptions 并将它们作为我自己的自定义异常抛出,然后通过正确序列化科尔巴。

标签: glassfish bean-validation corba


【解决方案1】:

我将此问题追溯到通过 CORBA 对 ConstraintValidationException 进行序列化。不知何故,osgi 没有正确加载 bean-validation 模块,并且缺少 javax.validation.groups.Default 类。我做了一个快速的解决方法,以便拦截 ConstraintValidationException 并且永远不会通过 CORBA 发送。相反,验证错误信息被收集在一个自定义的异常类中,该类实际上可以通过服务进行序列化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多