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>