Details
-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
5.1.4.FINAL
-
None
-
Workaround Exists
-
Description
This issue occurs using Infinispan as 2LC Hibernate cache provider is clustered environment using JGroups as a transport. So persistence.xml contains this line:
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.infinispan.InfinispanRegionFactory"/>
During application deployment the following error occurs:
11:28:45,529 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-11) MSC00001: Failed to start service jboss.persistenceunit."BatchProcessing.ear/sklad-base.jar#MOYsklad": org.jboss.msc.service.StartException in service jboss.persistenceunit."BatchProcessing.ear/sklad-base.jar#MOYsklad": 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.7.0_05] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_05] at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_05] Caused by: org.infinispan.manager.EmbeddedCacheManagerStartupException: org.infinispan.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:223) at org.infinispan.manager.DefaultCacheManager.wireCache(DefaultCacheManager.java:684) at org.infinispan.manager.DefaultCacheManager.createCache(DefaultCacheManager.java:649) at org.infinispan.manager.DefaultCacheManager.getCache(DefaultCacheManager.java:549) at org.hibernate.cache.infinispan.InfinispanRegionFactory.getCache(InfinispanRegionFactory.java:483) at org.hibernate.cache.infinispan.InfinispanRegionFactory.buildEntityRegion(InfinispanRegionFactory.java:209) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:347) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741) at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:93) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74) at org.hibernate.ejb.HibernatePersistenceLognex.createContainerEntityManagerFactory(HibernatePersistenceLognex.java:16) 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 Caused by: org.infinispan.CacheException: Unable to invoke method public void org.infinispan.remoting.transport.jgroups.JGroupsTransport.start() on object of type JGroupsTransport at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:238) at org.infinispan.factories.AbstractComponentRegistry$PrioritizedMethod.invoke(AbstractComponentRegistry.java:885) at org.infinispan.factories.AbstractComponentRegistry.invokeStartMethods(AbstractComponentRegistry.java:639) at org.infinispan.factories.AbstractComponentRegistry.internalStart(AbstractComponentRegistry.java:628) at org.infinispan.factories.AbstractComponentRegistry.start(AbstractComponentRegistry.java:531) at org.infinispan.factories.GlobalComponentRegistry.start(GlobalComponentRegistry.java:201) ... 19 more Caused by: org.infinispan.CacheConfigurationException: configurationFile property specifies value null that could not be read! at org.infinispan.remoting.transport.jgroups.JGroupsTransport.buildChannel(JGroupsTransport.java:335) at org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannel(JGroupsTransport.java:256) at org.infinispan.remoting.transport.jgroups.JGroupsTransport.initChannelAndRPCDispatcher(JGroupsTransport.java:296) at org.infinispan.remoting.transport.jgroups.JGroupsTransport.start(JGroupsTransport.java:174) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_05] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_05] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_05] at java.lang.reflect.Method.invoke(Method.java:601) [rt.jar:1.7.0_05] at org.infinispan.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:236) ... 24 more Caused by: java.io.FileNotFoundException: tcp.xml ... 33 more
This error occurs because org.infinispan.util.FileLookupFactory.DefaultFileLookup#getAsInputStreamFromClassLoader method doesn't check result for null - it is only checking for RuntimeException. The first ClassLoader belongs to the application so it could not find the desired resource from jgroups module. The resource would be found with the second Module ClassLoader but method returns null after the first try.