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.

Reply via email to