2014-09-23 4 views
1

Недавно я обновил один из наших тестовых серверов, чтобы использовать Glassfish 4.1. У меня возникла проблема с развертыванием наших веб-сервисов в Glassfish после этого обновления. При развертывании приложения появляется сообщение «Ошибка при развертывании: исключение при загрузке приложения: java.lang.ClassNotFoundException: org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor» (см. Полную трассировку стека ниже).Проблема Обновление Glassfish 4.1

Я изначально думал, что этот вопрос связан с настраиваемой емкостью Guava (добавлен beans.xml, чтобы обойти проблему совместимости), которую мы используем. Я перестроил приложение, используя новейшую версию Guava (18), и все еще сталкивался с той же проблемой, что и в Glassfish 4.1 . Приложение имеет никаких проблем не развертывание Glassfish 4.0 с последней версией Гуавы

[2014-09-23T10:15:37.589-0600] [glassfish 4.1] [SEVERE] [] [javax.enterprise.system.tools.deployment.common] [tid: _ThreadID=177 _ThreadName=admin-listener(25)] [timeMillis: 14114 
88937589] [levelValue: 1000] [[ 
    Exception while invoking class org.glassfish.ejb.startup.EjbApplication start method 
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor 
     at com.sun.ejb.containers.BaseContainer.setStartedState(BaseContainer.java:962) 
     at org.glassfish.ejb.startup.EjbApplication.markAllContainersAsStarted(EjbApplication.java:140) 
     at org.glassfish.ejb.startup.EjbApplication.start(EjbApplication.java:152) 
     at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
     at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
     at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500) 
     at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
     .... 
     at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.ClassNotFoundException: org.hibernate.validator.internal.cdi.interceptor.ValidationInterceptor 
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1783) 
     at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633) 
     at com.sun.ejb.containers.interceptors.InterceptorManager.buildEjbInterceptorChain(InterceptorManager.java:431) 
     at com.sun.ejb.containers.interceptors.InterceptorManager.<init>(InterceptorManager.java:131) 
     at com.sun.ejb.containers.BaseContainer.initializeInterceptorManager(BaseContainer.java:3396) 
     at com.sun.ejb.containers.BaseContainer.setStartedState(BaseContainer.java:950) 
     ... 83 more 
+0

У меня та же проблема. Как вы его решили? –

ответ

1

Это кажется ошибка:.

https://java.net/jira/browse/HK2-233 https://java.net/jira/browse/JERSEY-2661

К сожалению, Oracle не выпускает патчи для GlassFish, но только основные версии (Насколько нам известно). Один из вариантов заключается в использовании the GlassFish fork "Payara".

Вы можете применить этот стандарт соответствует обходной путь:

private <T> boolean beanIsValid(final T bean) { 
    final Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); 
    final Set<ConstraintViolation<T>> constraintViolations = validator.validate(bean); 

    return constraintViolations.isEmpty(); 
} 
Смежные вопросы