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.