I'm doing some Java experiments to get ready for a solr-ruby overhaul
such that JRuby comes into play nicely so that EmbeddedSolrServer can
be used transparently too. I've not tried this since the whole
CoreContainer/CoreDescriptor stuff was added, and I don't quite
understand it all. Here's what I've got:
public static void main(String[] args) throws IOException,
ParserConfigurationException, SAXException, SolrServerException {
CoreContainer container = new CoreContainer();
SolrConfig config = new SolrConfig("/Users/erik/apache-solr-1.3.0/
example/solr", "solrconfig.xml", null);
CoreDescriptor descriptor = new CoreDescriptor(container,
"core1", "/Users/erik/apache-solr-1.3.0/example/solr");
SolrCore core = new SolrCore("core1", "/Users/erik/apache-
solr-1.3.0/example/solr/data", config, null, descriptor);
container.register("core1", core, false);
SolrServer solr = new EmbeddedSolrServer(container, "core1");
SolrQuery query = new SolrQuery("*:*");
QueryResponse response = solr.query(query);
System.out.println("response = " + response);
}
This works, but has a fair bit of seemingly unnecessary duplication,
and it also leaves the JVM stays running for some reason.
Is this the proper way to use EmbeddedSolrServer, or are there some
tips to improving the code and reducing the duplication?
Also, why does the JVM keep running? Are we spinning off a thread
that needs to be shut down? Is there some sort of close() call that
is needed?
Thanks,
Erik