2
我在我的應用程序中使用bean驗證。當沒有約束驗證錯誤時,一切都很好。每次有一個驗證錯誤,Glassfish的引發以下例外:Glassfish Bean驗證奇怪的錯誤
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)
豆validation.jar存在的glassfish /模塊的文件夾。初創公司不會在驗證方面拋出任何例外。
PS。請注意,我們正在使用遠程bean和CORBA。
在GlassFish 3.1.2.2和3.1.1上可重複使用。
我將此問題描述爲通過CORBA對ConstraintValidationException進行序列化。不知何故,使用osgi不能正確加載bean驗證模塊,並且缺少javax.validation.groups.Default類。我做了一個快速的解決方法,以便攔截ConstraintValidationException並且永遠不會通過CORBA發送。相反,驗證錯誤信息收集在自定義的Exception類中,該類可以通過服務實際序列化。 – 2013-03-05 20:21:04
由於我有同樣的錯誤,您能否提供一些信息來截取郵件?使用我的道,我知道什麼時候會發生違規行爲,但使用攔截器會更好。 – djmj 2013-06-09 00:54:20
我不再能夠訪問或提供我使用的代碼,但基本上我只是創建了一個Interceptor,它在適當的層次上捕獲ConstraintValidationExceptions,並將它們作爲自己的自定義異常向前引發,然後通過CORBA正確序列化。 – 2013-06-17 05:56:34