Hello! I finally managed to get it working, but it required some changes in the existent stuff... Here is a diff:
git://github.com/droolsjbpm/drools.git diff --git a/drools-compiler/pom.xml b/drools-compiler/pom.xml index 708a5b2..4b1dc98 100644 --- a/drools-compiler/pom.xml +++ b/drools-compiler/pom.xml @@ -244,7 +244,7 @@ <_removeheaders>Ignore-Package</_removeheaders> <Bundle-SymbolicName>org.drools.compiler;singleton:=true</Bundle-SymbolicName> <Require-Bundle>org.drools.core;visibility:=reexport;bundle-version="${drools.osgi.version}"</Require-Bundle> - <Import-Package>!org.drools.*, + <Import-Package>org.antlr.*;version="3.4",!org.drools.*, <!-- java compilers are optional: only need one at most --> org.codehaus.janino.*;resolution:=optional,org.eclipse.jdt.*;resolution:=optional, *</Import-Package> git://github.com/droolsjbpm/droolsjbpm-integration.git diff --git a/drools-camel/pom.xml b/drools-camel/pom.xml index a5a6b3d..273bfaa 100644 --- a/drools-camel/pom.xml +++ b/drools-camel/pom.xml @@ -23,7 +23,7 @@ <dependency> <groupId>org.drools</groupId> <artifactId>knowledge-internal-api</artifactId> - </dependency> + </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> @@ -186,5 +186,44 @@ <scope>provided</scope> </dependency> </dependencies> - + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <executions> + <execution> + <id>manifest</id> + <phase>process-classes</phase> + <goals> + <goal>manifest</goal> + </goals> + </execution> + </executions> + <configuration> + <manifestLocation>META-INF</manifestLocation> + <instructions> + <Bundle-SymbolicName>org.drools.camel;singleton:=true</Bundle-SymbolicName> + <_removeheaders>Ignore-Package</_removeheaders> + <Require-Bundle> + org.drools.core;bundle-version="${drools.osgi.version}", + org.drools.spring;bundle-version="${drools.osgi.version}" + </Require-Bundle> + <Import-Package>!org.drools.*, *</Import-Package> + <Export-Package>!org.drools.grid, org.drools.camel.*, org.drools.camel.jax</Export-Package> + <DynamicImport-Package>org.drools.*</DynamicImport-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> diff --git a/drools-container/drools-spring/pom.xml b/drools-container/drools-spring/pom.xml index b6be52c..f83a457 100644 --- a/drools-container/drools-spring/pom.xml +++ b/drools-container/drools-spring/pom.xml @@ -126,7 +126,45 @@ <groupId>org.antlr</groupId> <artifactId>antlr-runtime</artifactId> <scope>test</scope> - </dependency> + </dependency> </dependencies> - + <build> + <plugins> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <configuration> + <archive> + <manifestFile>META-INF/MANIFEST.MF</manifestFile> + </archive> + </configuration> + </plugin> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <extensions>true</extensions> + <executions> + <execution> + <id>manifest</id> + <phase>process-classes</phase> + <goals> + <goal>manifest</goal> + </goals> + </execution> + </executions> + <configuration> + <manifestLocation>META-INF</manifestLocation> + <instructions> + <Bundle-SymbolicName>org.drools.spring;singleton:=true</Bundle-SymbolicName> + <_removeheaders>Ignore-Package</_removeheaders> + <Require-Bundle>org.drools.core;bundle-version="${drools.osgi.version}"</Require-Bundle> + <Import-Package>!org.drools.*, *</Import-Package> + <Export-Package> + org.drools.grid,org.drools.grid.impl,org.drools.container.spring + </Export-Package> + <DynamicImport-Package>org.drools.*</DynamicImport-Package> + </instructions> + </configuration> + </plugin> + </plugins> + </build> </project> Alex On Tue, Feb 7, 2012 at 6:01 PM, Alexander Filipchik <afilipc...@gmail.com>wrote: > Thank you! But didn't help. > Actually I see some weird behavior. I decided to try referring drools-core > using Require-Bundle from my bundle, so I added > <Bundle-SymbolicName>org.drools.core</Bundle-SymbolicName> to a > drools-core package, recompiled it and got > NullPointerException (still without stacktrace) when I tried to deploy new > core bundle to a karaf container. > > I was able to deploy it after I removed Bundle-SymbolicName and recompiled > again. > > Thanks, > Alex > > On Tue, Feb 7, 2012 at 4:42 PM, Mauricio Salatino <sala...@gmail.com>wrote: > >> I've already answer a similar question here.. try including inside the >> application that is using the bundles the file called: >> drools.packagebuilder.conf >> >> which contains: >> drools.dialect.default = java >> drools.dialect.java = >> org.drools.rule.builder.dialect.java.JavaDialectConfiguration >> drools.dialect.java.compiler = ECLIPSE >> >> drools.dialect.mvel = >> org.drools.rule.builder.dialect.mvel.MVELDialectConfiguration >> drools.dialect.mvel.strict = true >> drools.dialect.mvel.langLevel = 4 >> >> drools.accumulate.function.average = >> org.drools.base.accumulators.AverageAccumulateFunction >> drools.accumulate.function.max = >> org.drools.base.accumulators.MaxAccumulateFunction >> drools.accumulate.function.min = >> org.drools.base.accumulators.MinAccumulateFunction >> drools.accumulate.function.count = >> org.drools.base.accumulators.CountAccumulateFunction >> drools.accumulate.function.sum = >> org.drools.base.accumulators.SumAccumulateFunction >> drools.accumulate.function.collectList = >> org.drools.base.accumulators.CollectListAccumulateFunction >> drools.accumulate.function.collectSet = >> org.drools.base.accumulators.CollectSetAccumulateFunction >> >> drools.evaluator.coincides = >> org.drools.base.evaluators.CoincidesEvaluatorDefinition >> drools.evaluator.before = >> org.drools.base.evaluators.BeforeEvaluatorDefinition >> drools.evaluator.after = >> org.drools.base.evaluators.AfterEvaluatorDefinition >> drools.evaluator.meets = >> org.drools.base.evaluators.MeetsEvaluatorDefinition >> drools.evaluator.metby = >> org.drools.base.evaluators.MetByEvaluatorDefinition >> drools.evaluator.overlaps = >> org.drools.base.evaluators.OverlapsEvaluatorDefinition >> drools.evaluator.overlappedby = >> org.drools.base.evaluators.OverlappedByEvaluatorDefinition >> drools.evaluator.during = >> org.drools.base.evaluators.DuringEvaluatorDefinition >> drools.evaluator.includes = >> org.drools.base.evaluators.IncludesEvaluatorDefinition >> drools.evaluator.starts = >> org.drools.base.evaluators.StartsEvaluatorDefinition >> drools.evaluator.startedby = >> org.drools.base.evaluators.StartedByEvaluatorDefinition >> drools.evaluator.finishes = >> org.drools.base.evaluators.FinishesEvaluatorDefinition >> drools.evaluator.finishedby = >> org.drools.base.evaluators.FinishedByEvaluatorDefinition >> drools.evaluator.equality = >> org.drools.base.evaluators.EqualityEvaluatorsDefinition >> drools.evaluator.comparable = >> org.drools.base.evaluators.ComparableEvaluatorsDefinition >> drools.evaluator.set = org.drools.base.evaluators.SetEvaluatorsDefinition >> drools.evaluator.matches = >> org.drools.base.evaluators.MatchesEvaluatorsDefinition >> drools.evaluator.soundslike = >> org.drools.base.evaluators.SoundslikeEvaluatorsDefinition >> >> Cheers >> >> >> On Tue, Feb 7, 2012 at 9:03 PM, Alexander Filipchik >> <afilipc...@gmail.com> wrote: >> > It's not an obvious how to OSGI-fy something :) >> > >> > I did some homework - now I have OSGi-ified versions of drools-spring >> and >> > drools-camel. >> > Also I created own bundle and tried to import >> KnowledgeBaseFactoryService, >> > ServiceRegistry and KnowledgeBaseFactoryService as described in >> > http://docs.jboss.org/jbpm/v5.2/userguide/ch18.html#d0e4308. >> > All what I got - NullPointerException from karaf core (haven't gotten >> full >> > staketrace yet. For some reason it is just: >> > 15:11:34,484 | INFO | l Console Thread | Console >> | >> > ? ? | 34 - >> org.apache.karaf.shell.console >> > - 2.2.2.fuse-02-13 | Exception caught while executing command >> > java.lang.NullPointerException >> > ) >> > >> > So, I spent some time randomly adding and removing configuration params >> and >> > I found - NPE occurs when I'm trying to import >> > org.drools.KnowledgeBaseFactoryService. >> > I guess (i'm not OSGI expert) it could be because org.drools package is >> > exported in 2! bundles. It is in drools-core and knowledge-api bundles. >> And >> > I guess, karaf container just can't link my bundle with both core and >> api, >> > only first bundle which contains requested package (org.drools) wins. >> > >> > Any ideas on how to make it work? >> > I actually have one - every bundle should export own package. For >> > knowledge-api it should be org.drools.api, and org.drools.core for >> > drools-core. >> > >> > Here is full log of similar packages: >> > WARNING: multiple bundles are exporting package org.drools.command >> > - org.drools.core [218] >> > - org.drools.api [216] >> > - org.drools.internalapi [217] >> > >> > WARNING: multiple bundles are exporting package >> org.drools.runtime.process >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > WARNING: multiple bundles are exporting package org.drools.time >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > WARNING: multiple bundles are exporting package >> > org.apache.geronimo.transaction >> > - org.apache.aries.transaction.manager [123] >> > - org.apache.aries.transaction.manager [51] >> > >> > WARNING: multiple bundles are exporting package org.drools >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > WARNING: multiple bundles are exporting package >> > org.apache.geronimo.transaction.manager >> > - org.apache.aries.transaction.manager [123] >> > - org.apache.aries.transaction.manager [51] >> > >> > WARNING: multiple bundles are exporting package org.drools.grid >> > - org.drools.core [218] >> > - org.drools.spring [220] >> > >> > WARNING: multiple bundles are exporting package jline >> > - org.apache.servicemix.bundles.jruby [210] >> > - org.apache.karaf.shell.console [34] >> > >> > WARNING: multiple bundles are exporting package >> > org.apache.geronimo.transaction.log >> > - org.apache.aries.transaction.manager [123] >> > - org.apache.aries.transaction.manager [51] >> > >> > WARNING: multiple bundles are exporting package org.drools.management >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > WARNING: multiple bundles are exporting package org.drools.agent >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > WARNING: multiple bundles are exporting package org.drools.event >> > - org.drools.core [218] >> > - org.drools.api [216] >> > >> > 2012/2/3 Mark Proctor <mproc...@codehaus.org> >> >> >> >> neither spring or camel have been OSGi-ified. only api, core, compiler, >> >> templates, decision-tables and flow have. >> >> >> >> If someone wants to OSGi-ify those and contribute back they are very >> >> welcome: >> >> 1) update the pom.xml to use the osgi bundle plugin, see other existing >> >> poms. >> >> >> >> >> https://github.com/droolsjbpm/drools/blob/master/drools-decisiontables/pom.xml >> >> 2) create an Activator to register the module, again see Activator's >> for >> >> core, compiler etc. >> >> >> >> >> https://github.com/droolsjbpm/drools/blob/master/drools-decisiontables/src/main/java/org/drools/osgi/decisiontables/Activator.java >> >> 3) update the osgi bundle's pom with new dependencies, make sure to >> pull >> >> in the spring ones, unless the actual project provides osgi ready jars. >> >> >> >> >> https://github.com/droolsjbpm/droolsjbpm-build-distribution/tree/master/drools-osgi-bundles >> >> 4) Update the boot-bundles.properties so that Spring DM loads the OSGi >> >> dependencies >> >> >> >> >> https://github.com/droolsjbpm/droolsjbpm-build-distribution/blob/master/drools-osgi-bundles/org.drools.osgi.test/src/test/filtered-resources/boot-bundles.properties >> >> 5) write unit tests for spring and camel. >> >> >> >> Mark >> >> On 03/02/2012 03:47, Alexander Filipchik wrote: >> >> >> >> Hello all! >> >> >> >> Don't know if it is right list to ask, but I'm trying to make drools + >> >> camel running on Fuse (ServiceMix container). >> >> I couldn't even install OSGI drools artifacts for 5.3.1 version >> (because >> >> of weird dependency on drools.core Snapshot), >> >> but did it with v5.2.1. I used: >> >> >> >> mvel2/2.1.0, >> >> >> org.drools/drools-core/5.2.1.Final, org.drools/drools-compiler/5.2.1.Final, >> >> org.drools/knowledge-api/5.2.1.Final >> >> and org.drools/drools-camel/5.2.1.Final. >> >> >> >> All are installed and active. Part of log: >> >> >> >> [ 162] [Active ] [ ] [ ] [ 60] Drools :: >> Compiler >> >> (5.2.1.Final) >> >> >> >> [ 163] [Active ] [ ] [ ] [ 60] mvel2 >> >> (2.1.0.drools4) >> >> >> >> [ 164] [Active ] [ ] [ ] [ 60] Drools :: Core >> >> (5.2.1.Final) >> >> >> >> [ 165] [Active ] [ ] [ ] [ 60] Knowledge API >> >> (5.2.1.Final) >> >> >> >> [ 172] [Active ] [ ] [ ] [ 60] >> >> mvn:org.drools/drools-camel/5.2.1.Final >> >> >> >> Then I tried to add my own camel-drools router (I created OSGI bundle >> for >> >> it). It depends on: >> >> >> >> Import-Package: >> >> >> org.apache.activemq,org.apache.activemq.camel.component,org.apache.activemq.pool,org.apache.camel;version="[2.8,3)",org.apache.camel.builder;version="[2.8,3)",org.apache.camel.component.jms;version="[2.8,3)",org.apache.camel.model;version="[2.8,3)",org.drools.camel.component,org.osgi.service.blueprint;version="[1.0.0,2.0.0)",org.springframework.transaction;version="[3,4)" >> >> >> >> It tried to install it to a container but all I got - >> >> >> >> Error executing command: Unresolved constraint in bundle >> >> com.betfair.drools [170]: Unable to resolve 170.0: missing requirement >> >> [170.0] package; (package=org.drools.camel.component) >> >> >> >> I even tried to put drools-camel.jar with org.drools.camel.component >> in a >> >> lib folder and add package to >> org.osgi.framework.system.packages.extra, but >> >> got same result. >> >> >> >> Do you have any idea, blog posts, samples which could help me? >> >> I'm completely stuck. >> >> >> >> Thanks, >> >> Alex >> >> >> >> >> >> _______________________________________________ >> >> rules-users mailing list >> >> rules-us...@lists.jboss.org >> >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> >> >> >> >> >> >> _______________________________________________ >> >> rules-users mailing list >> >> rules-us...@lists.jboss.org >> >> https://lists.jboss.org/mailman/listinfo/rules-users >> >> >> > >> > >> > _______________________________________________ >> > rules-dev mailing list >> > rules-dev@lists.jboss.org >> > https://lists.jboss.org/mailman/listinfo/rules-dev >> > >> >> >> >> -- >> - CTO @ http://www.plugtree.com >> - MyJourney @ http://salaboy.wordpress.com >> - Co-Founder @ http://www.jugargentina.org >> - Co-Founder @ http://www.jbug.com.ar >> >> - Salatino "Salaboy" Mauricio - >> >> _______________________________________________ >> rules-users mailing list >> rules-us...@lists.jboss.org >> https://lists.jboss.org/mailman/listinfo/rules-users >> > >
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev