-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 
Author Message
 Post subject: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Thu May 20, 2010 2:06 am 
Newbie

Joined: Thu May 20, 2010 1:39 am
Posts: 6
Hello everybody.

I'm developing a web-based project based on latest Spring and Hibernate libraries. It doesn't have any problems under Tomcat 6.0.20+ server, both hibernate core and validator work right. On production I have resin 3.1 web server, and things are not simple in such case.

The first problem was because of resin 3.1 has it's own javax.persistance implementation. Hibernate 3.5+ uses jpa2 standard so there was a conflict. To resolve it I just removed jpa-15.jar from %RESIN_HOME%/lib folder. And all began to work properly, without any errors.

But the second problem still exist. Seems like with Hibernate Validator.
I have a Command object with a field that have standard @NotNull annotation and method execute():
Code:
class CommandA {
               @NotNull
               protected List<EntityA> entities;
               ...
               public void execute() {
               ...
          }
           ...
   public final List<EntityA> getEntities() {
      return entities;
   }

}

This object is validated by controller class, before executing in such way:
Code:
ValidationUtils.invokeValidator(validator, command, bindException);

Validator here is dependency-injected instance of Hibernate Validator 4.0.2GA.

When this code is executed, I see such stack trace in log file:
Code:
org.springframework.web.util.NestedServletException: Handler processing
failed; nested exception is java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
   at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
   at com.blogspot.java4it.commons.filters.gzip.GZipFilter.doFilter(GZipFilter.java:114)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
   at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
   at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
   at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
   at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
   at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
   at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
   at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NoClassDefFoundError: javax/persistence/spi/PersistenceProvider
   at java.lang.ClassLoader.defineClass1(Native Method)
   at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
   at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
   at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
   at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
   at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
   at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
   at java.lang.Class.forName0(Native Method)
   at java.lang.Class.forName(Class.java:247)
   at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1281)
   at com.caucho.loader.SystemClassLoader.loadClassImpl(SystemClassLoader.java:217)
   at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
   at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
   at com.caucho.loader.DynamicClassLoader.loadClassImpl(DynamicClassLoader.java:1279)
   at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1219)
   at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java:1203)
   at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.loadResolverClasses(PersistenceProviderResolverHolder.java:135)
   at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader$CachingPersistenceProviderResolver.<init>(PersistenceProviderResolverHolder.java:115)
   at javax.persistence.spi.PersistenceProviderResolverHolder$PersistenceProviderResolverPerClassLoader.getPersistenceProviders(PersistenceProviderResolverHolder.java:73)
   at javax.persistence.Persistence.getProviders(Persistence.java:60)
   at javax.persistence.Persistence.access$000(Persistence.java:16)
   at javax.persistence.Persistence$1.isLoaded(Persistence.java:76)
   at org.hibernate.validator.engine.resolver.JPATraversableResolver.isReachable(JPATraversableResolver.java:33)
   at org.hibernate.validator.engine.resolver.DefaultTraversableResolver.isReachable(DefaultTraversableResolver.java:112)
   at org.hibernate.validator.engine.resolver.SingleThreadCachedTraversableResolver.isReachable(SingleThreadCachedTraversableResolver.java:47)
   at org.hibernate.validator.engine.ValidatorImpl.isValidationRequired(ValidatorImpl.java:764)
   at org.hibernate.validator.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:331)
   at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForRedefinedDefaultGroup(ValidatorImpl.java:278)
   at org.hibernate.validator.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:260)
   at org.hibernate.validator.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:213)
   at org.hibernate.validator.engine.ValidatorImpl.validate(ValidatorImpl.java:119)
   at org.springframework.validation.beanvalidation.SpringValidatorAdapter.validate(SpringValidatorAdapter.java:74)
   at org.springframework.validation.ValidationUtils.invokeValidator(ValidationUtils.java:63)
   at com.onlinetest.business.command.CommandExecutor.execute(CommandExecutor.java:20)
   at com.onlinetest.web.controller.ControllerBase.execute(ControllerBase.java:25)
   at com.onlinetest.web.controller.blog.BlogIndexController.page(BlogIndexController.java:49)
   at com.onlinetest.web.controller.blog.BlogIndexController.index(BlogIndexController.java:37)
   at com.onlinetest.web.controller.blog.BlogIndexController$$FastClassByCGLIB$$2f7b981c.invoke(<generated>)
   at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
   at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:692)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
   at org.springframework.aop.aspectj.AspectJAfterThrowingAdvice.invoke(AspectJAfterThrowingAdvice.java:55)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
   at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
   at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
   at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:625)
   at com.onlinetest.web.controller.blog.BlogIndexController$$EnhancerByCGLIB$$4f40d9e1.index(<generated>)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174)
   at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
   at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
   at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
   at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
   at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
   at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:114)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:91)
   at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:103)
   at com.blogspot.java4it.commons.filters.gzip.GZipFilter.doFilter(GZipFilter.java:114)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
   at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
   at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
   at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
   at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
   at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
   at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
   at com.caucho.server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87)
   at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:187)
   at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:265)
   at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:273)
   at com.caucho.server.port.TcpConnection.run(TcpConnection.java:682)
   at com.caucho.util.ThreadPool$Item.runTasks(ThreadPool.java:743)
   at com.caucho.util.ThreadPool$Item.run(ThreadPool.java:662)
   at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: javax.persistence.spi.PersistenceProvider
   at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
   at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

