You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by elena <el...@hotmail.com> on 2012/07/12 17:43:21 UTC

org.apache.camel.util.ObjectHelper.wrapCamelExecutionException

Hi,

Could you please help me to resolve this issue. 

We use the following configuration: ActiveMQ (version 5.6.0), enterprise
server and several application servers deployed on different PCs.

Enterprise server sends requests to the application servers to get some
data:

RemoteDataRequest req = new RemoteDataRequest();
req.put("methodName", "getData");
ProducerTemplate camelTemplate = (ProducerTemplate)
applicationContext.getBean(BIN_CAMEL_TEMPLATE, ProducerTemplate.class);

try {
	Object resp = camelTemplate.requestBody(uri, req);
	if (resp instanceof RemoteDataResponse) {
	    result = (List<MyData>) ((RemoteDataResponse) resp).getResult();
	    return result;
        } else {
	    log.warn(Constants.WRONG_RESPONSE);
	}
} catch(CamelExecutionException ex) {
	log.error("{} : {}", hubId, ex.getLocalizedMessage());
	log.error(getStackTrace(ex));
}

The message exchange between the enterprise server and application servers
is very unstable.
Sometimes in the corresponding ActiveMQ queue I see the message:
javax.jms.JMSException: Failed to build body from content. Serializable
class not available to broker. Reason: java.lang.ClassNotFoundException:
com.test.camel.RemoteDataRequest

When I copy the jar file that contains the class 
com.test.camel.RemoteDataRequest into the folder lib of the ActiveMQ, the
message is still not delivered to the consumer and in the same queue I see
the content of class RemoteDataRequest:
RemoteDataRequest [created=11559685715616, userId=bob, size=1,
entries=[methodName=getData]] 

In both situation camel raises an exception:

2012-07-12 11:04:25.008 [NioProcessor-5]
com.sick.service.ConfigurationService -
org.apache.camel.CamelExecutionException: Exception occurred during
execution on the exchange: Exchange[Message: RemoteDataRequest
[created=95597035281342, userId=bob, size=1, entries=[methodName=getData]]]
	at
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1237)
	at
org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:509)
	at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:442)
	at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:120)
	at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:136)
	at
org.apache.camel.impl.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:284)
	at
com.sick.service.ConfigurationService.findAllConditions(ConfigurationService.java:64)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:198)
	at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:115)
	at org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:159)
	at org.red5.server.net.rtmp.RTMPHandler.onInvoke(RTMPHandler.java:401)
	at
org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:133)
	at
org.red5.server.net.rtmp.RTMPMinaIoHandler.messageReceived(RTMPMinaIoHandler.java:206)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:716)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
	at
org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:427)
	at
org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:245)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
	at
org.red5.server.net.rtmpe.RTMPEIoFilter.messageReceived(RTMPEIoFilter.java:124)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
	at
org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
	at
org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
	at
org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715)
	at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
	at
org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
	at
org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
	at
org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
	at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
	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)

Sometimes everything works fine. Sometimes the enterprise server gets the
successful response from the 2 application servers, but request to the 3d
application server constantly fails because of this exception.

I spent several days working on this issue and could not find the reason.
Please help.

--
View this message in context: http://camel.465427.n5.nabble.com/org-apache-camel-util-ObjectHelper-wrapCamelExecutionException-tp5715960.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: org.apache.camel.util.ObjectHelper.wrapCamelExecutionException

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I am not sure what is going on, and the causes stacktrace. You would
need to dig a bit more to grab that.
But if you send serialized java objects over remote JMS then make sure
you have the same classes on both sides.
And its a good idea to have serialVerisionUID in the classes so they
are viewed as identical on both the JVMs.
And if the JVM versions are not the same, it could be a good idea to
get them on the nearly the same level.

Instead if sending java objects, you can consider a text based
representation such as xml or json. That is much more flexible than
java objects that is very tightly coupled. Then also non-Java systems
can interact and understand the messages.



