Hi

I can reproduce the problem too. I don't know Drools very well. I
couldn't find any example for Camel and Drools with stateful ksession.
If you use as stateful kbase you have probably to define a persistence,
but I'm not sure.

After the person is processed by a rule engine it should have a drink
set and the NPE should not happen in the expression
${body.getDrink.getDescription}. I have initialized Drink.WATER as
default value in Person and this problem does not occur, but WATER is
always set. It looks like the Person is not changed by the rule engine,
or it is changed, but the changes are not visible in the Camel route
(outside the Drools context). 

Best regards
Krzysztof



On 09.07.2014 02:32, mgingell wrote:
> Hi, 
> I am trying to get a stateful drools session to work, based on the current
> servicemix 5.1.0 camel-drools example. Building and deploying the bundles /
> features work fine. If I change the spring or blueprint to try to create a
> stateful instance, I get a NPE exception thrown when I attempt to deploy the
> bundle. 
>
> Is this broken, or am I missing some other configuration? 
>
> spring.xml snippet - changed type="stateless" to type="stateful" 
>
>     <drools:ksession id="ksession1" type="stateful" name="ksession1"
> kbase="kbase1" node="node1">
>         
>         <drools:configuration />
>     </drools:ksession>
>
> Log output (info level): 
> 21:18:58,470 | ERROR | imer://testRoute | DefaultErrorHandler | 124 -
> org.apache.camel.camel-core - 2.13.1 | Failed delivery for (MessageId:
> ID-mike-MacBook-54663-1404863002659-3-3025 on ExchangeId:
> ID-mike-MacBook-54663-1404863002659-3-3026). Exhausted after delivery
> attempt: 1 caught:
> org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
> invoke method: .getDrink.getDescription on null due to:
> java.lang.NullPointerException Message History
> ---------------------------------------------------------------------------------------------------------------------------------------
> RouteId ProcessorId Processor Elapsed (ms) [testRoute ] [testRoute ]
> [timer://testRoute ] [ 3] [testRoute ] [bean5 ] [bean[ref:personHelper
> method: createTestPerson] ] [ 0] [testRoute ] [DrinkChooser ]
> [drools:node1/ksession1?action=insertBody ] [ 1] [testRoute ] [choice4 ]
> [when[simple{${body.isVip}}]choice[] ] [ 2] [testRoute ] [log8 ] [log ] [ 2]
> Exchange
> ---------------------------------------------------------------------------------------------------------------------------------------
> Exchange[ Id ID-mike-MacBook-54663-1404863002659-3-3026 ExchangePattern
> InOnly Headers {breadcrumbId=ID-mike-MacBook-54663-1404863002659-3-3025,
> CamelRedelivered=false, CamelRedeliveryCounter=0, firedTime=Tue Jul 08
> 21:18:58 ADT 2014} BodyType org.apache.servicemix.examples.camel.Person Body
> Person{age=17, canDrink=false, sex=MALE, income=49350, isRich=false,
> isVip=false, drink=null} ] Stacktrace
> ---------------------------------------------------------------------------------------------------------------------------------------
> org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
> invoke method: .getDrink.getDescription on null due to:
> java.lang.NullPointerException at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:117)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:132)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:121)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:113)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:821)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.builder.ExpressionBuilder$59.evaluate(ExpressionBuilder.java:1397)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.LogProcessor.process(LogProcessor.java:51)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:157)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:68)[124:org.apache.camel.camel-core:2.13.1]
> at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_55] at
> java.util.TimerThread.run(Timer.java:505)[:1.7.0_55] Caused by:
> java.lang.NullPointerException 21:18:58,471 | WARN | imer://testRoute |
> TimerConsumer | 124 - org.apache.camel.camel-core - 2.13.1 | Error
> processing exchange. Exchange[Message: Person{age=17, canDrink=false,
> sex=MALE, income=49350, isRich=false, isVip=false, drink=null}]. Caused by:
> [org.apache.camel.language.bean.RuntimeBeanExpressionException - Failed to
> invoke method: .getDrink.getDescription on null due to:
> java.lang.NullPointerException]
> org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to
> invoke method: .getDrink.getDescription on null due to:
> java.lang.NullPointerException at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:117)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:132)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:121)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:113)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.builder.ExpressionBuilder$33.evaluate(ExpressionBuilder.java:821)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.builder.ExpressionBuilder$59.evaluate(ExpressionBuilder.java:1397)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.LogProcessor.process(LogProcessor.java:51)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:111)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:118)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.component.timer.TimerConsumer.sendTimerExchange(TimerConsumer.java:157)[124:org.apache.camel.camel-core:2.13.1]
> at
> org.apache.camel.component.timer.TimerConsumer$1.run(TimerConsumer.java:68)[124:org.apache.camel.camel-core:2.13.1]
> at java.util.TimerThread.mainLoop(Timer.java:555)[:1.7.0_55] at
> java.util.TimerThread.run(Timer.java:505)[:1.7.0_55] Caused by:
> java.lang.NullPointerException
>
>
>
> --
> View this message in context: 
> http://servicemix.396122.n5.nabble.com/Servicemix-5-1-0-camel-drools-example-problem-tp5721164.html
> Sent from the ServiceMix - User mailing list archive at Nabble.com.


-- 
Krzysztof Sobkowiak

JEE & OSS Architect | Senior Solution Architect @ Capgemini | Committer
@ ASF
Capgemini <http://www.pl.capgemini.com/> | Software Solutions Center
<http://www.pl.capgemini-sdm.com/> | Wroclaw
e-mail: [email protected] <mailto:[email protected]> |
Twitter: @KSobkowiak
Calendar: http://goo.gl/yvsebC

Reply via email to