Same problem with the latest available 4.1.0 beta version. Could anybody help me with that?

This issue is resin 3.1-specific. On tomcat 6.0.20+ all works great.


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Thu May 20, 2010 4:11 am 
Hibernate Team
Hibernate Team

Joined: Thu Apr 05, 2007 5:52 am
Posts: 1689
Location: Sweden
Looks very much like a class loading issue for me. I can see in the stacktrace that JPATraversableResolver.isReachable. This shows two things - firstly that the validator framework is available and was called, but also that during bootstrapping the validator framework detected jpa 2 on the classpath and instantiated a JPATraversableResolver. javax/persistence/spi/PersistenceProvider is a class in the jpa 2 api jar file. Given that you added it to the classpath it should be loadable. Are you sure that there is no other conflicting jpa jar file on the classpath? I am not a resin expert, but maybe there are other class loading restrictions.

You could try to bootstrap Bean Validation with a custom traversable resolver which always returns true for isReachable and isCascadable. This is of course more of a temporary solution.

--Hardy


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Thu May 20, 2010 4:18 am 
Hibernate Team
Hibernate Team

Joined: Thu Apr 05, 2007 5:52 am
Posts: 1689
Location: Sweden
Maybe this is related: running-jboss-seam-on-resin-302x


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Thu May 20, 2010 7:20 am 
Newbie

Joined: Thu May 20, 2010 1:39 am
Posts: 6
@hardy.ferentschik: thanks for a reply. I tried to use a class loader hack, but nothing changed.

Quote:
Are you sure that there is no other conflicting jpa jar file on the classpath?
Not sure. How to verify that? I have no idea about conflicting jars when look at the stack trace. Sure that the problem is in Hibernate Validator, because when @NotNull is commented all works properly.

Quote:
You could try to bootstrap Bean Validation with a custom traversable resolver which always returns true for isReachable and isCascadable. This is of course more of a temporary solution.
Thanks for a idea, I'm not exactly understand where put the changes, but will research that later today.


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Fri May 21, 2010 6:10 pm 
Newbie

Joined: Thu May 20, 2010 1:39 am
Posts: 6
Walked threw the problem with a debugger.

The cause of problem is that resin 3.1 has it's own JPA implementation, based on 1st version. It's possible to remove jpa-15.jar, but this trick doesn't work for ejb-15 where is AmberPersistenceProvider class located. In the final I found that jpa-15.jar may return into resin's lib folder, and class hack loader posted above will resolve hibernate initialization problems.

But not all. JPATraversableResolver calls Persistence.getPersistenceUtil().isLoaded to check if field was loaded (there is a comment that you not sure if it's fully correct). The source PersistenceUtil.isLoaded:
Code:
         public boolean isLoaded(Object entity, String attributeName) {
            List<PersistenceProvider> providers = Persistence.getProviders();
            for ( PersistenceProvider provider : providers ) {
               final LoadState state = provider.getProviderUtil().isLoadedWithoutReference( entity, attributeName );
               if ( state == LoadState.UNKNOWN ) continue;
               return state == LoadState.LOADED;
            }
            for ( PersistenceProvider provider : providers ) {
               final LoadState state = provider.getProviderUtil().isLoadedWithReference( entity, attributeName );
               if ( state == LoadState.UNKNOWN ) continue;
               return state == LoadState.LOADED;
            }
            return true;
         }

Seems like Persistence.getProviders() returns all PersistenceProvider implementations, independent on their versions. In my case providers list has two objects: one implements JPA2, second - JPA1. After that 'for' statement fails because PersistenceProvider interfaces are different in JPA1/2.

The simplest solution I see is to change implementation of isReachable method of JPATraversableResolver. But not sure if it will resolve all possible problems - Persistence.getProviders() method returns strange elements in list.


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Mon May 24, 2010 10:35 am 
Newbie

Joined: Thu May 20, 2010 1:39 am
Posts: 6
@hardy.ferentschik: what is the most correct way to fix the problem, what do you think?

If you need any more additional information please let me know.


Top
 Profile  
 
 Post subject: Re: resin 3.1 specific isseu with Hibernate Validator 4.0.2GA
PostPosted: Wed May 11, 2011 7:43 pm 
Newbie

Joined: Wed May 11, 2011 7:40 pm
Posts: 4
Did anyone resolve this? I am seeing same issue on resin 3.1.6 and Hibernate 3.5.6-Final.

Please share how this can be resolved.

Thanks!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 7 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.