On Thu, Jul 12, 2012 at 5:43 PM, elena <el...@hotmail.com> wrote:
> Hi,
>
> Could you please help me to resolve this issue.
>
> We use the following configuration: ActiveMQ (version 5.6.0), enterprise
> server and several application servers deployed on different PCs.
>
> Enterprise server sends requests to the application servers to get some
> data:
>
> RemoteDataRequest req = new RemoteDataRequest();
> req.put("methodName", "getData");
> ProducerTemplate camelTemplate = (ProducerTemplate)
> applicationContext.getBean(BIN_CAMEL_TEMPLATE, ProducerTemplate.class);
>
> try {
>         Object resp = camelTemplate.requestBody(uri, req);
>         if (resp instanceof RemoteDataResponse) {
>             result = (List<MyData>) ((RemoteDataResponse) resp).getResult();
>             return result;
>         } else {
>             log.warn(Constants.WRONG_RESPONSE);
>         }
> } catch(CamelExecutionException ex) {
>         log.error("{} : {}", hubId, ex.getLocalizedMessage());
>         log.error(getStackTrace(ex));
> }
>
> The message exchange between the enterprise server and application servers
> is very unstable.
> Sometimes in the corresponding ActiveMQ queue I see the message:
> javax.jms.JMSException: Failed to build body from content. Serializable
> class not available to broker. Reason: java.lang.ClassNotFoundException:
> com.test.camel.RemoteDataRequest
>
> When I copy the jar file that contains the class
> com.test.camel.RemoteDataRequest into the folder lib of the ActiveMQ, the
> message is still not delivered to the consumer and in the same queue I see
> the content of class RemoteDataRequest:
> RemoteDataRequest [created=11559685715616, userId=bob, size=1,
> entries=[methodName=getData]]
>
> In both situation camel raises an exception:
>
> 2012-07-12 11:04:25.008 [NioProcessor-5]
> com.sick.service.ConfigurationService -
> org.apache.camel.CamelExecutionException: Exception occurred during
> execution on the exchange: Exchange[Message: RemoteDataRequest
> [created=95597035281342, userId=bob, size=1, entries=[methodName=getData]]]
>         at
> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1237)
>         at
> org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:509)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:442)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:120)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:136)
>         at
> org.apache.camel.impl.DefaultProducerTemplate.requestBody(DefaultProducerTemplate.java:284)
>         at
> com.sick.service.ConfigurationService.findAllConditions(ConfigurationService.java:64)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:198)
>         at org.red5.server.service.ServiceInvoker.invoke(ServiceInvoker.java:115)
>         at org.red5.server.net.rtmp.RTMPHandler.invokeCall(RTMPHandler.java:159)
>         at org.red5.server.net.rtmp.RTMPHandler.onInvoke(RTMPHandler.java:401)
>         at
> org.red5.server.net.rtmp.BaseRTMPHandler.messageReceived(BaseRTMPHandler.java:133)
>         at
> org.red5.server.net.rtmp.RTMPMinaIoHandler.messageReceived(RTMPMinaIoHandler.java:206)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:716)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
>         at
> org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:427)
>         at
> org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:245)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
>         at
> org.red5.server.net.rtmpe.RTMPEIoFilter.messageReceived(RTMPEIoFilter.java:124)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:46)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:796)
>         at
> org.apache.mina.core.filterchain.IoFilterAdapter.messageReceived(IoFilterAdapter.java:119)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:434)
>         at
> org.apache.mina.core.filterchain.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:426)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:715)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:668)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:657)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor.access$600(AbstractPollingIoProcessor.java:68)
>         at
> org.apache.mina.core.polling.AbstractPollingIoProcessor$Processor.run(AbstractPollingIoProcessor.java:1141)
>         at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
>         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)
>
> Sometimes everything works fine. Sometimes the enterprise server gets the
> successful response from the 2 application servers, but request to the 3d
> application server constantly fails because of this exception.
>
> I spent several days working on this issue and could not find the reason.
> Please help.
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/org-apache-camel-util-ObjectHelper-wrapCamelExecutionException-tp5715960.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
FuseSource
Email: cibsen@fusesource.com
Web: http://fusesource.com
Twitter: davsclaus, fusenews
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen