Mark Ashworth

Designing applications, writing, photography and reading

Adding Apache Shiro feature to Apache Karaf

Start Apache Karaf
cd bin
./karaf or karaf.bat

Adding a feature repository
feature:repo-add mvn:org.apache.shiro/shiro-features/1.2.1/xml/features

List features
shiro-core | 1.2.1 | | shiro-1.2.1
shiro-web | 1.2.1 | | shiro-1.2.1
shiro-aspectj | 1.2.1 | | shiro-1.2.1
shiro-cas | 1.2.1 | | shiro-1.2.1
shiro-ehcache | 1.2.1 | | shiro-1.2.1
shiro-quartz | 1.2.1 | | shiro-1.2.1
shiro-spring | 1.2.1 | | shiro-1.2.1

Install the feature
feature:install -v shiro-web

shiro-core | 1.2.1 | x | shiro-1.2.1
shiro-web | 1.2.1 | x | shiro-1.2.1
shiro-aspectj | 1.2.1 | | shiro-1.2.1
shiro-cas | 1.2.1 | | shiro-1.2.1
shiro-ehcache | 1.2.1 | | shiro-1.2.1
shiro-quartz | 1.2.1 | | shiro-1.2.1
shiro-spring | 1.2.1 | | shiro-1.2.1


It looks like there is a bug in Weld that causes the Conversation Scoped beans to by synchronized during creation.
Bug email url
Bug report url

Using BND to create OSGi bundles for sysmemcached and couchbase client

The link to the article can be found:-

Adding Microsoft SQL Server JDBC driver to Nexus and local maven repository

The Microsoft SQL Server JDBC driver is not available in public repositories because of licensing issues but it is easy to install into a company wide repository like Sonatype Nexus or into the local repository on your machine. This procedure can be used for other libraries as well.

Step 1 : Download the driver from

Step 2: Extract the file and locate the sqljdbc.jar and sqljdbc4.jar. The table below indicates the usage of the jars respectively.



sqljdbc.jar sqljdbc.jar class library provides support for JDBC 3.0.sqljdbc.jar class library requires a Java Runtime Environment (JRE) of version 5.0. Using sqljdbc.jar on JRE 6.0 will throw an exception when connecting to a database.The JDBC Driver does not support JRE 1.4. You must upgrade JRE 1.4 to either JRE 5.0 or JRE 6.0 when using the JDBC Driver. In some cases, you might need to recompile your application because it might not be compatible with JDK 5.0 or later. For more information, see the documentation on Sun Microsystems Web site.
sqljdbc4.jar sqljdbc4.jar class library provides support for JDBC 4.0. It includes all of the features of the sqljdbc.jar as well as the new JDBC 4.0 methods.sqljdbc4.jar class library requires a Java Runtime Environment (JRE) of version 6.0. Using sqljdbc4.jar on JRE 1.4 or 5.0 will throw an exception.Use sqljdbc4.jar when your application must run on JRE 6.0, even if your application does not use JDBC 4.0 features.

Step 3: If you have Nexus then use the following pom.xml to add the sqljdbc.jar

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation=""


Step 4: Select the 3rd Party Releases repository in Nexus. In the image I am showing my local Nexus 2.0 repository

3rd party repository

Step 5: Click the Artifact Upload tab.

a. Select the GAV Definition: From POM

b. POM file name: Select the file containing the pom.xml from step 3

c. Select artifacts to upload: Select the sqljdbc.jar from enu folder in the extracted zip folder

Adding sqljdbc.jar to Nexus 3rd Party Releases

Step 6: Select Upload


Step 7: Installing the sqljdbc4.jar uses the following pom.xml and the steps outlined above

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation=""


Step 8: If you do not have Sonatype Nexus, then to install the libraries into the local repository using the following command. You do not need the pom.xml files since these will be created by Maven.

mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DartifactId=sqljdbc4 -Dversion=4.0.2206.100

Step 9: Reference the library in you project


NOTE: Tomorrow I will be deploying the driver into Apache Karaf.

OSGi enabled LMAX Disruptor

A friend of mine,John Steinberg, introduced me to the high performance currency framework LMAX Disruptor. In a recent project I wanted to use the Disruptor as an OSGi bundle that my application could make use of but the MANIFEST.MF supplied with the library just contained the default build information.

I have contributed a patch that adds the relevant bundle information, but if you would like LMAX Disruptor 2.9 built library with the OSGi information then have a look here. I did get confirmation from the LMAX Disruptor developers that the patch has been committed and will be available in the next release.

Below is a screen shot of Apache Karaf with the LMAX Disruptor deployed.

Apache Karaf showing deployed Disruptor bundle

Social Media JSR 357 is voted no go in current form

The JCP voted 8 no, 5 yes and 3 abstains for the Social Media API (JSR 357) with the main complaint being that the specification is too broad in it’s current form and would hamper the natural formation of the technology since it is still early days for this technology.

The JSR review ballot can be found here.

JSR 343: JMS 2.0 – the next version of the JMS Specification

This version should actually be called JMS 1.2 since the minor changes and clarifications in the specification (a total of 18 defects). However these defects will address many of the frustrations that developers have had when trying to implement business critical software against the specification and I hope the clarification of interchangeability between JMS providers, i.e. JMS_SPEC-42.

Some my personal highlights are:-

JMS_SPEC-63 : The idea of a default connection factory (akin to the java:/ConnectionFactory in JBoss 7.x)

JMS_SPEC-7 : Similar to the HTTP and SOAP bindings that Oracle has in their Weblogic Server offering

JMS_SPEC-42 / 54 : Defining a standard way to define the message destination without the convoluted message-destination-link, although the message-destination-link will still be used if the current naming of resources between JBoss, Glassfish and Weblogic continues with the one application server requiring java:/ or java:jboss and the others not.

JMS_SPEC-56 : Although there is no mention of the reason for requesting allowing batches of messages to be delivered listeners, it seems like it was requested to improve performance, but probably opens more issues than it would solve since it would require the application developer to custom build logic to handle the different nuances when a failure occurs. A better alternative would be for example like Weblogic Server messaging, which has a process where it batches off a set of messages that is then delivered to the listeners.


JBoss 7.1 Console 1.1.0 Released

The most notable changes in this release are the addition of four new subsystems, that are manageable through the console now.

New Subsystem Support

  • mail
  • modcluster
  • infinispan
  • jgroups

This release can be downloaded here.

The original blog post can be found here.

JBoss 7.1 Final realeased

JBoss 7.1 has been released and in the process of downloading it so that I can start using it 🙂 Cannot wait!!!


Blog at

Up ↑