Hi all,
I have a pretty generic UIMA AS client I reuse for various
analysis pipelines. The client gets its input from an ActiveMQ
queue and then sends it on to my UIMA AS services via the
UIMA AS Client API.
The loop which is sending requests to the UIMA AS service
is using the sendCAS method.
Once in a while something goes wrong in one of the AEs process
methods and it throws an exception.
For example our Solrcas AE from the addons package might catch an
exception and then re-throws it like this:
throw new AnalysisEngineProcessException(e);
e is in this case some kind of exception which was thrown by the Solr client
API.
On my UIMA AS client I now get an exception like this:
Dec 8, 2011 1:55:55 PM
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl$2
onMessage
WARNING: javax.jms.JMSException: Failed to build body from content.
Serializable class not available to broker. Reason:
java.lang.ClassNotFoundException: org.apache.solr.comm
on.SolrException
at
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:35)
at
org.apache.activemq.command.ActiveMQObjectMessage.getObject(ActiveMQObjectMessage.java:186)
at
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl.retrieveExceptionFromMessage(BaseUIMAAsynchronousEngineCommon_impl.java:1075)
at
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl.handleException(BaseUIMAAsynchronousEngineCommon_impl.java:1397)
at
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl.handleProcessReply(BaseUIMAAsynchronousEngineCommon_impl.java:1176)
at
org.apache.uima.adapter.jms.client.BaseUIMAAsynchronousEngineCommon_impl$2.run(BaseUIMAAsynchronousEngineCommon_impl.java:1714)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException:
org.apache.solr.common.SolrException
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
Is there a way to improve this? Or do I always need to deploy all jars
my UIMA AS service depends on
to my client as well?
Thanks,
Jörn
|