user1228444
user1228444

Reputation: 21

Karaf development

Im currently develop bundles for karaf and have some questions...

I wrote a bundle/webservice based on cxf, I try to deploy it in karaf but it could not start that bundle because it could not resolve some packages e.g.

org.osgi.framework.BundleException: Unresolved constraint in bundle org.springframework.aop [56]: Unable to resolve 56.0: missing requirement [56.0] package; (&(package=org.aopalliance.aop)(version>=1.0.0)(!(version>=2.0.0)))

so here is a question, this package dependency comes from spring-aop (3.1.0.RELEASE), so where is the problem? what dependency is missing? how can I solve such problems?

In that case i did not clearly understand the development process. should i deploy all missing bundles in deploy? because i would like to keep thirdparty libs spereated from my developed bundles. And what bundles i have to deploy? Is it a trial and error process? Is there a common way to let maven do the dependency stuff?

I discovered a folder "system" and read on the docu that it is a repository like maven, is it for the features?

I had for test cases a karaf with some pre deployed bundles and put my webservice bundle into it, but again execeptions...

Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet

What dependency is missing?

I already read the tutorial about camel and karaf, but it did not explain the deployment stuff, so could anyone suggest me a good tutorial?

Thanks! Chris

Upvotes: 2

Views: 5237

Answers (2)

ved
ved

Reputation: 909

Please post your MANIFEST.MF file. I think you didn't not mention the tag in maven-bundle-plugin dependency.

Upvotes: -1

earcam
earcam

Reputation: 6682

Short answer

Scroll down to the bit referring to "camel-cxf" and run the two commands features:addurl and features:install. I have a feeling this will resolve all your problems.


spring-aop

On Karaf console type:

exports | grep org.aopalliance.aop

I think you'll see lines like:

XX org.aopalliance.aop; version=3.1.0.RELEASE

So while the spring-aop bundle has the right packages they're the wrong version, the range being requested is >=1.0.0 and <2.0.0, so 3.1.0 doesn't satisfy that.


Deploying/Installing

You can drop bundles into ${karaf.home}/deploy or use the console.

You can install maven bundles from the Karaf console with:

install -s mvn:groupId/artifactId/version/packaging/classifier

Where -s starts the bundle and packaging/classifier are optional.

You can find a lot of OSGi ready maven dependencies here http://ebr.springsource.com/repository/app/ - I had a quick look but your spring aop dependency is very old, what version of CXF are you using?

Read up about Karaf features - they're basically XML files that list suites of bundles that can be installed. Very useful for deploying large numbers of bundles and they can be installed into a maven repository.

There are some standard features available in Karaf, try:

features:install war

This will give you a jetty webcontainer and may resolve your ClassNotFoundException: javax.servlet.http.HttpServlet as long as it's the right version

Camel also has a features file which probably sort all your issues, try this:

features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features
features:install camel-cxf

Tutorials

There's quite a bit available, some on http://karaf.apache.org and http://fusesource.com but also take a look at the PDF manual that comes in the Karaf distribution. Always beware that info may be out-of-date

Upvotes: 7

Related Questions