Sounds like a class loader issue. Try adding your jar to $SOLR_HOME/lib
instead of tomcat lib.

Also, upgrade to Solr 4.x, 3.6 is ancient! :)

On Sat, Sep 20, 2014 at 1:13 AM, Allistair C <allist...@gmail.com> wrote:

> Hi all,
>
> I’m in a bit of a cul de sac with an issue, hope you can help.
>
> I am creating a custom UpdateRequestProcessor. The Solr documentation
> details that I need to write a factory class subclassing
> UpdateRequestProcessorFactory and this should return an instance of my
> class that subclasses UpdateRequestProcessor.
>
> I have done this, and I have created a JAR.
>
> I have deployed the JAR into Tomcat’s lib folder where Solr is running.
>
> I have modified the solrconfig to include my class correctly.
>
> On startup Solr finds my class but does not believe it conforms to being a
> UpdateRequestProcessorFactory.
>
> SEVERE: org.apache.solr.common.SolrException: Error Instantiating
> UpdateRequestProcessorFactory,
> com.acme.solr.update.processor.URLRewriteUpdateRequestProcessorFactory is
> not a org.apache.solr.update.processor.UpdateRequestProcessorFactory
>         at org.apache.solr.core.SolrCore.createInstance(SolrCore.java:421)
>
> Things I have tried:
>
> - Ensured that I am compiling my JAR with the exact JDK that is running
> Solr.
> - Downloaded Solr 3.6.2 and copied one of the Solr built-in processors,
> renamed it, compiled it and tried to use it - SAME issue.
> - Created a test that uses the same code as the Solr code that is failing
> (namely, isAssignableFrom):
>
>             Class clazz =
> Class.forName("com.acme.solr.update.processor.URLRewriteUpdateRequestProcessorFactory");
>             boolean isA =
> UpdateRequestProcessorFactory.class.isAssignableFrom(clazz);
>             System.out.println(isA);
>
> Print’s “true” - i.e. it’s perfectly OK!
>
> I include my simple processor here:
>
> package com.acme.solr.update.processor;
>
> public class URLRewriteUpdateRequestProcessorFactory extends
> UpdateRequestProcessorFactory
> {
>     @Override
>     public UpdateRequestProcessor getInstance(SolrQueryRequest req,
> SolrQueryResponse rsp, UpdateRequestProcessor next) {
>         return new URLRewriteProcessor(next);
>     }
> }
>
> class URLRewriteProcessor extends UpdateRequestProcessor
> {
>     public URLRewriteProcessor(UpdateRequestProcessor next)
>     {
>         super(next);
>     }
>
>     @Override
>     public void processAdd(AddUpdateCommand cmd) throws IOException
>     {
>         SolrInputDocument doc = cmd.getSolrInputDocument();
>         doc.setField("foo", "bar");
>
>         super.processAdd(cmd);
>     }
> }
>
> At this point I am at a loss and would appreciate any assistance or ideas
> to try.
>
> Cheers




-- 
Regards,
Shalin Shekhar Mangar.

Reply via email to