Tuesday, November 18, 2014

KTop update and OpenDaylight MDSAL Status command!

KTop Enhancements!
We're happy to announce our latest Milestone release of the Aetos KTop command for Apache Karaf 3 based containers.

This latest revision includes:

  • Improved CPU time reporting,
  • Pressing q to quit,
  • Sorting column change via left and right arrow keys, and
  • Reverse sort by pressing r key.

Under the hood we've also made several bug fixes, and runtime performance improvements.

Sweet! How do I get this latest version?


We've published our new MileStone release to Maven Central: http://search.maven.org/#search%7Cga%7C1%7Cctop

You can also grab it from GitHub:
https://github.com/savoirtech/ctop/tags

Source tag link:
https://github.com/savoirtech/ktop/tree/ctop-0.2.0.M1

If you're using an Apache Karaf 3.0.x based system (such as Aetos 3.0.2), you can install this MileStone release using the following Karaf console command:
install -s mvn:com.savoirtech.karaf.commands/ctop/0.2.0.M1

Feedback is welcome! Please submit any ideas, enhancements, bugs to the project issue tracker: https://github.com/savoirtech/ctop/issues

So, tell us about this MDSAL Status command!


MDSAL:Status - a live feed of how MDSAL is operating.
The OpenDaylight community recently ported their project to live on top of Apache Karaf 3 with their Helium release. To help spur development of new OpenDaylight Karaf commands we've built a simple Model Driven Service Abstraction Layer status command to demonstrate how Karaf's console can empower developers and operators to create their own monitoring tools.

So what does MDSAL Status do?


The MDSAL Status commands provides an updated view of MDSAL metrics, including:

  • ConfigRegistry version and health,
  • DOMDataBroker statistics, and
  • Metrics for CommitExecuter (CE), CommitFutureExecutor (CFE), InMemoryConfigDataStore (IMCDS), and InMemoryOperationalDataStore (IMODS).

The metrics table is of particular interest, providing live updates of ten tracked attributes, including:

  • ActiveThreadCount,
  • CompletedTaskCount,
  • CurrentQueueSize,
  • CurrentThreadPoolSize,
  • LargestQueueSize,
  • LargestThreadPoolSize,
  • MaxQueueSize,
  • MaxThreadPoolSize,
  • RejectedTaskCount, and
  • TotalTaskCount.

These values are obtained from MBeans provided by the OpenDaylight controller. The Karaf console provides the mechanisms to allow users to view these metrics without having to use additional external tooling.

Sweet! How do I get this latest version?


We've published a MileStone release to Maven Central:
http://search.maven.org/#search%7Cga%7C1%7Cmdsal-status

You can also grab it from GitHub:
https://github.com/savoirtech/mdsal-status/releases

Source tag link:
https://github.com/savoirtech/mdsal-status/tree/mdsal-status-0.1.0.M1

On OpenDaylight Helium based distributions, you can install this MileStone release using the following Karaf console command:
install -s mvn:com.savoirtech.karaf.commands/mdsal-status/0.1.0.M1

How do I use MDSAL Status once installed? 


The status command requires users to have the MDSAL feature installed in their container at runtime. Once MDSAL is available, the MDSAL Status command will become functional.

To execute command on Helium, invoke:
mdsal:status

To exit status, press control + c or q to quit.

Feedback is welcome! Please submit any ideas, enhancements, bugs to the project issue tracker:
https://github.com/savoirtech/mdsal-status/issues

Wednesday, November 12, 2014

Want to see your top Apache Camel routes in a CamelContext? Try the CTop command!

Aetos Integration Platform
I've been working on a utility command for Apache Karaf based containers that will display Apache Camel Context Route metrics in a manner similar to the Linux Top command. The result has been the Aetos ctop command.

A Top like command for Apache Camel Routes, awesome!
Aetos is Savoir Technologies' Integration Platform - essentially a custom stack of raw Apache projects that makes using Apache Karaf easy for developing and running production large scale enterprise solutions.

The Aetos ctop command provides a Top like display of vital Camel Route metrics, including:

  • Total Exchanges,
  • Completed Exchanges
  • Failed Exchanges,
  • Minimun Processing Time,
  • Maximum Processing Time,
  • Mean Processing Time, and
  • Last Processing Time

