Hi,
Iam having the following setup
JMS queue(Consumer)-->eip:Content Based
Router-->SA(DroolsComponent)-->eip:TAP1 or eip:TAP2(Based on rule base)
part of xbean.xml for "eip:Content Based Router" is
<eip:routing-rule>
<eip:predicate>
<eip:xpath-predicate xpath="/Record/eid = 100"
namespaceContext="#nsContext" />
</eip:predicate>
<eip:target>
<eip:exchange-target service="bescocr:myDroolsService" />
</eip:target>
</eip:routing-rule>
xbean.xml for DroolsComponent(SU) is
<beans xmlns:drools="http://servicemix.apache.org/drools/1.0"
xmlns:bescocr="http://xxx.com/bescocr_031807">
<drools:endpoint
service="bescocr:myDroolsService"
endpoint="endpoint"
ruleBaseResource="classpath:routing.drl"/>
</beans>
routing.drl is
package org.apache.servicemix.drools
import org.apache.servicemix.drools.model.Exchange;
global org.apache.servicemix.drools.model.JbiHelper jbi;
rule "Route to tap1"
when
me : Exchange( status == Exchange.ACTIVE, in : in != null )
eval( in.xpath("/Record/eid = 100") )
then
jbi.route( "bescocr::tap1" );
end
rule "Route to tap2"
when
me : Exchange( status == Exchange.ACTIVE, in : in != null )
eval( in.xpath("/Record/eid = 101") )
then
jbi.route( "bescocr::tap2" );
end
with the above setup iam getting the following exception "for service: null
and interface: null" the exception is as follows, do i need to set something
else in xbean.xml?
javax.jbi.messaging.MessagingException: Could not find route for exchange:
InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-7:0
status: Active
role: provider
in: <My Message>
] for service: null and interface: null
at
org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
at
org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
at
org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:456)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:428)
at
org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(EndpointDeliveryChannel.java:88)
at
org.apache.servicemix.drools.model.JbiHelper.route(JbiHelper.java:109)
at
org.apache.servicemix.drools.Rule_Route_to_tap1_0.consequence(Rule_Route_to_tap1_0.java:11)
at
org.apache.servicemix.drools.Rule_Route_to_tap1_0ConsequenceInvoker.evaluate(Rule_Route_to_tap1_0ConsequenceInvoker.ja
va:19)
at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
Source)
at
org.apache.servicemix.drools.DroolsEndpoint.drools(DroolsEndpoint.java:150)
at
org.apache.servicemix.drools.DroolsEndpoint.process(DroolsEndpoint.java:141)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
ERROR - DroolsComponent - Error processing exchange InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-3:2
status: Active
role: provider
service: {http://xxx.com/bescocr_031807}myDroolsService
endpoint: endpoint
in: <My Message>
]
org.drools.spi.ConsequenceException: javax.jbi.messaging.MessagingException:
Could not find route for exchange: InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-7:0
status: Active
role: provider
in: <My Message>
] for service: null and interface: null
at org.drools.common.DefaultAgenda.fireActivation(Unknown Source)
at org.drools.common.DefaultAgenda.fireNextItem(Unknown Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
Source)
at org.drools.common.AbstractWorkingMemory.fireAllRules(Unknown
Source)
at
org.apache.servicemix.drools.DroolsEndpoint.drools(DroolsEndpoint.java:150)
at
org.apache.servicemix.drools.DroolsEndpoint.process(DroolsEndpoint.java:141)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:441)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.jbi.messaging.MessagingException: Could not find route for
exchange: InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-7:0
status: Active
role: provider
in: <My Message>
] for service: null and interface: null
at
org.apache.servicemix.jbi.nmr.DefaultBroker.sendExchangePacket(DefaultBroker.java:295)
at
org.apache.servicemix.jbi.security.SecuredBroker.sendExchangePacket(SecuredBroker.java:80)
at
org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:793)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:381)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:456)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:428)
at
org.apache.servicemix.common.EndpointDeliveryChannel.sendSync(EndpointDeliveryChannel.java:88)
at
org.apache.servicemix.drools.model.JbiHelper.route(JbiHelper.java:109)
at
org.apache.servicemix.drools.Rule_Route_to_tap1_0.consequence(Rule_Route_to_tap1_0.java:11)
at
org.apache.servicemix.drools.Rule_Route_to_tap1_0ConsequenceInvoker.evaluate(Rule_Route_to_tap1_0ConsequenceInvoker.ja
va:19)
... 16 more
ERROR - JmsComponent - Error processing exchange InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-4:0
status: Error
role: consumer
service: {http://xxx.com/bescocr_031807}JmsToPipeTapSvc
endpoint: tap
in: <My Message>
error: org.drools.spi.ConsequenceException:
javax.jbi.messaging.MessagingException: Could not find route for exchange:
InOnly[
id: ID:EC4T16INT165110-4730-1182344415869-7:0
status: Active
role: provider
in: <My Message>
] for service: null and interface: null
]
java.lang.UnsupportedOperationException: A destination must be specified.
at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:448)
at
org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:75)
at
org.apache.activemq.pool.PooledProducer.send(PooledProducer.java:60)
at
org.apache.servicemix.jms.multiplexing.MultiplexingConsumerProcessor.process(MultiplexingConsumerProcessor.java:125)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.doProcess(AsyncBaseLifeCycle.java:489)
at
org.apache.servicemix.common.AsyncBaseLifeCycle.processExchange(AsyncBaseLifeCycle.java:463)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:46)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
ERROR - JmsComponent - Error setting exchange status to
ERROR
javax.jbi.messaging.MessagingException: illegal call to send / sendSync
at
org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:571)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:370)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:417)
at
org.apache.servicemix.common.BaseLifeCycle.onMessageExchange(BaseLifeCycle.java:58)
at
org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:593)
at
org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:174)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doRouting(SedaFlow.java:176)
at
org.apache.servicemix.jbi.nmr.flow.seda.SedaQueue$1.run(SedaQueue.java:134)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at
edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:595)
--
View this message in context:
http://www.nabble.com/Problem-while-invoking-rule-by-using-drools-component-tf3952519s12049.html#a11213830
Sent from the ServiceMix - User mailing list archive at Nabble.com.