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.


Reply via email to