The ctop command allows users to specify which column they'd like to rank routes, and the information update interval. Use the --help option to read the command's usage information.

Sounds cool, I'd like to try it out on my Karaf system!


We've published a MileStone 1 release to Maven Central: http://search.maven.org/#search%7Cga%7C1%7Cctop

You can also grab it from GitHub:
https://github.com/savoirtech/ctop/tags

Source tag link:
https://github.com/savoirtech/ktop/tree/ctop-0.1.0.M1

If you're using an Apache Karaf 3.0.x based system (such as Aetos 3.0.2), you can install MileStone 1 using the following Karaf console command:
install -s mvn:com.savoirtech.karaf.commands/ctop/0.1.0.M1

Feedback is welcome! Please submit any ideas, enhancements, bugs to the project issue tracker: https://github.com/savoirtech/ctop/issues

How do I get the code?


git clone https://github.com/savoirtech/ctop.git

Currently, the command is aimed at Apache Karaf 3 & 4 containers. If community interest exists, we'll port it back to Karaf 2.3 & 2.4.

How do I build and install ctop into my container?


To build, invoke:

mvn install

To install in Karaf, invoke from Karaf console:

install -s mvn:com.savoirtech.karaf.commands/ctop/version-SNAPSHOT

How do I use ctop once installed?

The CTop command requires users to have the Apache Camel feature installed in their container at runtime. Once Camel is available, the CTop command will become functional.

To execute command on Karaf, invoke:

aetos:ctop CamelContextName

To exit ctop, press control + c


The code is under the GNU license at the moment, as per a project requirement -- we will have it under the ASL in the future. In the mean time if you're looking for a way to monitor your Camel Routes from your console window, give Aetos ctop a try!

Tuesday, October 28, 2014

Want to see how your Karaf container is performing? Try the ktop command.

Aetos Integration Platform
I've been working on a utility command for Apache Karaf based containers that will display JVM usage metrics in a manner similar to the Linux Top command. The result has been the Aetos ktop command.

Aetos is Savoir Technologies' Integration Platform - essentially a custom stack of raw Apache projects that makes using Apache Karaf easy for developing and running production large scale enterprise solutions.
JVM vital statics in a Karaf console - awesome!

The Aetos ktop command provides a Top like display of vital JVM metrics, including:

  • Basic platform details.
  • JVM Uptime.
  • JVM Thread counts.
  • Garbage Collector Stats.
  • ClassLoader Stats.
  • JVM Memory Stats, and
  • Periodically updated top threads by CPU usage. 

The ktop command allows users to specify how many threads they'd like displayed, and the information update interval. Use the --help option to read the command's usage information.

Sounds cool, I'd like to try it out on my Karaf system!


We've published a MileStone 1 release to Maven Central:
http://search.maven.org/#search%7Cga%7C1%7Cktop

Source tag link:
https://github.com/savoirtech/ktop/tree/ktop-0.1.0.M1

If you're using an Apache Karaf 3.0.x based system (such as OpenDaylight Helium or Aetos 3.0.2), you can install MileStone 1 using the following Karaf console command:

install -s mvn:com.savoirtech.karaf.commands/ktop/0.1.0.M1

Feedback is welcome! Please submit any ideas, enhancements, bugs to the project issue tracker:
https://github.com/savoirtech/ktop/issues

Nice! I'd like to have the command on a different Karaf platform...


There are three branches of the Aetos ktop project at this time, tracking Apache Karaf 2.3.x,  3.0.x, and 4.0.x lines. At current, users will have to clone the source repo, checkout the branch appropriate to their Karaf deployment, and build the code locally before installing in their container. Please use the following instructions to get ktop running on your container:

How do I get the code?


git clone https://github.com/savoirtech/ktop.git
cd ktop
git checkout k23x | k30x | master

The k23x branch is maintained for Karaf 2.3.x format, k30x for Karaf 3.0.x format, and master will track Karaf 4 style commands.

How do I build and install ktop into my container?


To build, invoke:

mvn install

To install in Karaf, invoke from Karaf console:

install -s mvn:com.savoirtech.karaf.commands/ktop/version-SNAPSHOT

How do I use ktop once installed?


To execute command on Karaf, invoke:

aetos:ktop

To exit ktop, press control + c


The code is under the GNU license at the moment, as per a project requirement -- we will have it under the ASL in the future. In the mean time if you're looking for a way to monitor your Karaf container from your console window, give Aetos ktop a try!

