2

アプリケーションでBeanValidationを使用しています。制約検証エラーがない場合、すべてがうまく機能します。検証エラーが発生するたびに、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。CORBAでリモートBeanを使用していることに注意してください。

GlassFish3.1.2.2および3.1.1で再現可能。

4

1 に答える 1

0

この問題は、CORBAを介したConstraintValidationExceptionのシリアル化に起因します。どういうわけか、bean-validationモジュールがosgiで正しくロードされておらず、javax.validation.groups.Defaultクラスがありません。ConstraintValidationExceptionがインターセプトされ、CORBAを介して送信されないように、簡単な回避策を作成しました。代わりに、検証エラー情報は、サービスを介して実際にシリアル化できるカスタムExceptionクラスに収集されます。

于 2014-10-15T10:58:34.707 に答える