Hi,
I have created a customized java module (see code extract below) which
initialized the SolrYard and query dbpedia index file. It uses stanbol
0.12.0 packages. Everything works fine.
Now, I am trying to include this custom module in an OSGi environment
but getting the following error:
Caused by: org.apache.solr.common.SolrException: Error instantiating
shardHandlerFactory class
[org.apache.solr.handler.component.HttpShardHandlerFactory]: Error
loading class 'org.apache.solr.handler.component.HttpShardHandlerFactory'
at
org.apache.solr.handler.component.ShardHandlerFactory.newInstance(ShardHandlerFactory.java:54)
at org.apache.solr.core.CoreContainer.load(CoreContainer.java:204)
at
com.abc.g11n.queryDbpedia.QueryDbpediaDirect.initYardNew(QueryDbpediaDirect.java:146)
at
com.abc.g11n.queryDbpedia.QueryDbpediaDirect.init(QueryDbpediaDirect.java:119)
at
com.adc.sharedcloud.worker.manthanta.DefaultCommand.<clinit>(DefaultCommand.java:59)
... 103 more
I was reading about StandaloneEmbeddedSolrServerProvider and I found
out that it is intended to be used outside of an OSGI environment as
specified at
(http://www.go5th.com/jdocs/stanbol/commons/solr/managed/org/apache/stanbol/commons/solr/managed/standalone/StandaloneEmbeddedSolrServerProvider.html)
Could you please help me on how to initialize a SolrYard (to query
dbpedia index file) in an OSGi environment?
(Code that I am currently using to initialize the SolrYard)
private static Yard yard;
private static final String DBP_RES_ID = "Dbp_Res_ID";
private static final String YARD_ID = "DbpYard";
private static final String SOLR_CORE_NAME = "dbpedia";
private static StandaloneEmbeddedSolrServerProvider solrServerProvider;
private static SolrServer server;
public static boolean dbpediaInitialised = false;
private static void initYard(String solrServerDir) throws
YardException, IOException {
SolrYardConfig config = new SolrYardConfig(YARD_ID, SOLR_CORE_NAME);
config.setName("Dbpedia Solr Yard");
config.setDescription("The Solr Yard for querying dbpedia");
config.setAllowInitialisation(false);
System.setProperty(ManagedSolrServer.MANAGED_SOLR_DIR_PROPERTY,
solrServerDir);
IndexReference solrServerRef =
IndexReference.parse(config.getSolrServerLocation());
solrServerProvider = StandaloneEmbeddedSolrServerProvider.getInstance();
server = solrServerProvider.getSolrServer(solrServerRef,
config.isAllowInitialisation() ?
config.getIndexConfigurationName() : null);
//Optional support for the nsPrefix service
final NamespacePrefixService nsPrefixService;
ServiceLoader<NamespacePrefixService> spsl =
ServiceLoader.load(NamespacePrefixService.class);
Iterator<NamespacePrefixService> it = spsl.iterator();
if(it.hasNext()){
nsPrefixService = it.next();
} else {
nsPrefixService = null;
}
yard = new SolrYard(server, config, nsPrefixService);
}
Regards,
Manish