<div dir="ltr">Do you really need to set the classloader in all the cache configurations? I thought it was enough to set it in the global configuration.<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 19, 2013 at 7:02 PM, Sanne Grinovero <span dir="ltr">&lt;<a href="mailto:sanne@infinispan.org" target="_blank">sanne@infinispan.org</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It turns out this resource loading issue is biting also community users;<br>
<br>
I had worked aroud the problem for deploymens in the AS7 modular<br>
classloader by wrapping the configuration parser with the &quot;right&quot;<br>
classloader:<br>
<a href="https://github.com/hibernate/hibernate-search/blob/master/hibernate-search-infinispan/src/main/java/org/hibernate/search/infinispan/impl/InfinispanConfigurationParser.java" target="_blank">https://github.com/hibernate/hibernate-search/blob/master/hibernate-search-infinispan/src/main/java/org/hibernate/search/infinispan/impl/InfinispanConfigurationParser.java</a><br>


<br>
But today on IRC I had to point to this class as an example to another<br>
user looking to run Infinispan in an isolated classloader.<br>
<br>
Maybe we should have an (optional) Parser API which takes explicit<br>
classloaders ?<br>
<span class="HOEnZb"><font color="#888888"><br>
Sanne<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
On 5 April 2013 12:52, Galder Zamarreño &lt;<a href="mailto:galder@redhat.com">galder@redhat.com</a>&gt; wrote:<br>
&gt; I&#39;m not an expert on this (Paul, Rado, Richard should help more…), but to do what you&#39;re trying to do, I suspect there might be a need to export the .dat files somehow? I know there&#39;s a way to export the metadata in META-INF/services.<br>


&gt;<br>
&gt; Alternatively, you could let the Infinispan subsystem create the cache managers directly, by configuring them in advance in the standalone.xml or similar. That&#39;s what happens with Hibernate Core, which does not start its own cache manager, but simply looks it up based on what&#39;s been configured by default in the standalone.xml (there&#39;s a named cache manager for it). AFAIK.<br>