Wednesday, October 15, 2014

OpenDaylight Helium on Raspberry Pi first performance benchmark results!

Last week I posted about getting OpenDaylight Helium release to run on my Raspberry Pi. This week I've spent some time setting up the platform for some simple benchmarks.

The TL; DR version is that I was able to observe approximately 170 flows/second! **

Now for the longer story...

To benchmark the system three things had to come together: Helium running on Karaf, the wcbench utility running on a separate host, and the overall platform being stable enough to execute enough tests to produce statistically relevant data sets.

In my previous post, I outlined how I was able to tweak Helium into running on RPi. To these alterations I added one more tuning parameter: Xss200k. This reduces the startup size of Java threads, making it easier on the JVM and RPi to provide resources. See my github repo for sample Helium scripts.

Setting up the wcbench tool required standing up a host machine, in my case a Fedora Core 20 VM, and configuring its scripts to point to the RPi. Given the RPi's limit resources I tuned the number of switches, mac addresses, and time to run each test down. See my github repo for sample wcbench configuration.
Ready for testing!
Using the test tool would also require installing a few packages onto the Helium deployment. Through trial and error I discovered it was easiest on the RPi if I installed as many smaller features first before attempting top level targets. See 'Setting up Helium for testing' on my github page main read me file.

Unfortunately this initial setup resulted in a failure to collect useful output :(

The trouble was that even though OpenDaylight Helium could boot up and install packages, it couldn't handle the heavy traffic. The system would freeze up, becoming unresponsive. Memory was completely consumed.

Looking at the base system's 700MHz CPU, and memory specs, something would need to change:
This is where the above '**' comes into play. Up to now I've been using a relatively default vanilla installation of Rasbian on the RPi. To obtain useful benchmark results I would have to provide OpenDaylight with more resources to do its thing. Hence I proceeded to the net, and found performance tweaks for RPi. See my github repo for a full list of the configuration changes I made to my RPi.

The final result was a base system with a 850MHz CPU and the following memory specs:
An extra 40MB free ram, and 255MB of swap space!
With my platform tweaks applied, the system booted up much quicker. I executed the loop_wcbench script with the -l and -t5 option for 25 data sets. See results.csv for full results. Unfortunately, the scripts were not able to dial into the instance to grab detailed system information, so I made the adjacent screen capture of the top command during the test.

After running the benchmark tool with 10 simulated switches and 10 MAC addresses, I attempted increasing the load to 100 switches and 100 MAC addresses - the system promptly froze.

There are probably more system tweaks that could be applied to the RPi to free up more memory, and  additional JVM tuning to make operating Helium more performant. I've published all of my tunings, and configurations to a git repo so that others may use my experiments as a starting point.

If you do decide to dive in and try out Helium on RPi, please let us all know about your results in the comments below.


Wednesday, October 8, 2014

OpenDaylight Helium Release on Raspberry Pi!

The question we've all been asking has finally been answered - yes, OpenDaylight Helium Release can run on Raspberry Pi!

If you're not familiar with Raspberry Pi it's a small, inexpensive computer which at its heart runs a 700 MHz Low Power ARM1176JZ-F Applications ProcessorCPU with 512MB ram.

My build utilizes a Debian based Linux distro, Raspbian, and an Arm compatible Oracle JDK build.

Out of the box I had to make three small modifications to the scripts found in the OpenDaylight distributions' bin folder.

  • The set environment script (setenv) had JVM parameters for PermGen and Max Memory set higher than the RPi could support. I set these values to 340MB for PermGen, and 400MB for Max Memory. These are not optimal settings, but will work well enough to get things going.
  • The karaf script used to start the container also required a memory setting to be adjusted from 512m down to 340m (just grep the script code for 512 and replace). 
  • Finally, in the karaf script the JVM "server" flag was not recognized by the Java installation on my RPi. Editing this out of the script allowed Karaf to start up happily.

w00t!
Once I had the OpenDaylight console banner displayed, I executed the console info command to see system environment information:
Now we're cooking with fire! Time to start making some toast...

Awesome! The Apache Karaf container environment OpenDaylight Helium uses appears to be stable. Next step was to try to deploy the OpenDaylight Toaster demo... which failed on not being able to find SSHD 0.12.0 :(

This turned out to be a minor inconvenience. A simple invocation of install -s mvn:org.apache.sshd/apache-sshd/0.12.0, and an edit to ODL_HOME/etc/config.properties to include a JDK 1.8 entry for osgi.ee and the ODL Toaster was installable, and running!
Helium on RPi can make toast!
I used jconsole to manipulate the makeToast and clearToastsMade operations exposed via JMX on the controller to verify their correct operation - using log:display I could view each operation's logging events.

RPi CPU Stats
This is an very impressive improvement over the previous OpenDaylight release which, despite my best efforts, I could not get to boot on RPi to a stable console out of the box. It's amazing how well OpenDaylight has taken to scaling from small PCs like the RPi to serious big iron servers we find in datacenters.

Its important to note that for my ODL on RPi test I've only installed the base ODL Helium distribution, SSHD 0.12.0, and performed a feature install on odl-toaster target. The Karaf based features mechanism took care of downloading, installing, and configuring all the plumbing required to get the demo running.

So, now that we know we can get OpenDaylight Helium running on an RPi, what should we program it to do? I'm looking forward to reading your ideas in the comments below :)

Wednesday, September 24, 2014

Apache Karaf Cookbook Launch Party!

Last night I held a book launch event for Apache Karaf Cookbook. I wish my co-authors would have been able to be onsite for the event, however travel and other commitments made that impractical.

The night consisted of a short speech on the release of our latest book, then transitioned into two hours of guided Wine, Oils, and Vins tastings. So much fun!

I've collected below some photos from the evening. I'd like to thank the staff of O'Leva Oils & Vins Tasting Room for their excellent service and presentations.


O'Leva Oils & Vins Tasting Room (Venue):

Our Books:


Launch Event:

Garlic Crostinis with Brie and Garlic oil and Fig Balsamic.
Beef meatballs with Basil olive oil bruschetta.
Lettuce wraps with Walnut Oil and Chocolate Balsamic.
Vanilla Bean ice cream with Blood Orange olive oil and Espresso Balsamic.
Mingling time in between wine tastings.

Guided tasting of Wine, Oils, and Vins 
Campo Viejo, Toasted Head, and Lucky Stones.
Red Esc and a multitude of Oils & Vins samplers.

I'd like to thank all of my guests for making it out for the night, and sharing in the excitement of having the Apache Karaf Cookbook reach publication.

Tuesday, September 23, 2014

Please vote for our talks to be accepted to ConFoo 2015

Heath Kesler and I have submitted talks to ConFoo 2015 for consideration, and we need your votes to help make our proposals get noticed!

ConFoo. February 18 - February 20, 2015 | Montreal, CanadaEasy RESTful services using Apache Camel and CXF


"In this session attendees will learn how simple RESTful services are to implement and interact with using Camel Integration Engine and the CXF Framework. In as little as a few lines of code, a developer can implement a fully functioning, testable CXFRS endpoint. Learn how to implement thread pooling and asynchronous processing on the service while maintaining a flexible and scalable architecture that can grow with demand."

ConFoo. February 18 - February 20, 2015 | Montreal, CanadaHow OpenDaylight learned to breathe in Apache Karaf.


How OpenDaylight learned to breathe in Apache Karaf. OpenDaylight is an open platform for network programming to enable SDN and NFV. Apache Karaf is a small, light weight server side OSGi runtime environment. In this session I will share our experiences in introducing OpenDaylight to Apache Karaf, and the subsequent large scale, multi-project migration to Apache Karaf’s OSGi environment.

ConFoo. February 18 - February 20, 2015 | Montreal, CanadaApache Karaf in the Trenches


Apache Karaf is a small, light weight server side OSGi runtime environment, that has been gaining in popularity in the Open Source community. The shift towards using OSGi has introduced new challenges to architects, developers, and operators in building and deploying these systems. In this session I will share some of my experiences in developing, deploying, and maintaining Karaf based software systems among Global 2000 companies.

Please register and vote on the ConFoo 2015 website.

Sunday, September 21, 2014

Apache Karaf 2.3.8 and 2.4.0 Released!

The Apache Karaf team are pleased to announce the availability of Apache Karaf 2.3.8 and 2.4.0!

Apache Karaf 2.3.8 is an update patch for Apache Karaf 2.3.7, containing several bug fixes, and dependency updates. We have introduced support of !$ to recall the last command argument, and improved the command description for osgi:shutdown. It is recommended that you review our release notes before updating your deployments.

Apache Karaf 2.4.0 release represents a new branch of Apache Karaf development. It includes the latest Aries and Pax libraries, Apache Pom 14, add support for role-based JMX authorization, includes heap dumps when we create debugging data from create dump command, blueprint-web feature, support for JAAS groups, and includes Pax CDI feature. There are several hundred items currently in this RC's release notes, so you'll want to spend some time discovering all the hidden gems.

As always, I'd like to thank the community for coming together to help make the Karaf release process one of the best in all of open source software.

Sunday, September 14, 2014

New Apache Karaf book and up coming release candidates

Apache Karaf Cookbook is now available from Packt Publishing!


This past winter Johan, Heath, Achim, and I started our latest adventure writing Apache Karaf Cookbook for Packt Publishing. We're happy to announce that the book is finally available for order via Packt's website.
We've taken care to cram as many hints, tips, and experiences into its pages as we could.

Taking a look at our table of contents you'll find recipes for:

  • Apache Karaf for system builders
  • Turning Karaf into a Smart Router with Apache Camel
  • Model Karaf into a Message Broker with Apache ActiveMQ
  • Transform Karaf into a JSP host with Pax-web
  • Distribute your Karaf applications across a clustered container with Apache Karaf Cellar
  • Transmute Karaf into a web service container with Apache CXF
  • Turbo-charge your Karaf applications’ persistence layer scalability with Apache Cassandra
  • Manage Big Data on Karaf with Apache Hadoop
  • Integration test with Pax Exam (bonus chapter!)

We hope the community benefits from our experiences, we've poured a lot of ourselves into this title. For more publications on Karaf please see our Instant OSGi Starter, and Learning Apache Karaf.

Up coming release candidates - Apache Karaf 2.3.8, 2.4.0, and 3.0.2!


Apache Karaf 2.3.8:


This patch update will contain an essential update to Felix FileInstall, we hope to have this patch available for vote ASAP.

Apache Karaf 2.4.0:


This release candidate represents a new branch of Apache Karaf development. It shall include the latest Aries and Pax libraries, Apache Pom 13, add support for role-based JMX authorization, includes heap dumps when we create debugging data from create dump command, blueprint-web feature, support for JAAS groups, and includes Pax CDI feature. There are several hundred items currently in this RC's release notes, so you'll want to spend some time discovering all the hidden gems.

Apache Karaf 3.0.2:


Our second patch update to the 3.0 line, this release candidate will contain vital bug fixes, and essential library updates.

Sunday, August 3, 2014

Apache Karaf 2.3.6 Released!

The Apache Karaf team are pleased to announce the availability of Apache Karaf 2.3.6!

This is an update patch for Apache Karaf 2.3.5, containing many bug fixes, dependency updates, and improvements. New feature highlights include: Automatically create data sources from configuration files, add backing engine serivce for PublickeyLoginModule, add a flag to bin/client so that it can read private key from a specified location, and Provide shell:env command.

It is recommended that you review our release notes before updating your deployments.

The Karaf 2.3.6 RC process was enjoyed with Placido Chianti 2011.

As always, I'd like to thank the community for coming together to help make the Karaf release process one of the best in all of open source software.


OpenDaylight Update:

The OpenDaylight port to Apache Karaf has been proceeding steadily towards a stable ecosystem wide build. Next week's Techicial Work Stream conference call will include an End-To-End Hands-on walk-through of ODL Karaf Features. I've copied in below the TWS meeting objectives as outlined by Madhu Venugopal:

"Due to multiple queries from various projects, we are organizing an end-to-end hands on walk-through on Karaf. This will cover all the way from

1. Writing the Karaf feature file on any project
2. Building the .kar
3. Loading the Karaf Container
4. Installing the built feature and Validation.

Time permitting, we will also be covering the Docker based Integration Testing & Sonar coverage. Mathieu Lemay & myself will be leading these topics.
We request at-least 1 representative from each of the projects participating in Helium to attend this session."

I strongly recommend all OpenDaylight developers and users attend this meeting, also any interested Apache Karaf community members as this is a great opportunity to see Karaf's many benefits being realized in a large scale project. Please see the meeting page for conference call details.

Thursday, June 26, 2014

Apache Karaf Cookbook now available for pre-order!

This past winter Johan, Heath, Achim, and I started our latest adventure writing Apache Karaf Cookbook for Packt Publishing. We're happy to announce that the book is finally available for pre-order via Packt's website.

We've taken care to cram as many hints, tips, and experiences into its pages as we could.

Taking a look at our table of contents you'll find recipes for:

  • Apache Karaf for system builders
  • Turning Karaf into a Smart Router with Apache Camel
  • Model Karaf into a Message Broker with Apache ActiveMQ
  • Transform Karaf into a JSP host with Pax-web
  • Distribute your Karaf applications across a clustered container with Apache Karaf Cellar
  • Transmute Karaf into a web service container with Apache CXF
  • Turbo-charge your Karaf applications’ persistence layer scalability with Apache Cassandra
  • Manage Big Data on Karaf with Apache Hadoop
  • Integration test with Pax Exam (bonus chapter!)

We hope the community benefits from our experiences, we've poured a lot of ourselves into this title. For more publications on Karaf please see our Instant OSGi Starter, and Learning Apache Karaf.

Sunday, June 1, 2014

Up coming Apache Karaf releases, OpenDaylight update, and my acceptance into the ASF.

We have two release candidates in progress: Apache Karaf 2.3.6 and 3.0.2.


Our first target is the Karaf 2.3.x line. 



Highlights in this RC include; Better management of RMI/JMX ports for pax-exam integration tests, more robust JDBC against broken data sources,  several improvements to JAAS, among many other refinements and bug fixes.

Wine pairing for this RC is Placido Chianti 2011

Our second release focus is the Karaf 3.0.x line.


Highlights in this RC include; RBAC recognize group configuration when use Publickey to loginmore robust JDBC against broken data sources, add support for role based JMX authorization, Mbean Server RBAC guard should support wildcard role, among many other refinements and bug fixes.

Wine pairing for this RC will be Gabbiano Chianti 2010.

We can't wait to get these release candidates out to the community for validation and voting. Please keep an eye on our dev list for when the votes go live.

Any updates on OpenDaylight on Apache Karaf?


Lots of initial features sets have been defined, and commands adapted to work in their new environment. It's still a work in progress, but coming along nicely :)

There will be an open demo on Monday June 2nd, 2014 on the OpenDaylight Technical Work Stream call: https://wiki.opendaylight.org/view/Tech_Work_Stream:Main

Topics on the call include:


  • Karaf in OpenDaylight & Hands-On demo on developing ODL components for Karaf Runtime - Mathieu Lemay (40 mins) 
  • Multi-Tenancy Discussion - David Lenrow (20 mins)

Membership with the Apache Software Foundation!


On a personal note, I've recently accepted an invitation to become a member of the Apache Software Foundation. I can not express how honoured I am to be given the opportunity to participate with the Apache Community on this level. I'm looking forward to years to come, helping to grow our communities, and contribute more to their success.

Wednesday, April 30, 2014

OpenDaylight on Apache Karaf!

I'm placing aside a bottle of
Colores Del Sol, Malbec, Mendoza, Argentina, 2010
for when the first OpenDaylight Apache Karaf
Release becomes available.
The OpenDaylight Apache Karaf distribution is coming soon!

What is OpenDaylight?


OpenDaylight is an open platform for network programmability to enable Software-Defined Networks and create a solid foundation for Network Functions Virtualization for networks at any size and scale.

What is the OpenDaylight Apache Karaf Distribution?


To put it succinctly, it's an OpenDaylight distribution in which key ODL components are deployed on top of Apache Karaf. The base Karaf container has been configured to support OpenDaylight's specific needs, including Equinox core, key component features available by default, custom commands, and branding!

Why Apache Karaf?


OpenDaylight has been an OSGi based project from the start, now it's ready to improve its base environment experience via Karaf. Specifically, some of the key reasons for the distribution are:
  • Ease of deployment.
  • Friendly console CLI.
  • Superior Pax Exam integration, and
  • Awesome, supportive community ;)

Stay tuned for updates as the OpenDaylight community moves towards the debuting of the new distribution.

Sunday, April 13, 2014

Apache Karaf 2.3.5 and 3.0.1 Released!

The Apache Karaf team are pleased to announce the availability of Apache Karaf 2.3.5 and 3.0.1!

These releases provide system update patches to the 2.3.x and 3.0.x lines. It is recommended that you review our release notes before updating your deployments.

This release process has been something more special, as we produced two release candidates for review at the same time - hence double decanter day.

The Karaf 3.0.1 RC process was enjoyed with Gabbiano Chianti 2011, while the Karaf 2.3.5 RC was enjoyed over a bottle of Fetzer Vally Oaks Zinfandel 2010.

Best release process ever.

Happy developing!

Thursday, April 10, 2014

Double Decanter Day!

Apache Karaf 2.3.5 and 3.0.1 Release Candidates are both up for vote!

I'll apologize that I had to switch over the Extravaganza Trapiche 2013 to a Gabbiano Chianti 2011 (Karaf 3.0.1). The former bottle accidentally made it into the general consumption collection.

The Karaf 2.3.5 RC is being enjoyed with a bottle of Fetzer Vally Oaks Zinfandel 2010.

Please take some time to down load the RC kits, or build from tags in git. The more testing the better for the community. In the mean while I'm going to setup two decanters and enjoy the breathing process twice over :)

Monday, March 24, 2014

Packt Publishing celebrates their 2000th title!


Packt Publishing is celebrating their 2000th title with a special ebook sale starting March 18 to 26th, 2014. This is a great opportunity to pick up your ebook copy of OSGi Starter and Learning Apache Karaf!


Thursday, March 13, 2014

Apache Karaf 3.0.0 on Raspberry Pi!

The question we've all been asking finally answered - yes, Apache Karaf 3.0.0 can run on Raspberry Pi! 

If you're not familiar with Raspberry Pi it's a small, inexpensive computer which at its heart runs a 700 MHz Low Power ARM1176JZ-F Applications ProcessorCPU with 512MB ram.

My build utilizes a Debian based Linux distro, Raspbian, and an Arm compatible Oracle JDK build.

Out of the box I had to make some small modification to the Karaf shell script. The "server" flag was not recognized by the Java installation on my RPi. Editing this out of the script allowed Karaf to start up happily.

First Boot!
I have a feeling there are lots of performance gains to be made with some careful tweaking of JVM parameters.
Other than having reduced memory, IO, and CPU resources in comparison to the Servers and Workstations I'm used to working upon the RPi shown itself to be a very capable platform.

What about the Service Wrapper?

Almost there, however this is about as far as the service wrapper will go on RPi platform :(

Unfortunately that feature still does not operate out of the box on Raspberry Pi. A Jira ticket has been filed for this deficiency, hopefully an Apache License compatible solution will be found.

Wednesday, March 5, 2014

Preparing for Apache Karaf 2.4.0, and 3.0.1

We have two Apache Karaf releases currently on our radar - Apache Karaf 2.4.0 and 3.0.1.

Apache Karaf 2.4.0:


Our next iteration of the 2.x line will introduce: The latest Aries and Pax libraries, Apache Pom 13, add support for role-based JMX authorization, includes heap dumps when we create debugging data from create dump command, blueprint-web feature, support for JAAS groups, and includes Pax CDI feature. Of course there are many other new additions, which you'll have to read about in the release notes.

To prepare I've selected a bottle of Barbera D'asti Bersano 2008 to decant while listening to Arcade Fire's album Reflektor.

If you're interested in watching our progress towards a stable release candidate please tune into https://builds.apache.org/job/karaf-2.x/ for our daily Karaf 2.x branch builds.

Apache Karaf 3.0.1:


This will be our first patch release of the 3.0.x line after our long awaited 3.0.0 GA.

Highlights include updates to Felix, Pax, and Aries libraries, inclusion of Pac CDI, added support for displaying Gogo commands in Karaf console, and an updated OpenJPA feature. Many more improvements and bug fixes are provide, and it is highly recommended that you consult the release notes.

To prepare for this patch, I've selected a bottle of Extravaganza Trapiche 2013 to decant while listening to Pearl Jam's album Lightening Bolt.

If you're interested in watching our progress towards a stable release candidate please tune into https://builds.apache.org/job/karaf-3.0.x/ for our daily Karaf 3.0.x branch builds.

Release Process:

We've recently made the switch to Git from Subversion, and have successfully produced our first few major and minor releases under the new system. For those of you whom are interested in some of the changes that occurred behind the scenes, please visit our release guide.

Monday, February 17, 2014

What's on my OSGi book shelf?

I've been asked many times over the years "what books do you have on OSGi?". Initially all I could point people to was the OSGi spec, blogs, and project demos, these days however my book shelf contains many titles. Let's have a look at them.
OSGi books on my book shelf.

OSGi Starter:

Brand new to OSGi? This book is for you. In a brief format the authors introduce you key OSGi concepts, and provide you with definitions, explanations, and examples to get you and your team thinking in modular Java.

Find a copy here: OSGi Starer.

OSGi in Action:

Simply a must read for anyone looking to take a deep dive into the nuts and bolts of OSGi. The first three chapters alone should be essential reading to all developers looking to understand OSGi  bundles, life cycle, and services.

Find a copy here: OSGi in Action.

OSGi core reference and compendium (not pictured above but essential):

The OSGi Alliance publishes the core specification and compendium. These documents are very dense, aimed towards those of us implementing the framework and services. The alliance also hosts an OSGi wiki that is a first stop for quick terminology explanations.

Find a copy here: OSGi specification.

Enterprise OSGi in Action:

Another must read for Enterprise users of OSGi. This book will walk you through using servlets, JSPs, WARs, and JPA. Most importantly it'll give you solid advice in using Blueprint.

Find a copy here: Enterprise OSGi in Action.

Java Application Architecture:

A must read for all Java developers looking into modular design. Even if you do not want to use OSGi you should still read this book for its valuable insights into software architecture. I'd also suggest visiting the author's site for the modular pattern catalog - so many cool concepts to read about here.

Find a copy here: Java Application Architecture.

Learning Apache Karaf:

Brand new to Apache Karaf? This book is for you. In its pages you will be introduced to the OSGi-based container, and learn best practices by example. The book shows you how to set up an Apache Karaf distribution, and how to arrive at a production-ready deployment. Learning Apache Karaf teaches you everything you need to install, configure, and administer Apache Karaf.

Find a copy here: Learning Apache Karaf.


Certainly the above represents a lot of reading, and digesting of core concepts, and expert tips. To help make adopting OSGi and Apache Karaf easier Savoir Technologies offers a training course that introduces your team to the key concepts, builds confidence, and delivers expert tips. For more information please visit http://www.savoirtech.com/services/training/developer-training-for-osgi-apache-karaf.


Sunday, February 16, 2014

Nursing a cold, better write a blog update.

I've been relatively quiet posting to my blog the last few months, a lot of that has been due to travel, work, and few background projects I've puttering away on. Given I'm home nursing a cold I thought I'd update you all on a couple of things I've been working on:

Automated Apache Karaf Builds:

Suse Enterprise Linux,  Ubuntu, and Windows 7 Pro Jenkins Nodes in Action
To help make performing Apache Karaf releases easier I've invested in operating a small Jenkins testing infrastructure. Each node is built on a Dell 110ii server, with Xeon processor and SSD disk. Karaf, along with other projects I'm tracking, are built nightly on various platforms such that I can quick gauge their health status. When a release become immanent I log into the master Jenkins node and quickly issue a build on the platforms before kicking off the release candidate build. This saves me a lot of time as I can often catch platform specific build bugs before having the community begin a RC vote. These builds augment the reports generated by https://builds.apache.org - providing me with more platform coverage, thereby increasing our RC confidence.

Learning Apache Karaf:

As posted here before, my Fall was taken up in writing and finalizing Packt's Learning Apache Karaf.  From feed back I've received many have found it a useful resource for introducing their teams to Apache Karaf, others have commented that they wished we could have dived deeper into development on the platform - to remedy this request a new project was undertaken...

Apache Karaf Cookbook:

Our last Karaf book introduced users and administers to the basics of Apache Karaf. While providing a great overview many people asked for more in depth examples of using Karaf to accomplish everyday tasks. To this end we (Johan, Heath, Achim, and I) have under took a new project to build a recipe book of Karaf projects for Packt Publishing. The work has been underway for the last two months, and we expect it to continue through to the summer season. Topics such as making Karaf production ready, using Apache Camel, ActiveMQ, and CXF in Karaf are covered and so many more! We're really excited to be working on this project and hope that it satisfies our readers thirst for more demos and in-depth explanations.