With a multicore.xml that looks like: <multicore enabled="true" adminpath="/admin/multicore" persistent="true" libDir="solr/lib" > <core name="core0" instanceDir="core0" default="true"/> <core name="core1" instanceDir="core1" /> </multicore>
it seems to work fine. Just a tip: libDir is somehow not relative to configdir. Maybe making it relative to cfgDir, like: libDir=cfgdir+libDir; @ row 83 of MultiCore.java could make it more intuitive. (ie. libDir="lib" vs. libDir="solr/lib") I will test it better, thanks, Walter Henri Biestro (JIRA) wrote: > [ > https://issues.apache.org/jira/browse/SOLR-409?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > ] > > Henri Biestro updated SOLR-409: > ------------------------------- > > Attachment: solr-350_409.patch > > solr 350 & solr 409 mixed together > > >> Allow configurable class loader sharing between cores >> ----------------------------------------------------- >> >> Key: SOLR-409 >> URL: https://issues.apache.org/jira/browse/SOLR-409 >> Project: Solr >> Issue Type: Sub-task >> Affects Versions: 1.3 >> Reporter: Henri Biestro >> Priority: Minor >> Fix For: 1.3 >> >> Attachments: solr-350_409.patch, solr-409.patch, solr-409.patch >> >> >> WHAT: >> This patch allows to configure in the solrconfig.xml the library directory >> and associated class loader used to dynamically create instances. >> The solr config XML can now specify a libDir element (the same way the >> dataDir can be specified). >> That element can also specify through the 'shared' attribute whether the >> library is shared. >> By default, the shared attribute is true; if you specify a libDir, its class >> loader is made shareable. >> Syntax: >> <libDir shared='true*|false'>/path/to/shareable/dir</libDir> >> WHY: >> Current behavior allocates one class loader per config & thus per core. >> However, there are cases where one would like different cores to share some >> objects that are dynamically instantiated (ie, where the class name is used >> to find the class through the class loader and instantiate). In the current >> form; since each core possesses its own class loader, static members are >> indeed different objects. For instance, there is no way of implementing a >> singleton shared between 2 request handlers. >> Originally from >> http://www.nabble.com/Post-SOLR215-SOLR350-singleton-issue-tf4776980.html >> HOW: >> The libDir element is extracted from the XML configuration file and parsed >> in the Config constructor. >> A static map of weak reference to classloaders keyed by library path is used >> to keep track of already built shareable class loaders. >> The weak reference is here to allow class eviction by the GC, avoiding >> leakage that would result by keeping hard reference to class loaders. >> STATUS: >> initial code drop >> > >