Hi all, I am trying to run Drools as a bundle with Equinox, however I found an issue with Drools 5 with the classloader, apparently Drools 5 does not always uses the classloader that I pass in the configuration (PackageBuilderConfiguration). Then I decided to test it with Drools 4.0.7 and I do not have the classloader problem anymore but I got the following error (NoSuchMethodError) when I execute stateFulSession.fireAllRules, below is the stack.
I am trying to run it with Equinox 3.4 and I reviewed that all the dependencies are ok. The .drl file is compiled successfully, see the code that I am using below. I followed the sample publishe in: http://www.dynamicjava.org/articles/osgi-integration/drools-osgi And I tried with the bundles published by spring and I also tried with my own sample but I get the same error. Does anybody used successfully Drools 4.0.7 or 5 in OSGi successfully? What should I change to have my code running in OSGi? Thanks in advance, The Code: InputStreamReader source = new InputStreamReader( this.getClass.getResourceAsStream( "helloWorld.drl" ) ); OsgiEnvironmentClassLoader classLoader = new OsgiEnvironmentClassLoader(bundleContext, Thread.currentThread().getContextClassLoader(), bundleContext.getBundle()); PackageBuilderConfig packageBuilderConfig = new PackageBuilderConfiguration(classLoader, null); PackageBuilder builder = new PackageBuilder(packageBuilderConfig); //this wil parse and compile in one step builder.addPackageFromDrl( source ); // Check the builder for errors if ( builder.hasErrors() ) { System.out.println( builder.getErrors().toString() ); throw new RuntimeException( "Unable to compile \"helloWorld.drl\"."); } //get the compiled package (which is serializable) Package pkg = builder.getPackage(); Package ruleBaseConfig = new RuleBaseConfiguration() ruleBaseConfig.setClassLoader(classLoader); //add the package to a rulebase (deploy the rule package). RuleBase ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfig); ruleBase.addPackage( pkg ); StateFulSession session = ruleBase.newStatefulSession(); session.fireAllRules(); The Exception: INFO: bundle changed: TopicMapEditorService at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv ator(BundleContextImpl.java:1028) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund leContextImpl.java:984) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl eHost.java:344) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:267) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:259) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st art(FrameworkCommandProvider.java:254) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter. execute(FrameworkCommandInterpreter.java:150) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F rameworkConsole.java:302) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra meworkConsole.java:287) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo rkConsole.java:223) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NoSuchMethodError: org.drools.WorkingMemory.fireAllRules()I at org.topicology.security.TSecurity.initialize(TSecurity.scala:49) at org.topicology.TMEditorService.Activator.start(Activator.scala:28) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund leContextImpl.java:1009) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv ator(BundleContextImpl.java:1003) ... 14 more Nested Exception: java.lang.NoSuchMethodError: org.drools.WorkingMemory.fireAllRules()I at org.topicology.security.TSecurity.initialize(TSecurity.scala:49) at org.topicology.TMEditorService.Activator.start(Activator.scala:28) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund leContextImpl.java:1009) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv ator(BundleContextImpl.java:1003) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund leContextImpl.java:984) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl eHost.java:344) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:267) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:259) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st art(FrameworkCommandProvider.java:254) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter. execute(FrameworkCommandInterpreter.java:150) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F rameworkConsole.java:302) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra meworkConsole.java:287) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo rkConsole.java:223) at java.lang.Thread.run(Unknown Source) Nested Exception: java.lang.NoSuchMethodError: org.drools.WorkingMemory.fireAllRules()I at org.topicology.security.TSecurity.initialize(TSecurity.scala:49) at org.topicology.TMEditorService.Activator.start(Activator.scala:28) at org.eclipse.osgi.framework.internal.core.BundleContextImpl$2.run(Bund leContextImpl.java:1009) at java.security.AccessController.doPrivileged(Native Method) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActiv ator(BundleContextImpl.java:1003) at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(Bund leContextImpl.java:984) at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(Bundl eHost.java:344) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:267) at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(Abstrac tBundle.java:259) at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._st art(FrameworkCommandProvider.java:254) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter. execute(FrameworkCommandInterpreter.java:150) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(F rameworkConsole.java:302) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Fra meworkConsole.java:287) at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(Framewo rkConsole.java:223) at java.lang.Thread.run(Unknown Source)
_______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users