OSGi Container - Equinox vs Apache Felix inside Apache Karaf - apache-karaf

Started working on a new project and We are using Apache Karaf for running OSGi bundles. Some one suggested me to use Equinox instead of Felix inside Karaf. Please some body let me know if Equinox is better than Felix and if so what way.

A few years ago there were some stability issues that lead folks to recommend Equinox over Felix. Today, I recommend using Felix since a good number of the Karaf/ServiceMix committers also have the ability to make changes to Felix without having to wait for Equinox to make upstream changes.
Latest check of Equinox website also seems to indicate that it is lagging Felix+Karaf a bit in terms of adopting the latest OSGi Enterprise specs.

Related

Do developers still use OSGi?

I'm learning how to use OSGi in Eclipse for work and it looks like a very powerful and interesting tool! However, the online tutorials haven't been updated in a while (Java 8!). Also, I read some scathing blog posts about the incompatibility between OSGi and Class Loaders, so it seems OSGi experts are not fans of some recent Java updates.
I'm trying to understand a more the context of these issues, since I'll be working with OSGi for some time and want to be intentional/strategic about which features I'll use or not. Does someone have any insights?
Thanks!

How many containers are needed for activiti bpm to work ? I see latest edition has 7 containers.

Activiti BPM latest edition seem to have 7 containers. Are all of them needed ?
It is entirely up to you. We provide spring boot starters that can be used in different ways, so i wonder what are your use case requirements, so we can better recommend a deployment approach.
Notice that Beta1 hasn’t been released yet, so it is a great time to get involved to shape the future of the project.

can I run apache storm without install python?

I am going to test Apache storm for my personal project.
However I don't want to include python support,
is that possible?
There is no need to have python in order to start working with Storm. You can just follow basic tutorial and start playing with it with pure java.
However it does support non jvm based language with is implemented via the ShellBolt class. but that should not be a constraints for learning storm.

OSGi for non-java 3PPs

We are building a product that uses the apache hadoop & hbase frameworks for handling some of our big data requirements. We are also using Oracle for our reporting requirements. We are keen to go with the OSGi way of bundling our software to take advantage of the remote deployment,service management & loosely coupled packaging features that OSGi containers offer.
We have a few doubts in this area:
When it comes to our own Java apps, we now know how to create OSGi bundles out of them and deploy them over OSGi containers. But how do we handle Java based 3PPs that have a clustered architecture, for example HBase/Hadoop? We saw that Fuse Fabric has created a Hadoop (actually only HDFS not Map Reduce) bundle, but in general how do you go about creating bundles for 3PP's?
How do we handle non-java based 3PPs like for example Oracle. Should we create a OSGi bundle for it and deploy over OSGi or should we install these 3PP's outside of OSGi and write some monitoring scripts that are triggered over OSGi to track the status of these 3PP's? What are the best practices in this area?
Are all bundles launched over OSGi container (like Karaf) run within the same single JVM of the container? Some of our applications and 3PPs are huge and we may run into heap/GC issues if all of them are run inside a single JVM. What are the best practices here?
Thanks & Regards
Skanda
Creating bundles from non-OSGi libraries can be as simple as repackaging it with an appropriate manifest (there are tools for that, see below), but it can also become very difficult. OSGi has a special class-loading model, and many Java EE libraries that do dynamic class-loading don't play well with that.
I am not sure what you mean here. Theoretically OSGi supports loading native libraries using the Bundle-NativeCode manifest-header, but I have no experience with that.
Normally all bundles are run in the same virtual machine. However, Karaf supports clustering through Cellar, I don't know about other containers though.
Tools for wrapping 3rd-party libraries
In general you can use bnd for this (the tool of choice when it comes to automated generation of OSGi-bundle manifests). PAX-URL offers the wrap protocol-handler, which is present by default in Karaf. Using that, wrapping a library can be as simply as that (e.g. from the Karaf-command line, or a feature-descriptor):
wrap:file:path/to/library
The case of Oracle and most other db libs is simple. You can use the wrap protocol of pax url. Unter the covers it uses bnd with default options. I have a tutorial for using dbs with Apache Karaf.
In general making bundles out of third party libs can range from easy to quite complicated. It mainly depends on how much dirty classloading tricks the lib uses. Before you try to bundle stuff yourself you should look if there are ready made bundles. Most libs today either come directly as bundles or are already available as bundles from some source. For example the servicemix project creates a lot of bundles. You can ask on the user list there if something is available.

Are there any all-in-one packages that help install wamp on a production server?

I need to install amp on a windows2003 production server. I'd like, if possible, an integrated install/management tool so I don't have to install/integrate the components of amp separately. Those that I've found are 'development' servers. Are there any packages out there that install amp in a production ready (locked down state)?
I'm aware of LAMP... Windows, since we have IIS apps already and we've paid for this box, is a requirement. I'll take care of all the other hangups. I just want a simple way to install, integrate, and manage AMP.
I'm not sure running WAMP as a production server is a good idea. I use wamp to stage proyects and then I move them to a Linux server.
You can try any of this solutions:
http://www.uniformserver.com/
Some people state that they are working fine with WAMP Server, but again, I wouldn't recommend it.
Xampp is quite popular, i just don't know how "production level" it is:
http://www.apachefriends.org/en/xampp.html
Without wanting to sound elite: For "real" production Environments, it's possibly not a bad idea to setup and configure the components individually, but this requires some deeper knowledge than "hit setup and run".
There doesn't appear to be any all-in one packages that are up to date and 'designed' for production. You just can't trust the default installs to be secure on whats out there.
I ended up just doing this manually. It wasn't painful though. Each component's install procedure was documented reasonably well. Took me about 3.5hrs. A nice side effect of the involved setup was that it gave me a much better understanding of each component's dependencies and the ways in which they touch. In hind sight I should have done it manually from the start.
Note: make sure you read the comments below each component's documentation pages. Some contain valuable corrections to the install process.
Since the time this question was asked Zend has released Zend Server.
Zend Server is a complete,
enterprise-ready Web Application
Server for running and managing PHP
applications that require a high level
of reliability, performance and
security.
There doesn't appear to be any all-in one packages that are up to date and 'designed' for production. You just can't trust the default installs to be secure on whats out there.
WampDeveloper Pro is a commercial WAMP package that is specifically designed for production use (which I use).
I don't think that when this question was asked there was a viable solution for the above.

Resources