[rules-users] Drools and OSGi

Wouter Van Isterdael woutervanisterdael at gmail.com
Wed Apr 14 14:27:37 EDT 2010


I still seem to be having problems getting it working. The problem did not
go away.

I still get the same error. Would anyone know of a simple step-by-step
tutorial for using Drools in a Felix OSGi environment? Preferrably within
Eclipse and with Pax Runner.

Any help would be very much appreciated.

Thank you for your time!

Kind regards

Aerv

2010/4/6 AervTerrh <woutervanisterdael at gmail.com>

> Thanks for the reply. I will try this tomorrow and keep you posted!
>
> 2010/4/5 Jason Davidson [via Drools - Java Rules Engine] <[hidden email]<http://n3.nabble.com/user/SendEmail.jtp?type=node&node=698969&i=0>
> >
>
>> I don't know if this helps, but I had to turn the MVEL JIT compiler off in
>> the Equinox OSGi container:
>>             OptimizerFactory.setDefaultOptimizer("reflective");
>>
>> Also, we used pre-compiled packages instead of compiling the DRL files at
>> runtime.  For example:
>>
>> ....
>>             RuleBaseConfiguration ruleBaseConfig = new
>> RuleBaseConfiguration();
>>
>> ruleBaseConfig.setClassLoader(this.getClass().getClassLoader());
>>
>>             //MVEL in OSGi is a complete CF - this turns off the MVEL JIT
>> - potential resource hog but that's the nature of OSGi classloading
>>             //and Drools...
>>             OptimizerFactory.setDefaultOptimizer("reflective");
>>
>>             RuleBase ruleBase =
>> RuleBaseFactory.newRuleBase(ruleBaseConfig);
>>
>>             InputStream pkgIs =
>> this.getClass().getResourceAsStream("/com/cjs/hazel/rules/com.cjs.hazel.rules.pkg");
>>             addPackage(ruleBase,pkgIs);
>> .....
>>
>> On Fri, Apr 2, 2010 at 4:42 PM, AervTerrh <[hidden email]<http://n3.nabble.com/user/SendEmail.jtp?type=node&node=698731&i=0>
>> > wrote:
>>
>>>
>>> Hey,
>>>
>>> Okay. I know this problem can be found all over. But I can't seem to
>>> figure
>>> out a solution to it. Somehow I must be doing something wrong. I've
>>> created
>>> a simple application that evaluates some rules and changes some objects
>>> based on that. Everything worked fine, not a single problem there. All
>>> libraries could be easily found etc.
>>>
>>> Now I wanted to convert this to a Felix OSGi bundle.
>>>
>>> So, what I did, was creating a bundle (new plugin project based on
>>> existing
>>> jars) with the drools jars (core, compiler, api, jsr) and tried the next
>>> code in the RuleEngine class:
>>>
>>> Properties props = new Properties();
>>> props.setProperty("drools.dialect.java.compiler", "JANINO");
>>> KnowledgeBuilderConfiguration config =
>>> KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(props, null);
>>> (here's where it fails)
>>> KnowledgeBuilder kbuilder =
>>> KnowledgeBuilderFactory.newKnowledgeBuilder(config);
>>> kbuilder.add(ResourceFactory.newClassPathResource(fileName,
>>> RuleEngine.class), ResourceType.DRL);
>>>
>>> This is pretty much the loading of the rule file. The RuleEngine is
>>> started
>>> in an Activator. The file is found and everything. But I keep getting the
>>> same error when starting the bundle.
>>>
>>> org.drools.RuntimeDroolsException: Unable to load dialect
>>> 'org.drools.rule.builder.dialect.mvel.MVELDialectConfigurati
>>> on:mvel:null'
>>> at org.drools.compiler.PackageBuilderConfiguration.addDialect(P
>>> ackageBuilderConfiguration.java:274)
>>> at org.drools.compiler.PackageBuilderConfiguration.buildDialect
>>> ConfigurationMap(PackageBuilderConfiguration.java:259)
>>> at org.drools.compiler.PackageBuilderConfiguration.init(Package
>>> BuilderConfiguration.java:176)
>>> at
>>>
>>> org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:148)
>>> at org.drools.builder.impl.KnowledgeBuilderProviderImpl.newKnow
>>> ledgeBuilderConfiguration(KnowledgeBuilderProviderImpl.java: 21)
>>> at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuild
>>> erConfiguration(KnowledgeBuilderFactory.java:68)
>>> at test.Activator$RuleCreator.createRule(Activator.java:52)
>>> at test.Activator.start(Activator.java:32)
>>> at org.apache.felix.framework.util.SecureAction.startActivator(
>>> SecureAction.java:639)
>>> at org.apache.felix.framework.Felix.activateBundle(Felix.java:1 700)
>>> at org.apache.felix.framework.Felix.startBundle(Felix.java:1622 )
>>> at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.j ava:1077)
>>> at org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl
>>> .java:264)
>>> at java.lang.Thread.run(Unknown Source)
>>> Caused by: java.lang.ClassNotFoundException:
>>> org.drools.rule.builder.dialect.mvel.MVELDialectConfiguratio n
>>> at java.net.URLClassLoader$1.run(Unknown Source)
>>>
>>>
>>> The packages I import in the manifest:
>>> Import-Package: org.codehaus.janino;version="2.4.3",
>>> org.drools,
>>> org.drools.builder,
>>> org.drools.compiler,
>>> org.drools.io,
>>> org.drools.rule,
>>> org.drools.rule.builder.dialect.java,
>>> org.drools.rule.builder.dialect.mvel,
>>> org.osgi.framework;version="1.3.0"
>>>
>>> In my target platform I add the the drools project I created (with
>>> drools-xx.jar (the necessary ones), I also added the following:
>>> -ant
>>> -antlr-runtime
>>> -janino
>>> -jsr94
>>> -xstream
>>>
>>> But I can't seem to get it working... Does anyone know what can be done
>>> about this? Or a working example of Drools in Felix OSGi would also be
>>> helpful.
>>>
>>> Any help is very much appreciated, I've been looking into this for days.
>>>
>>> Thanks!
>>>
>>> Kind regards,
>>>
>>> Aerv
>>> --
>>> View this message in context:
>>> http://n3.nabble.com/Drools-and-OSGi-tp694011p694011.html
>>> Sent from the Drools - User mailing list archive at Nabble.com.
>>> _______________________________________________
>>> rules-users mailing list
>>> [hidden email]<http://n3.nabble.com/user/SendEmail.jtp?type=node&node=698731&i=1>
>>>
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>
>>
>>
>> _______________________________________________
>> rules-users mailing list
>> [hidden email]<http://n3.nabble.com/user/SendEmail.jtp?type=node&node=698731&i=2>
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>
>
>
> --
> __________________________________
> Van Isterdael Wouter
> Roesbeke 27
> 9402 Meerbeke
> 0496401476
>
> ------------------------------
> View this message in context: Re: Drools and OSGi<http://n3.nabble.com/Drools-and-OSGi-tp694011p698969.html>
>
> Sent from the Drools - User mailing list archive<http://n3.nabble.com/Drools-User-f47000.html>at Nabble.com.
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
__________________________________
Van Isterdael Wouter
Roesbeke 27
9402 Meerbeke
0496401476
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100414/6eb5b8ec/attachment.html 


More information about the rules-users mailing list