I continue my discovering of Mule. I modified my sample
to get its input from a REST URI, transform it to a Java
object through RestToCustomerRequest, a custom Mule
transformer. Then routing it to a JMS queue after having
transformed it to the type the JMS receiver is expecting
for (by CustomerToLoanQuote).
When I start Mule, there is no problem. When I send the
first REST input, I got a stack trace. From what I
understand from this ST, the object push on the JMS queue is
not a JMS message.
I'm lost here. Does someone have an idea of what I did
wrong?
Here is the mule-config.xml:
<mule-configuration id="fgeorges-loan-broker" version="1.0">
<connector name="jmsConnector"
className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="connectionFactoryJndiName"
value="ConnectionFactory"/>
<property name="jndiInitialFactory"
value="org.activemq.jndi.ActiveMQInitialContextFactory"/>
<property name="specification" value="1.1"/>
<map name="connectionFactoryProperties">
<property name="useEmbeddedBroker" value="true"/>
</map>
</properties>
</connector>
<endpoint-identifiers>
<endpoint-identifier
name="input-rest"
value="jetty:rest://localhost:10111/loanbroker"/>
<endpoint-identifier
name="bank-jms-out"
value="jms://test.loanbroker.request"/>
</endpoint-identifiers>
<transformers>
<transformer
name="rest-to-obj"
className="org.fgeorges.tries.mule.m02.RestToCustomerRequest"/>
<transformer
name="req-to-jms"
className="org.fgeorges.tries.mule.m02.CustomerToLoanQuote"/>
</transformers>
<model name="loan-broker">
<mule-descriptor
name="LoanBroker"
implementation="org.mule.components.simple.BridgeComponent">
<inbound-router>
<endpoint
address="servlet://localhost:10111/loanbroker"
transformers="rest-to-obj"/>
<endpoint address="input-rest"/>
</inbound-router>
<outbound-router>
<router
className="org.mule.routing.outbound.OutboundPassThroughRouter">
<endpoint address="bank-jms-out" transformers="req-to-jms"/>
</router>
</outbound-router>
</mule-descriptor>
</model>
</mule-configuration>
Here is RestToCustomerRequest.java:
package org.fgeorges.tries.mule.m02;
import org.mule.transformers.AbstractEventAwareTransformer;
import org.mule.umo.UMOEventContext;
import org.mule.umo.transformer.TransformerException;
public class RestToCustomerRequest
extends AbstractEventAwareTransformer
{
public RestToCustomerRequest()
{
setReturnClass(CustomerRequest.class);
}
public Object transform(Object src,
String encoding,
UMOEventContext context)
throws TransformerException
{
double amount;
int term;
String name;
try {
amount = Double.parseDouble(
getParam(context, "amount"));
term = Integer.parseInt(
getParam(context, "term"));
name = getParam(context, "name");
}
catch ( Exception ex ) {
throw new TransformerException(this, ex);
}
return new CustomerRequest(amount, term, name);
}
protected String getParam(UMOEventContext context,
String name)
throws IllegalArgumentException
{
String value = context.getMessage()
. getStringProperty(name, null);
if ( value == null ) {
throw new IllegalArgumentException("...");
}
return value;
}
}
Here is CustomerToLoanQuote.java:
package org.fgeorges.tries.mule.m02;
import org.mule.transformers.AbstractEventAwareTransformer;
import org.mule.umo.UMOEventContext;
import org.mule.umo.transformer.TransformerException;
public class CustomerToLoanQuote
extends AbstractEventAwareTransformer
{
public CustomerToLoanQuote()
{
setReturnClass(LoanQuoteRequestJMS.class);
}
public Object transform(Object src,
String encoding,
UMOEventContext ctxt)
throws TransformerException
{
CustomerRequest in =
(CustomerRequest) ctxt.getMessage().getPayload();
LoanQuoteRequestJMS out =
new LoanQuoteRequestJMS();
out.setAmount(in.getAmount());
out.setTerm(in.getTerm());
out.setScore(1.5);
return out;
}
}
And finally the stack trace:
INFO 2007-03-30 13:10:49,124 [SocketListener0-1]
org.mule.providers.jms.JmsMessageDispatcher: Successfully connected to:
jms://test.loanbroker.request
INFO 2007-03-30 13:10:49,194 [SocketListener0-1]
org.mule.providers.jms.JmsMessageDispatcher: Disconnected from:
jms://test.loanbroker.request
ERROR 2007-03-30 13:10:49,204 [SocketListener0-1]
org.mule.providers.http.servlet.MuleRESTReceiverServlet: message:
Failed to route event via endpoint:
MuleEndpoint{connector=org.mule.providers.http.servlet.ServletConnector@c2ee15,
endpointUri=http://localhost:10111/loanbroker?amount=12345&term=36&name=Florent,
transformer=Transformer{name='rest-to-obj', returnClass=false,
returnClass=false, sourceTypes=[class java.lang.Object]},
name='endpoint.servlet.loanbroker', type='receiver',
properties={amount=12345, term=36, name=Florent},
transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=null,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: java.lang.String
org.mule.umo.routing.RoutingException: Failed to route event via
endpoint:
MuleEndpoint{connector=org.mule.providers.http.servlet.ServletConnector@c2ee15,
endpointUri=http://localhost:10111/loanbroker?amount=12345&term=36&name=Florent,
transformer=Transformer{name='rest-to-obj', returnClass=false,
returnClass=false, sourceTypes=[class java.lang.Object]},
name='endpoint.servlet.loanbroker', type='receiver',
properties={amount=12345, term=36, name=Florent},
transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=null,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: java.lang.String
at
org.mule.routing.inbound.ForwardingConsumer.process(ForwardingConsumer.java:66)
at
org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:84)
at
org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:558)
at
org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:304)
at
org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:244)
at
org.mule.providers.http.servlet.MuleRESTReceiverServlet.doGet(MuleRESTReceiverServlet.java:87)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
at
org.mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:666)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
at org.mortbay.http.HttpServer.service(HttpServer.java:909)
at
org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
at
org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
at
org.mortbay.http.HttpConnection.handle(HttpConnection.java:833)
at
org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244)
at
org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
at
org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
Caused by: org.mule.umo.routing.RoutingException: Failed to route event
via endpoint: null. Message payload is of type:
org.fgeorges.tries.mule.m02.CustomerRequest
at
org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:85)
at
org.mule.routing.inbound.ForwardingConsumer.process(ForwardingConsumer.java:51)
... 19 more
Caused by: org.mule.umo.routing.CouldNotRouteOutboundMessageException:
Failed to route event via endpoint:
MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@633d51,
endpointUri=jms://test.loanbroker.request,
transformer=Transformer{name='req-to-jms', returnClass=false,
returnClass=false, sourceTypes=[class java.lang.Object]},
name='endpoint.jms.test.loanbroker.request', type='sender',
properties={}, transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=false,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: org.fgeorges.tries.mule.m02.CustomerRequest
at
org.mule.routing.outbound.FilteringOutboundRouter.route(FilteringOutboundRouter.java:76)
at
org.mule.routing.outbound.OutboundPassThroughRouter.route(OutboundPassThroughRouter.java:81)
at
org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:76)
at
org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:39)
at
org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:81)
... 20 more
Caused by: org.mule.umo.provider.DispatchException: Message is not a
JMS message, it is of type
"org.fgeorges.tries.mule.m02.LoanQuoteRequestJMS". Check the
transformer for this Connector "jmsConnector". Failed to route event
via endpoint:
MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@633d51,
endpointUri=jms://test.loanbroker.request,
transformer=Transformer{name='req-to-jms', returnClass=false,
returnClass=false, sourceTypes=[class java.lang.Object]},
name='endpoint.jms.test.loanbroker.request', type='sender',
properties={}, transactionConfig=Transaction{factory=null, action=NONE,
timeout=30000}, filter=null, deleteUnacceptedMessages=false,
initialised=true, securityFilter=null, synchronous=null,
initialState=started, createConnector=0, remoteSync=false,
remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
type: org.fgeorges.tries.mule.m02.CustomerRequest
at
org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDispatcher.java:168)
at
org.mule.providers.jms.JmsMessageDispatcher.doSend(JmsMessageDispatcher.java:349)
at
org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:233)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:328)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:209)
at
org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:118)
at
org.mule.routing.outbound.FilteringOutboundRouter.route(FilteringOutboundRouter.java:67)
... 24 more
Thanks in advance. Regards,
--drkm
___________________________________________________________________________
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions !
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses
http://fr.answers.yahoo.com
---------------------------------------------------------------------
To unsubscribe from this list please visit:
Florent Georges wrote:
--
/* Nunca interrumpas a tu enemigo cuando está cometiendo un error. */ - Napoleón Bonaparte.
>org.mule.routing.inbound.ForwardingConsumer.process (ForwardingConsumer.java:66)
> at
>org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:84)
> at
>org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage (AbstractMessageReceiver.java:558)
> at
>org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:304)
> at
>org.mule.providers.AbstractMessageReceiver.routeMessage (AbstractMessageReceiver.java:244)
> at
>org.mule.providers.http.servlet.MuleRESTReceiverServlet.doGet(MuleRESTReceiverServlet.java:87)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java :595)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
> at
>org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
> at
>org.mortbay.jetty.servlet.ServletHandler.dispatch (ServletHandler.java:666)
> at
>org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> at org.mortbay.http.HttpContext.handle (HttpContext.java:1482)
> at org.mortbay.http.HttpServer.service(HttpServer.java:909)
> at
>org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
> at
>org.mortbay.http.HttpConnection.handleNext (HttpConnection.java:982)
>org.mule.routing.outbound.OutboundPassThroughRouter.route (OutboundPassThroughRouter.java:81)
> at
>org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:76)
> at
>org.mule.transaction.TransactionTemplate.execute (TransactionTemplate.java:39)
> at
>org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:81)
> ... 20 more
>Caused by: org.mule.umo.provider.DispatchException : Message is not a
>JMS message, it is of type
>"org.fgeorges.tries.mule.m02.LoanQuoteRequestJMS". Check the
>transformer for this Connector "jmsConnector". Failed to route event
>via endpoint:
>MuleEndpoint{connector=org.mule.providers.jms.JmsConnector@633d51,
>endpointUri=jms://test.loanbroker.request,
>transformer=Transformer{name='req-to-jms', returnClass=false,
>returnClass=false, sourceTypes=[class java.lang.Object]},
>name='endpoint.jms.test.loanbroker.request', type='sender',
>properties={}, transactionConfig=Transaction{factory=null, action=NONE,
>timeout=30000}, filter=null, deleteUnacceptedMessages=false,
>initialised=true, securityFilter=null, synchronous=null,
>initialState=started, createConnector=0, remoteSync=false,
>remoteSyncTimeout=null, endpointEncoding=null}. Message payload is of
>type: org.fgeorges.tries.mule.m02.CustomerRequest
> at
>org.mule.providers.jms.JmsMessageDispatcher.dispatchMessage(JmsMessageDispatcher.java:168)
> at
>org.mule.providers.jms.JmsMessageDispatcher.doSend (JmsMessageDispatcher.java:349)
> at
>org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:233)
> at org.mule.impl.MuleSession.sendEvent(MuleSession.java:328)
> at org.mule.impl.MuleSession.sendEvent(MuleSession.java:209)
> at
>org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:118)
> at
>org.mule.routing.outbound.FilteringOutboundRouter.route (FilteringOutboundRouter.java:67)
> ... 24 more
>
> Thanks in advance. Regards,
>
>--drkm
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>___________________________________________________________________________
>D�couvrez une nouvelle fa�on d'obtenir des r�ponses � toutes vos questions !
>Profitez des connaissances, des opinions et des exp�riences des internautes sur Yahoo! Questions/R�ponses
>http://fr.answers.yahoo.com
>
>---------------------------------------------------------------------
>To unsubscribe from this list please visit:
>
> http://xircles.codehaus.org/manage_email
>
>
>
--
/* Nunca interrumpas a tu enemigo cuando est� cometiendo un error. */ - Napole�n Bonaparte.
That perfectly answer my problem. Thanks to both of you!
Regards,
--drkm
Andrew Perepelytsya wrote:
> org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> > > at
> org.mortbay.http.HttpServer.service(HttpServer.java:909)
> > > at
> > >org.mortbay.http.HttpConnection.service(HttpConnection.java:816)
> > > at
> >
> >org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:982)
>org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java
> > :39)
> > > at
> > >org.mule.routing.outbound.OutboundMessageRouter.route(
> > >D�couvrez une nouvelle fa�on d'obtenir des r�ponses �
> toutes vos
> > questions !
> > >Profitez des connaissances, des opinions et des exp�riences des
> > internautes sur Yahoo! Questions/R�ponses
> > >http://fr.answers.yahoo.com
> > >
> >
>
>---------------------------------------------------------------------
> > >To unsubscribe from this list please visit:
> > >
> > > http://xircles.codehaus.org/manage_email
> > >
> > >
> > >
> >
> > --
> > /* Nunca interrumpas a tu enemigo cuando est� cometiendo un
> error. */ -
> > Napole�n Bonaparte.
> >
> >
> >
> ---------------------------------------------------------------------
> > To unsubscribe from this list please visit:
> >
> > http://xircles.codehaus.org/manage_email
> >
> >
>
___________________________________________________________________________
Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions !
Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses