See http://issues.apache.org/activemq/browse/SM-316. I think Jeff has been working on that a long time ago... ?
Cheers, Guillaume Nodet On 5/10/06, c.pescetelli <[EMAIL PROTECTED]> wrote:
Hi all, I'm having some problems using one of the available routing components. I'm trying to use drools as described in http://servicemix.org/Drools but I'm still not able to route my messages as I'd like to. Briefly, I'm trying to send messages to the Drools component using an HttpConnector but it seems that the incoming message reaches the drools router in a wrong state (I get an "illegal exchange status: done" message). Am I missing something in the way messages should be routed by/to my drools component? This is a snippet from my servicemix.xml file: <sm:activationSpec componentName="httpReceiver" service="foo:httpBinding" endpoint="httpReceiver" destinationService="foo:sender"> <sm:component> <bean xmlns="http://xbean.org/schemas/spring/1.0" class="org.apache.servicemix.components.http.HttpConnector"> <property name="host" value="localhost"/> <property name="port" value="8912"/> </bean> </sm:component> </sm:activationSpec> <!-- Drools: Router: Configured in etc/rulebase.xsl --> <sm:activationSpec componentName="sender" service="foo:sender"> <sm:component> <bean class="org.apache.servicemix.components.drools.DroolsComponent"> <property name="ruleBaseResource" value="etc/rulebase.xml" /> </bean> </sm:component> </sm:activationSpec> Here my rulebase.xml file: <rule-set name="cheese rules" xmlns="http://drools.org/rules" xmlns:jbi="http://drools.org/semantics/servicemix" xmlns:foo="http://servicemix.org/demo/"> <application-data identifier="jbi">org.apache.servicemix.components.drools.JbiHelper</application-data> <application-data identifier="context">javax.jbi.component.ComponentContext</application-data> <application-data identifier="deliveryChannel">javax.jbi.messaging.DeliveryChannel</application-data> <rule name="Ignore 2 message"> <parameter identifier="exchange"> <class>javax.jbi.messaging.MessageExchange</class> </parameter> <jbi:condition>/*/@id = 2</jbi:condition> <jbi:invoke service="foo:receiver"/> </rule> </rule-set> That's the Exception I get: DEBUG - OutBinding.onMessageExchange(52) | Exchange failed javax.jbi.messaging.MessagingException: illegal exchange status: done at org.apache.servicemix.jbi.messaging.MessageExchangeImpl.handleSend(MessageExchangeImpl.java:550) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:449) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.send(DeliveryChannelImpl.java:490) at org.apache.servicemix.components.util.PojoSupport.done(PojoSupport.java:218) at org.apache.servicemix.components.drools.DroolsComponent.process(DroolsComponent.java:117) at org.apache.servicemix.components.util.OutBinding.onMessageExchange(OutBinding.java:48) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.processInBound(DeliveryChannelImpl.java:636) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.doRouting(AbstractFlow.java:171) at org.apache.servicemix.jbi.nmr.flow.seda.SedaFlow.doSend(SedaFlow.java:157) at org.apache.servicemix.jbi.nmr.flow.AbstractFlow.send(AbstractFlow.java:121) at org.apache.servicemix.jbi.nmr.Broker.sendExchangePacket(Broker.java:295) at org.apache.servicemix.jbi.container.JBIContainer.sendExchange(JBIContainer.java:694) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.doSend(DeliveryChannelImpl.java:450) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:524) at org.apache.servicemix.jbi.messaging.DeliveryChannelImpl.sendSync(DeliveryChannelImpl.java:501) at org.apache.servicemix.components.http.HttpInOutBinding.processInOut(HttpInOutBinding.java:59) at org.apache.servicemix.components.http.HttpInOutBinding.process(HttpInOutBinding.java:44) at org.apache.servicemix.components.http.BindingServlet.doPost(BindingServlet.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:350) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:536) at org.mortbay.jetty.Server.handle(Server.java:309) at org.mortbay.jetty.Server.handle(Server.java:285) at org.mortbay.jetty.HttpConnection.doHandler(HttpConnection.java:364) at org.mortbay.jetty.HttpConnection.access$1600(HttpConnection.java:46) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:629) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:608) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:194) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:298) at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:153) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:412) I'm working with the 3.0-Snapshot on linux. thanks for any help Carlo -- View this message in context: http://www.nabble.com/Drools-usage-t1589911.html#a4314836 Sent from the ServiceMix - User forum at Nabble.com.