&gt;<br>
&gt; Take this with a pinch of salt (some details are blurry). The experts on these are really AS7 guys…<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; On Mar 27, 2013, at 9:22 PM, Sanne Grinovero &lt;<a href="mailto:sanne@infinispan.org">sanne@infinispan.org</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; When starting an EmbeddedCacheManager from a different module deployed<br>
&gt;&gt; in the AS, I get this stacktrace:<br>
&gt;&gt;<br>
&gt;&gt; Caused by: org.hibernate.search.SearchException: Unable to initialize<br>
&gt;&gt; directory provider:<br>
&gt;&gt; org.hibernate.search.test.integration.jbossas7.model.Member<br>
&gt;&gt;       at org.hibernate.search.store.impl.DirectoryProviderFactory.createDirectoryProvider(DirectoryProviderFactory.java:87)<br>
&gt;&gt;       at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.createDirectoryProvider(DirectoryBasedIndexManager.java:232)<br>
&gt;&gt;       at org.hibernate.search.indexes.impl.DirectoryBasedIndexManager.initialize(DirectoryBasedIndexManager.java:100)<br>
&gt;&gt;       at org.hibernate.search.indexes.impl.IndexManagerHolder.createIndexManager(IndexManagerHolder.java:227)<br>
&gt;&gt;       ... 19 more<br>
&gt;&gt; Caused by: org.infinispan.config.ConfigurationException:<br>
&gt;&gt; org.infinispan.CacheException: Unable to load component metadata!<br>
&gt;&gt;       at org.infinispan.manager.DefaultCacheManager.&lt;init&gt;(DefaultCacheManager.java:386)<br>
&gt;&gt;       at org.infinispan.manager.DefaultCacheManager.&lt;init&gt;(DefaultCacheManager.java:341)<br>
&gt;&gt;       at org.infinispan.manager.DefaultCacheManager.&lt;init&gt;(DefaultCacheManager.java:328)<br>
&gt;&gt;       at org.hibernate.search.infinispan.CacheManagerServiceProvider.start(CacheManagerServiceProvider.java:93)<br>
&gt;&gt;       at org.hibernate.search.engine.impl.StandardServiceManager$ServiceProviderWrapper.startVirtual(StandardServiceManager.java:178)<br>
&gt;&gt;       at org.hibernate.search.engine.impl.StandardServiceManager.requestService(StandardServiceManager.java:124)<br>
&gt;&gt;       at org.hibernate.search.infinispan.impl.InfinispanDirectoryProvider.initialize(InfinispanDirectoryProvider.java:86)<br>
&gt;&gt;       at org.hibernate.search.store.impl.DirectoryProviderFactory.createDirectoryProvider(DirectoryProviderFactory.java:84)<br>
&gt;&gt;       ... 22 more<br>
&gt;&gt; Caused by: org.infinispan.CacheException: Unable to load component metadata!<br>
&gt;&gt;       at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:131)<br>
&gt;&gt;       at org.infinispan.factories.GlobalComponentRegistry.&lt;init&gt;(GlobalComponentRegistry.java:103)<br>
&gt;&gt;       at org.infinispan.manager.DefaultCacheManager.&lt;init&gt;(DefaultCacheManager.java:381)<br>
&gt;&gt;       ... 29 more<br>
&gt;&gt; Caused by: java.lang.NullPointerException<br>
&gt;&gt;       at org.infinispan.factories.components.ComponentMetadataRepo.readMetadata(ComponentMetadataRepo.java:53)<br>
&gt;&gt;       at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:129)<br>
&gt;&gt;       ... 31 more<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; The ComponentMetadataRepo is unable to load<br>
&gt;&gt; &quot;infinispan-core-component-metadata.dat&quot;, which contains the<br>
&gt;&gt; critically-important information for wiring together the internal<br>
&gt;&gt; components of Infinispan core.<br>
&gt;&gt;<br>
&gt;&gt; Now I think this is quite silly as locating this resource is trivial:<br>
&gt;&gt; it&#39;s in the same jar as all the infinispan core classes:<br>
&gt;&gt; infinispan-core-[version].jar so patching this looks like trivial:<br>
&gt;&gt; it&#39;s using the ClassLoader configured as defaultClassLoader in<br>
&gt;&gt; org.infinispan.factories.AbstractComponentRegistry, but really it<br>
&gt;&gt; should just use something like<br>
&gt;&gt; AbstractComponentRegistry.class.getClassLoader() ?<br>
&gt;&gt;<br>
&gt;&gt; Things get a bit more tricky with extension modules, and a lot of<br>
&gt;&gt; magic is being wrapped around this defaultClassLoader which goes<br>
&gt;&gt; beyond my understanding so I would be glad to leave this issue to some<br>
&gt;&gt; core Infinispan developer more familiar with the intentions here.<br>
&gt;&gt;<br>
&gt;&gt; Sanne<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; infinispan-dev mailing list<br>
&gt;&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Galder Zamarreño<br>
&gt; <a href="mailto:galder@redhat.com">galder@redhat.com</a><br>
&gt; <a href="http://twitter.com/galderz" target="_blank">twitter.com/galderz</a><br>
&gt;<br>
&gt; Project Lead, Escalante<br>
&gt; <a href="http://escalante.io" target="_blank">http://escalante.io</a><br>
&gt;<br>
&gt; Engineer, Infinispan<br>
&gt; <a href="http://infinispan.org" target="_blank">http://infinispan.org</a><br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; infinispan-dev mailing list<br>
&gt; <a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a><br>
<br>
_______________________________________________<br>
infinispan-dev mailing list<br>
<a href="mailto:infinispan-dev@lists.jboss.org">infinispan-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/infinispan-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/infinispan-dev</a></div></div></blockquote></div><br></div>