2

我在我的应用程序中使用 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 上重现。

4

1 回答 1

0

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

于 2014-10-15T10:58:34.707 回答