Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Hello. Although without much conviction, I've tried the Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the compilation level of the rules... As I said in a previous answer, I don't know exactly how to do it, but I think the solution may be in the way that Drools takes the classloader passed by the application to have access to specific classes like the usually imported beans used in the rules. Indeed, perhaps that instead of using directly this classloader, for its tasks, among of them the rules compilation, it should be possible to use some kind of enriched classloader that carries all the Drools needed packages, and delegates application classes resolution to the application's one. What do you think of that ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
If you look to my example posted previously there are no issues. Can you make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell me what happen. Which JDK do you sue ? On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Although without much conviction, I've tried the Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the compilation level of the rules... As I said in a previous answer, I don't know exactly how to do it, but I think the solution may be in the way that Drools takes the classloader passed by the application to have access to specific classes like the usually imported beans used in the rules. Indeed, perhaps that instead of using directly this classloader, for its tasks, among of them the rules compilation, it should be possible to use some kind of enriched classloader that carries all the Drools needed packages, and delegates application classes resolution to the application's one. What do you think of that ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Hello. I could try to test on ServiceMix 5 that embeds Karaf 2.3.4, but for my concrete project, the customer current platform uses a ServiceMix 4.5.3 which is not really possible to change today while many other modules are already deployed. Did you try in your environment the test project that I attached yesterday ? There is a rule in the project with an accumulate that generates java code that is not compiled because of missing indirect dependancy despite of the Import-Package that I've copied from your examples. Hence my idea of a proxy classloader between Drools and its compiler and the classloader provided by the application bundle, and avoid the dynamic import that breaks the good practices... 2014-05-21 11:48 GMT+02:00 Charles Moulliard ch0...@gmail.com: If you look to my example posted previously there are no issues. Can you make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell me what happen. Which JDK do you sue ? On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Although without much conviction, I've tried the Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the compilation level of the rules... As I said in a previous answer, I don't know exactly how to do it, but I think the solution may be in the way that Drools takes the classloader passed by the application to have access to specific classes like the usually imported beans used in the rules. Indeed, perhaps that instead of using directly this classloader, for its tasks, among of them the rules compilation, it should be possible to use some kind of enriched classloader that carries all the Drools needed packages, and delegates application classes resolution to the application's one. What do you think of that ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
I can reproduce your error when I deploy the project (compiled with 1.7) and running with JDK 1.7 on Karaf 2.2.1/Felix 3.2.2 (= SMX 4.5.3) 2014-05-21 13:30:25,020 | INFO | l Console Thread | ClasspathKieProject | 211 - org.drools.compiler - 6.0.3.redhat-1 | Found kmodule: bundle://214.4:1/META-INF/kmodule.xml 2014-05-21 13:30:25,024 | DEBUG | l Console Thread | ClasspathKieProject | 211 - org.drools.compiler - 6.0.3.redhat-1 | Discovered classpath module org.drools.example:simple:1.0.0-SNAPSHOT 2014-05-21 13:30:25,024 | INFO | l Console Thread | KieRepositoryImpl | 211 - org.drools.compiler - 6.0.3.redhat-1 | KieModule was added:org.drools.osgi.compiler.OsgiKieModule@501d0b5a 2014-05-21 13:30:25,044 | ERROR | l Console Thread | AbstractKieModule | 211 - org.drools.compiler - 6.0.3.redhat-1 | Unable to build KieBaseModel:sampleKBase Rule Compilation error : [Rule name='CanDrink'] org/drools/example/drink/Rule_CanDrink1955060708.java (8:541) : ArrayList cannot be resolved to a type org/drools/example/drink/Rule_CanDrink1955060708.java (8:550) : Syntax error on token , ? expected after this token BTW you have a workaround which is to define your code like this ListString l = new ArrayListString(); Is it because the server runs with JDK 5 in production that you cannot change the code of the rules ? As ServiceMix is just a packaging of Karaf + Camel + Cxf + ActiveMQ, why don't you use directly Karaf and a more recent version of Felix (4.x) ? On Wed, May 21, 2014 at 12:55 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. I could try to test on ServiceMix 5 that embeds Karaf 2.3.4, but for my concrete project, the customer current platform uses a ServiceMix 4.5.3 which is not really possible to change today while many other modules are already deployed. Did you try in your environment the test project that I attached yesterday ? There is a rule in the project with an accumulate that generates java code that is not compiled because of missing indirect dependancy despite of the Import-Package that I've copied from your examples. Hence my idea of a proxy classloader between Drools and its compiler and the classloader provided by the application bundle, and avoid the dynamic import that breaks the good practices... 2014-05-21 11:48 GMT+02:00 Charles Moulliard ch0...@gmail.com: If you look to my example posted previously there are no issues. Can you make a test using just Apache Karaf 2.3.x with Drools 6.1.0.Beta3 and tell me what happen. Which JDK do you sue ? On Wed, May 21, 2014 at 9:03 AM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Although without much conviction, I've tried the Bundle-RequiredExecutionEnvironment: J2SE-1.7, but it doesn't change the compilation level of the rules... As I said in a previous answer, I don't know exactly how to do it, but I think the solution may be in the way that Drools takes the classloader passed by the application to have access to specific classes like the usually imported beans used in the rules. Indeed, perhaps that instead of using directly this classloader, for its tasks, among of them the rules compilation, it should be possible to use some kind of enriched classloader that carries all the Drools needed packages, and delegates application classes resolution to the application's one. What do you think of that ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029635.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Can you provide us the compilation error reported (gist link) and a test case to allow us to reproduce your issue ? On Mon, May 19, 2014 at 4:00 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. We have a very simple rules file that works as expected when running as a JUnit test in Eclipse with Maven dependencies, but fails when it is executing in ServiceMix with OSGi integration. The code is just like : raw MapString, Object dialog = new LinkedHashMap(); KieSession kieSession = kieContainer.newKieSession(MyKSession); kieSession.setGlobal(dialog, dialog); kieSession.insert(problem); kieSession.fireAllRules(); kieSession.dispose(); The rules file : And the kmodule.xml : The compilation error is about Java 7 syntax elements (as generics or thousand separators in number literals for example), and seems to indicate that in this case the compiler is not the same, and it expects another Java syntax. No error is reported when the KieContainer is created from the KModule.xml, but the following error occurs when using it for KSession creation. This occurs both with the prepackaged feature ( http://repo1.maven.org/maven2/org/drools/drools-karaf-features/6.1.0.Beta3/drools-karaf-features-6.1.0.Beta3-features.xml ), or with an adapted one. For example, the Maven dependancies classpath in eclipse mentions newer versions of the Eclipse's ECJ. But changing the version of bundles has no effect... What is missing in the feature to activate the correct rules compiler ? Thanks for your help ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Hello. Here is the first lines of the error message : 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule| 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build KieBaseModel:MyKBase Rule Compilation error : [Rule name='Main Rule'] my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) : Incorrect number of arguments for type HashMapK,V; it cannot be parameterized with arguments ? my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) : Syntax error on token , ? expected after this token I have found the explanation and a workaround : put it all with a strict 1.5 syntax in the RHS ! In this current case, do not use to infere the generic type, but use the expected declared types instead. After a rather touchy remote debug of the ServiceMix runtime to inspect what is different from the Junit tests, I think that the problem comes from the classloader that is associated with the Kie container. Before compilation the language source and target level is set with version 1.7 as expected, but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
A test case will be required to reproduce your problem. Do you have a pax-exam test ? On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Here is the first lines of the error message : 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule | 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build KieBaseModel:MyKBase Rule Compilation error : [Rule name='Main Rule'] my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) : Incorrect number of arguments for type HashMapK,V; it cannot be parameterized with arguments ? my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) : Syntax error on token , ? expected after this token I have found the explanation and a workaround : put it all with a strict 1.5 syntax in the RHS ! In this current case, do not use to infere the generic type, but use the expected declared types instead. After a rather touchy remote debug of the ServiceMix runtime to inspect what is different from the Junit tests, I think that the problem comes from the classloader that is associated with the Kie container. Before compilation the language source and target level is set with version 1.7 as expected, but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Hello. I have no such kind test with Pax Exam. Should you send me a simple maven project example using a Karaf container ? Back to the problem, a very simple rule with something like that in the RHS always fails when deployed in a bundle whose class loader is the felix one : ListString l = new ArrayList(); that must be fixed with : ListString l = new ArrayListString(); or int n = 1_000; that fails instead of : int n = 1000; FYI, I use ServiceMix 4.5.3. Thanks again. Regards. 2014-05-20 15:41 GMT+02:00 Charles Moulliard ch0...@gmail.com: A test case will be required to reproduce your problem. Do you have a pax-exam test ? On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Here is the first lines of the error message : 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule | 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build KieBaseModel:MyKBase Rule Compilation error : [Rule name='Main Rule'] my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) : Incorrect number of arguments for type HashMapK,V; it cannot be parameterized with arguments ? my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) : Syntax error on token , ? expected after this token I have found the explanation and a workaround : put it all with a strict 1.5 syntax in the RHS ! In this current case, do not use to infere the generic type, but use the expected declared types instead. After a rather touchy remote debug of the ServiceMix runtime to inspect what is different from the Junit tests, I think that the problem comes from the classloader that is associated with the Kie container. Before compilation the language source and target level is set with version 1.7 as expected, but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Is it a list that you would like to use as global param ? If this is the case, maybe change your rule code like that //GET A KSESSION StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); //now create some test data ksession.insert( new Cheese( stilton, 42 ) ); ksession.insert( new Person( michael, stilton, 42 ) ); final ListString list = new ArrayListString(); ksession.setGlobal( list, list ); ksession.fireAllRules(); System.out.println(list); ksession.dispose(); Rule template header age type log package org.drools.examples.templates; global java.util.List list; template cheesefans rule Cheese fans_@{row.rowNumber} when Person(age == @{age}) Cheese(type == @{type}) then list.add(@{log}); end end template On Tue, May 20, 2014 at 4:40 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. I have no such kind test with Pax Exam. Should you send me a simple maven project example using a Karaf container ? Back to the problem, a very simple rule with something like that in the RHS always fails when deployed in a bundle whose class loader is the felix one : ListString l = new ArrayList(); that must be fixed with : ListString l = new ArrayListString(); or int n = 1_000; that fails instead of : int n = 1000; FYI, I use ServiceMix 4.5.3. Thanks again. Regards. 2014-05-20 15:41 GMT+02:00 Charles Moulliard ch0...@gmail.com: A test case will be required to reproduce your problem. Do you have a pax-exam test ? On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis ephemeris.lap...@gmail.com wrote: Hello. Here is the first lines of the error message : 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule | 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build KieBaseModel:MyKBase Rule Compilation error : [Rule name='Main Rule'] my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) : Incorrect number of arguments for type HashMapK,V; it cannot be parameterized with arguments ? my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) : Syntax error on token , ? expected after this token I have found the explanation and a workaround : put it all with a strict 1.5 syntax in the RHS ! In this current case, do not use to infere the generic type, but use the expected declared types instead. After a rather touchy remote debug of the ServiceMix runtime to inspect what is different from the Junit tests, I think that the problem comes from the classloader that is associated with the Kie container. Before compilation the language source and target level is set with version 1.7 as expected, but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
In this case it's not a global, but a temporary variable in the rule consequence. Indeed, the problem is not only about generics, but impacts all the syntax elements that may have changed since Java 1.5, and make the rules Java compiler fails when running in ServiceMix. As I said before, the workaround is quite easy, changing all the Java code to be compliant with the compilation level. The question is just about a confirmation of the Felix's class loader (org/apache/felix/framework/ ModuleImpl$ModuleClassLoaderJava5) in the compiler's behavior, and a better solution to be able to write RHS with a 'modern' syntax. Thanks. 2014-05-20 16:56 GMT+02:00 Charles Moulliard [via Drools] ml-node+s46999n4029628...@n3.nabble.com: Is it a list that you would like to use as global param ? If this is the case, maybe change your rule code like that //GET A KSESSION StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); //now create some test data ksession.insert( new Cheese( stilton, 42 ) ); ksession.insert( new Person( michael, stilton, 42 ) ); final ListString list = new ArrayListString(); ksession.setGlobal( list, list ); ksession.fireAllRules(); System.out.println(list); ksession.dispose(); Rule template header age type log package org.drools.examples.templates; global java.util.List list; template cheesefans rule Cheese fans_@{row.rowNumber} when Person(age == @{age}) Cheese(type == @{type}) then list.add(@{log}); end end template On Tue, May 20, 2014 at 4:40 PM, Ephemeris Lappis [hidden email]http://user/SendEmail.jtp?type=nodenode=4029628i=0 wrote: Hello. I have no such kind test with Pax Exam. Should you send me a simple maven project example using a Karaf container ? Back to the problem, a very simple rule with something like that in the RHS always fails when deployed in a bundle whose class loader is the felix one : ListString l = new ArrayList(); that must be fixed with : ListString l = new ArrayListString(); or int n = 1_000; that fails instead of : int n = 1000; FYI, I use ServiceMix 4.5.3. Thanks again. Regards. 2014-05-20 15:41 GMT+02:00 Charles Moulliard [hidden email]http://user/SendEmail.jtp?type=nodenode=4029628i=1 : A test case will be required to reproduce your problem. Do you have a pax-exam test ? On Tue, May 20, 2014 at 1:03 PM, Ephemeris Lappis [hidden email]http://user/SendEmail.jtp?type=nodenode=4029628i=2 wrote: Hello. Here is the first lines of the error message : 14:58:57,457 | ERROR | tp1946301910-151 | AbstractKieModule | 239 - org.drools.compiler - 6.1.0.20140429-1643 | Unable to build KieBaseModel:MyKBase Rule Compilation error : [Rule name='Main Rule'] my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:649) : Incorrect number of arguments for type HashMapK,V; it cannot be parameterized with arguments ? my/tests/drools/osgi/expert/rules/Rule_Main_Rule1409557233.java (8:666) : Syntax error on token , ? expected after this token I have found the explanation and a workaround : put it all with a strict 1.5 syntax in the RHS ! In this current case, do not use to infere the generic type, but use the expected declared types instead. After a rather touchy remote debug of the ServiceMix runtime to inspect what is different from the Junit tests, I think that the problem comes from the classloader that is associated with the Kie container. Before compilation the language source and target level is set with version 1.7 as expected, but in the nameEnvironment that is passed to the JavaCompiler (indeed, ecj compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
list archive at Nabble.com. ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3 https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=4 https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=5 https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=6 https://lists.jboss.org/mailman/listinfo/rules-users -- If you reply to this email, your message will be added to the discussion below: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029628.html To unsubscribe from Rules compilation error with OSGi integration (6.1.0.Beta3), click here. NAMLhttp://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewerid=instant_html%21nabble%3Aemail.namlbase=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespacebreadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml -- View this message in context: Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029629.html Sent from the Drools: User forum mailing list archivehttp://drools.46999.n3.nabble.com/Drools-User-forum-f47000.htmlat Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
compiler), the droolsClassloader is of type org/apache/felix/framework/ModuleImpl$ModuleClassLoaderJava5. As its name seems to incidate, I'm afraid that the Karaf/Felix loader is originally built in 1.5. I've read some posts about the eclipse compiler that perhaps takes into account the caller compliance to adapt its compilation language level. Class loaders seem to be a serious problem when using Drools in complex environment such as a OSGi one... Please, could you confirm my analysis, and, if you have one, propose any better solution ? I don't know, for example, if it's possible to influence Karaf to use different levels of bundle class loaders... Thanks a lot. Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029622.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=3 https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=4 https://lists.jboss.org/mailman/listinfo/rules-users ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=5 https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list [hidden email] http://user/SendEmail.jtp?type=nodenode=4029628i=6 https://lists.jboss.org/mailman/listinfo/rules-users -- If you reply to this email, your message will be added to the discussion below: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029628.html To unsubscribe from Rules compilation error with OSGi integration (6.1.0.Beta3), click here. NAMLhttp://drools.46999.n3.nabble.com/template/NamlServlet.jtp?macro=macro_viewerid=instant_html%21nabble%3Aemail.namlbase=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespacebreadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml -- View this message in context: Re: [rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601p4029629.html Sent from the Drools: User forum mailing list archivehttp://drools.46999.n3.nabble.com/Drools-User-forum-f47000.htmlat Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users
[rules-users] Rules compilation error with OSGi integration (6.1.0.Beta3)
Hello. We have a very simple rules file that works as expected when running as a JUnit test in Eclipse with Maven dependencies, but fails when it is executing in ServiceMix with OSGi integration. The code is just like : raw MapString, Object dialog = new LinkedHashMap(); KieSession kieSession = kieContainer.newKieSession(MyKSession); kieSession.setGlobal(dialog, dialog); kieSession.insert(problem); kieSession.fireAllRules(); kieSession.dispose(); The rules file : And the kmodule.xml : The compilation error is about Java 7 syntax elements (as generics or thousand separators in number literals for example), and seems to indicate that in this case the compiler is not the same, and it expects another Java syntax. No error is reported when the KieContainer is created from the KModule.xml, but the following error occurs when using it for KSession creation. This occurs both with the prepackaged feature (http://repo1.maven.org/maven2/org/drools/drools-karaf-features/6.1.0.Beta3/drools-karaf-features-6.1.0.Beta3-features.xml), or with an adapted one. For example, the Maven dependancies classpath in eclipse mentions newer versions of the Eclipse's ECJ. But changing the version of bundles has no effect... What is missing in the feature to activate the correct rules compiler ? Thanks for your help ? Regards. -- View this message in context: http://drools.46999.n3.nabble.com/Rules-compilation-error-with-OSGi-integration-6-1-0-Beta3-tp4029601.html Sent from the Drools: User forum mailing list archive at Nabble.com. ___ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users