Can a karaf boot application be loaded into pax exam 4.7 in a manner
similar to a standard karaf application.  Would love to see a karaf boot
application integrated with the bnd launcher as well.

On Wed, Dec 16, 2015 at 9:54 AM, Christian Schneider <
[email protected]> wrote:

> I found a bit of time to work on the karaf-boot effort JB initiated at
> last.
> I adapted the tasklist example from aries jpa for karaf boot.
>
> You can find the result in a branch:
>
> https://github.com/jbonofre/karaf-boot/tree/tasklist-sample/karaf-boot-samples/karaf-boot-sample-tasklist
>
> The example contains a JPA persistence unit, a TaskService which
> implements a JPA based repository and a servlet using the http-whiteboard.
>
> I did a little different approach to what JB used with the starter pom and
> the karaf boot plugin.
>
> - I created a karaf-boot-api with the same idea like the enroute base-api.
> It is a pom that contains all APIs you will likely need for starting a real
> business application.
> This is the only dependency of the sample. So people starting with this
> pom will be able to start coding business code without thinking about the
> necessary libs.
> I also put some test dependencies there like slf4j and junit to help
> people with creating tests.
> - I also created a karaf-boot-parent as a parent for all karaf-boot
> samples. It sets up all the necessary plugins like maven-bundle-plugin or
> compiler-plugin. This is different
> from JBs approach of using a karaf-boot-plugin. I think the parent
> approach is better as it is easier to understand and extend. People can
> look into the parent to see what it does
> and when their project grows they can copy/paste the useful parts into
> their own parent.
> - I externalized the osgi settings using an osgi.bnd file. This allows to
> easily customize the OSGi settings without redefining the
> maven-bundle-plugin. It is also compatible to bndtools 3.1
> as far as I can tell. So it should make it easier to work on the code
> using bndtools.
>
> Apart from that I created a small stub for defining a feature using
> annotations:
> This is how it could look like:
>
> https://github.com/jbonofre/karaf-boot/blob/tasklist-sample/karaf-boot-samples/karaf-boot-sample-tasklist/src/main/java/org/apache/aries/jpa/example/tasklist/feature/TasklistFeature.java
>
> @Feature(
>          name="tasklist",
>          version="1.0.0",
>          features = {"jpa", "transaction", "hibernate", "http"},
>          configFile = "org.ops4j.datasource-tasklist.cfg"
> )
>
> The idea is to add this annotation to any class and then let a yet to be
> written karaf-feature plugin create a feature.xml from it.
> The result would be a feature with the given name and dependencies. The
> feature would by default also contain the current bundle. So this would
> allow to start with one maven project that contains everything to easily
> get a small business application running.
>
> So some things left to do are:
> - plugin for the feature creation
> - plugin for packaging a self contained karaf including the application
> and all deps and config. More or less this can be done with the current
> karaf-maven-plugin but we need to tune it so it needs less configuration.
> - plugin for running the application from the command line
> - artifact for creating new karaf-boot applications
> - documentation for the transition to a larger multi project setup with
> its own parent. Maybe a separate artifact would also do, not sure
> - Integration with bndtools to give the user a nicer IDE for OSGi than
> plain eclipse
>
> I would be happy about any feedback.
>
> Christian
>
>
> --
> Christian Schneider
> http://www.liquid-reality.de
>
> Open Source Architect
> http://www.talend.com
>
>

Reply via email to