[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