ClassCastException deploying Hibernate Search 4.x
mbickel Nov 13, 2012 10:04 AMHi all,
I'm migrating from Seam2.2/JBoss AS4.2 and have upgraded to Hibernate 4.1.1 in the process. The jar files are shipped within my ear and thus I added an exclusion in my deployment file:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0"> <deployment> <exclusions> <module name="org.hibernate" /> </exclusions>
My project also requires Hibernate Search. So I added hibernate-search-{analyzers,engine,orm}.jar to my ear lib directory. All jars are from the Hibernate Search 4.1.0 distribution.
While deploying my application I get the following error:
15:33:41,381 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.persistenceunit."proj.ear/proj.jar#proj": org.jboss.msc.service.StartException in service jboss.persistenceunit."proj.ear/proj.jar#proj": Failed to start service at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1767) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.6.0_24] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.6.0_24] at java.lang.Thread.run(Thread.java:679) [rt.jar:1.6.0_24] Caused by: java.util.ServiceConfigurationError: org.hibernate.integrator.spi.Integrator: Provider org.hibernate.search.hcore.impl.HibernateSearchIntegrator not a subtype at java.util.ServiceLoader.fail(ServiceLoader.java:231) [rt.jar:1.6.0_24] at java.util.ServiceLoader.access$300(ServiceLoader.java:181) [rt.jar:1.6.0_24] at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:369) [rt.jar:1.6.0_24] at java.util.ServiceLoader$1.next(ServiceLoader.java:445) [rt.jar:1.6.0_24] at org.hibernate.service.classloading.internal.ClassLoaderServiceImpl.loadJavaServices(ClassLoaderServiceImpl.java:251) at org.hibernate.integrator.internal.IntegratorServiceImpl.<init>(IntegratorServiceImpl.java:53) at org.hibernate.service.BootstrapServiceRegistryBuilder.build(BootstrapServiceRegistryBuilder.java:120) at org.hibernate.ejb.Ejb3Configuration.buildLifecycleControledServiceRegistry(Ejb3Configuration.java:924) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:903) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:889) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.createContainerEntityManagerFactory(PersistenceUnitServiceImpl.java:162) at org.jboss.as.jpa.service.PersistenceUnitServiceImpl.start(PersistenceUnitServiceImpl.java:85) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA] ... 3 more
I've checked the jar and verified org.hibernate.search.hcore.impl.HibernateSearchIntegrator does indeed implement the mentioned interface (duh!).
So I hazard a guess that this is a classloader issue. But what I can't get my head around is why this occurs even when both libs are packaged in my ear. So - help?