Does anyone have an example of using Drools within a servicemix config.
I'm having trouble getting mine to work correctly.  I have attached the
associated config files but I keep getting the following exception:

java.lang.NullPointerException
        at
org.servicemix.components.http.HttpMarshaler.toResponse(HttpMarshaler.ja
va:72)
        at
org.servicemix.components.http.HttpInOutBinding.processInOut(HttpInOutBi
nding.java:63)
        at
org.servicemix.components.http.HttpInOutBinding.process(HttpInOutBinding
.java:46)
        at
org.servicemix.components.http.BindingServlet.doGet(BindingServlet.java:
68)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
        at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFil
terInternal(OpenSessionInViewFilter.java:174)
        at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequ
estFilter.java:76)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
        at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
r.java:81)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
tionFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
erChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
e.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
e.java:178)
        at
org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipa
lValve.java:39)
        at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs
sociationValve.java:153)
        at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
ava:59)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
48)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85
6)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
onnection(Http11Protocol.java:744)
        at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
.java:527)
        at
org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorker
Thread.java:112)
        at java.lang.Thread.run(Thread.java:595)

-Jeff


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xbean.org/schemas/spring/1.0";
	xmlns:jsr181="http://servicemix.org/jsr181/1.0";
	xmlns:sm="http://servicemix.org/config/1.0";
	xmlns:my="http://servicemix.org/demo/";
    xmlns:foo="http://servicemix.org/demo/";
	xmlns:xfire="http://xfire.components.servicemix.org";
	xmlns:wsn="http://notification.ws.servicemix.org";>

  <!-- the JBI container -->
  <sm:container id="jbi"
      rootDir="../wdir"
      useMBeanServer="true"
	  createMBeanServer="true" 
      installationDirPath="../install"
      deploymentDirPath="../deploy"
	  monitorInstallationDirectory="true" 
      dumpStats="true"
	  statsInterval="10" 
      transactionManager="#transactionManager">

    <sm:activationSpecs>

      <sm:activationSpec componentName="httpBinding" service="http:httpBinding" destinationService="drools:router">
        <sm:component><bean class="org.servicemix.components.http.HttpInOutBinding" /></sm:component>
      </sm:activationSpec>

	  <sm:activationSpec componentName="droolsRouter" service="drools:router">
		<sm:component>
			<bean class="org.servicemix.components.drools.DroolsComponent">
				<property name="ruleBaseResource" value="classpath:com/sterling/servicemix/component/drools/rulebase.xml"/>
			</bean>
		</sm:component>
	  </sm:activationSpec>

      <!-- Transform http request to soap request -->
      <sm:activationSpec componentName="httpTransformer" service="http:transformer">
        <sm:component>
          <bean class="com.sterling.servicemix.component.http.HttpTransformer">
            <property name="property" value="username"/>
          </bean>
        </sm:component>
      </sm:activationSpec>

	  <sm:activationSpec componentName="xfireBinding" service="xfire:UserService">
		<sm:component>
			<bean class="com.sterling.servicemix.component.xfire.XFireBinding">
				<property name="xfire" ref="xfire"/>
			</bean>
		</sm:component>
	  </sm:activationSpec>

	</sm:activationSpecs>

  </sm:container>

  <bean name="xfireServiceBean" abstract="true">
    <property name="serviceFactory" ref="xfire.serviceFactory"/>
    <property name="xfire" ref="xfire"/>
  </bean>   

  <bean name="lookupUser" class="org.codehaus.xfire.spring.ServiceBean" parent="xfireServiceBean">
    <property name="serviceBean" ref="userService"/>
	<property name="serviceClass"><value>com.sterling.service.UserService</value></property>
  </bean>

  <!-- the JCA container -->
  <bean id="jencks" class="org.jencks.JCAContainer" singleton="true">

    <!-- lets use the default configuration of work manager and transaction manager-->
    <property name="bootstrapContext">
      <bean class="org.jencks.factory.BootstrapContextFactoryBean">
        <property name="threadPoolSize" value="25"/>
      </bean>
    </property>

    <!-- the JCA Resource Adapter -->
    <property name="resourceAdapter">
      <bean id="activeMQResourceAdapter" class="org.activemq.ra.ActiveMQResourceAdapter" singleton="true">
        <property name="serverUrl" value="tcp://localhost:61636"/>
      </bean>
    </property>
  </bean>

  <bean id="transactionManager" class="org.jencks.factory.TransactionManagerFactoryBean"/>

</beans>
<rule-set name="cheese rules"
	xmlns="http://drools.org/rules";
	xmlns:java="http://drools.org/semantics/java";
	xmlns:xfire="http://xfire.components.servicemix.org";>

	<application-data identifier="jbi">org.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="httpRouter">

		<parameter identifier="exchange">
			<class>javax.jbi.messaging.MessageExchange</class>
		</parameter>
		<java:condition>"".equals(exchange.getMessage("in").getProperty("username")) != false</java:condition>
		<java:consequence>
			// lets try send a message
			jbi.forwardToService("http:transformer", "receiver");
		</java:consequence>
	
	</rule>

</rule-set>

Reply via email to