Hmmm, after being stuck on this for hours, I find the answer myself
15minutes after asking for help... as usual. :)
For anyone interested, and no doubt this will not be a revelation for some,
I need the servlet API in my app for it to work, despite being command line.
So adding this to the maven POM fixed everything:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
Perhaps this dependency could be listed on the wiki? Alongside the sample
code for using embedded solr?
http://wiki.apache.org/solr/Solrj
Logback is passing along all of my logging but I suspect I'd have to add
some Solr logging config before it would tell me this itself. I only
stumbled on it by accident:
http://osdir.com/ml/solr-user.lucene.apache.org/2009-11/msg00831.html
On 6 April 2011 14:48, Greg Pendlebury <[email protected]> wrote:
> Hi All,
>
> I'm hoping this is a reasonably trivial issue, but it's frustrating me to
> no end. I'm putting together a tiny command line app to write data into an
> index. It has no web based Solr running against it; the index will be moved
> at a later time to have a proper server instance start for responding to
> queries. My problem however is I seem to have stalled on instantiating the
> embedded server:
>
> private SolrServer startSolr(String home) throws Exception {
> try {
> System.setProperty("solr.solr.home", home);
> CoreContainer.Initializer initializer = new
> CoreContainer.Initializer();
> solrCore = initializer.initialize();
> return new EmbeddedSolrServer(solrCore, "");
> } catch(Exception ex) {
> log.error("\n=======\nFailed to start Solr server\n");
> throw ex;
> }
> }
>
> The constructor for the embedded server just never comes back. I've seen
> three or four different ways of starting the server with varying levels of
> complexity, and they all APPEAR to work, but still do not return. STDOUT
> show the output I have largely come to expect from watching Solr start
> 'correctly':
>
> =======
> Starting Solr:
>
> JNDI not configured for solr (NoInitialContextEx)
> using system property solr.solr.home: C:\test\harvester\solr
> looking for solr.xml: C:\test\harvester\solr\solr.xml
> Solr home set to 'C:\test\harvester\solr\'
> Loaded SolrConfig: solrconfig.xml
> Opening new SolrCore at C:\test\harvester\solr\,
> dataDir=C:\tf2\geonames\harvester\solr\.\data\
> Reading Solr Schema
> Schema name=test
> created string: org.apache.solr.schema.StrField
> created date: org.apache.solr.schema.TrieDateField
> created sint: org.apache.solr.schema.SortableIntField
> created sfloat: org.apache.solr.schema.SortableFloatField
> created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
> created null: org.apache.solr.analysis.LowerCaseFilterFactory
> created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
> created null: org.apache.solr.analysis.LowerCaseFilterFactory
> created text: org.apache.solr.schema.TextField
> default search field is basic_name
> query parser default operator is AND
> unique key field: id
> No JMX servers found, not exposing Solr information with JMX.
> created /update: solr.XmlUpdateRequestHandler
> adding lazy requestHandler: solr.CSVRequestHandler
> created /update/csv: solr.CSVRequestHandler
> Opening Searcher@11b86c7 main
> AutoCommit: disabled
> registering core:
> [] Registered new searcher Searcher@11b86c7 main
> Terminate batch job (Y/N)? y
>
>
> At this stage I'm grasping at straws. It appears as though the embedded
> instance is behaving like a proper server, waiting for a request or
> something. I've scrubbed the solrconfig.xml (from from the Solr example
> download) file back to remove most entries, but perhaps I'm using the
> incorrect handlers/listeners for an embedded server?
>
> I'm a tad confused though, because every other time I've done this
> (admittedly in a servlet, not a command line app) the constructor simply
> returns straight away and execution of my app code continues.
>
> Any advice or suggestions would be greatly appreciated.
>
> Ta,
> Greg
>
>
>