[mule-dev] Transformer chaining does not seem to be working.

0 views
Skip to first unread message

Karl Lopes

unread,
Apr 29, 2011, 1:19:54 AM4/29/11
to d...@mule.codehaus.org
Hello,
I have two apps module1 and module2 which I have independently deployed to mule. I have tested both independently using MuleClient and they work as expected.
Now I am trying to integrate them, and pass objects from one to another using tcp.

Module 1: has a class called:com.lopes.webservice.OrderItemImpl
Module 2: has a class called:com.lopes.module1.OrderItemTO

Module2 class has a method decorate(OrderItemTO o).

Module2 has no reference to Module1 classes. i.e. In particular Module2 does not know about OrderItemImpl,
However Module1 has a Transformer (m0tom1) which converts OrderItemImpl to OrderItemTO.

Module 1-> mule-config: <tcp:outbound-endpoint exchange-pattern="request-response" host="localhost" port="60203" transformer-refs="ByteArrayToSerializable" responseTransformer-refs="ByteArrayToSerializable m0tom1">

</tcp:outbound-endpoint>

m0tom1 is the custom transformer which is supposed to convert OrderItemImpl to OrderItemTO.

Module 2->mule-config : <tcp:inbound-endpoint name="m1_transformer" host="localhost" port="60203"
responseTransformer-refs="ByteArrayToObject">
<transformer ref="ByteArrayToSerializable"></transformer>
</tcp:inbound-endpoint>

It seems that m0tom1 never gets called as I get a classNotFoundException:
Exception stack is:
1. com.lopes.webservice.OrderItemImpl (java.lang.ClassNotFoundException)
java.net.URLClassLoader$1:-1 (null)
2. java.lang.ClassNotFoundException: com.lopes.webservice.OrderItemImpl (org.apa
che.commons.lang.SerializationException)
org.mule.util.SerializationUtils:85 (null)
3. Failed to transform from "byte[]" to "Object" (org.mule.api.transformer.Trans
formerException)
org.mule.transformer.simple.ByteArrayToSerializable:58 (http://www.mulesoft.or
g/docs/site/current3/apidocs/org/mule/api/transformer/TransformerException.html)

********************************************************************************

Root Exception stack trace:
java.lang.ClassNotFoundException: com.lopes.webservice.OrderItemImpl
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.apache.commons.io.input.ClassLoaderObjectInputStream.resolveClass
(ClassLoaderObjectInputStream.java:67)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at org.mule.util.SerializationUtils.deserialize(SerializationUtils.java:
76)
at org.mule.util.SerializationUtils.deserialize(SerializationUtils.java:
127)
at org.mule.util.SerializationUtils.deserialize(SerializationUtils.java:
41)
at org.mule.transformer.simple.ByteArrayToSerializable.doTransform(ByteA
rrayToSerializable.java:48)
at org.mule.transformer.AbstractTransformer.transform(AbstractTransforme
r.java:422)
at org.mule.transformer.AbstractTransformer.transform(AbstractTransforme
r.java:374)
at org.mule.DefaultMuleMessage.applyAllTransformers(DefaultMuleMessage.j
ava:1309)
at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java
:1265)
at org.mule.DefaultMuleMessage.applyTransformers(DefaultMuleMessage.java
:1258)
at org.mule.transformer.AbstractTransformer.process(AbstractTransformer.
java:118)
at org.mule.processor.ExceptionHandlingMessageProcessor.process(Exceptio
nHandlingMessageProcessor.java:25)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessa
geReceiver.java:185)
at org.mule.transport.AbstractMessageReceiver.routeMessage(AbstractMessa
geReceiver.java:158)
at org.mule.transport.AbstractReceiverWorker$1.doInTransaction(AbstractR
eceiverWorker.java:130)
at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.
java:110)
at org.mule.transport.AbstractReceiverWorker.doRun(AbstractReceiverWorke
r.java:149)
at org.mule.transport.AbstractReceiverResourceWorker.doRun(AbstractRecei
verResourceWorker.java:46)
at org.mule.transport.AbstractReceiverWorker.run(AbstractReceiverWorker.
java:64)
at org.mule.work.WorkerContext.run(WorkerContext.java:309)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.run
Worker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Wor
ker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Unknown Source)


Any help will be appreciated.

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

http://xircles.codehaus.org/manage_email


Dirk Olmes

unread,
Apr 29, 2011, 4:33:20 AM4/29/11
to d...@mule.codehaus.org
On 04/29/2011 07:19 AM, Karl Lopes wrote:
> Hello, I have two apps module1 and module2 which I have independently
> deployed to mule. I have tested both independently using MuleClient
> and they work as expected. Now I am trying to integrate them, and
> pass objects from one to another using tcp.

I assume you pass these objects using Java Serialization? This could be
the cause of your problems, each Mule app has its own class loader.

-dirk

Karl Lopes

unread,
Apr 29, 2011, 8:32:38 PM4/29/11
to d...@mule.codehaus.org
My transformer setDataType was using the wrong class.. so isDataTypeSupported was returning false.

Karl Lopes

unread,
Jun 22, 2011, 2:29:48 PM6/22/11
to d...@mule.codehaus.org
Hi,
I solved the issue sometime back as noted in my previous statement. I has a typo in my code.
Thanks
Karl
Reply all
Reply to author
Forward
0 new messages