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