[rules-users] Drools and OSGi

Mark Proctor mproctor at codehaus.org
Wed Apr 14 17:25:54 EDT 2010


On 14/04/2010 19:27, Wouter Van Isterdael wrote:
> 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.
Try using the dependencies provided in OSGi bundles:
https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/

And follow this unit test for examples:
http://fisheye.jboss.org/browse/JBossRules/trunk/osgi-bundles/org.drools.osgi.test/src/test/java/org/drools/osgi/integrationtests/SimpleOsgiTest.java?r=31755

Mark


>
> Thank you for your time!
>
> Kind regards
>
> Aerv
>
> 2010/4/6 AervTerrh <woutervanisterdael at gmail.com 
> <mailto: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 <http://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 <mailto:rules-users at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> -- 
> __________________________________
> Van Isterdael Wouter
> Roesbeke 27
> 9402 Meerbeke
> 0496401476
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>    

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100414/10bd8808/attachment.html 


More information about the rules-users mailing list