Search code examples
springoracle-databaseosgi

creating OSGi enabled jar for ORACLE (for Spring Roo - ORACLE db integration)


I'm hitting the Spring Roo / Oracle OSGi driver issue that plenty of others have hit and seem to have solved.

"Springsource currently can't host an OSGi wrapped Oracle driver" so it appears you need to take you existing non-OSGi one a wrap it.

I've been following the steps here with the driver for Oracle 11g, version 2's driver.

Got completely stuck with step 11,

  1. Remove the faulty OSGI driver from the Felix repository:
    • Use “osgi ps” to retrieve the ID of the OSGI bundle to remove.
    • Use “osgi headers” to get the Bundle-SymbolicName of the corresponding OSGI bundle. Probably com.oracle.roo.jdbc.ojdbc5 or com.oracle.roo.jdbc.ojdbc6.
    • Use osgi uninstall –bundleSymbolicName com.oracle.roo.jdbc.ojdbcx

I've no background with osgi at all and despite getting the com.sun.security.auth.module missing dependency indicated when you run:

roo> database reverse engineer --shema xxx

can't progress with the osgi phases to uninstall these dependencies from OSGi.

Could anyone console dump the commands to do this, however noddy.

Much appreciated - Roo allows a basic app to be build real fast, but roo-oracle is a drop of a cliff, compared to the ease and speed of everything else.


Solution

  • The commands mentioned in my post (http://nidget.wordpress.com/2011/07/21/how-to-osgify-an-oracle-jdbc-driver-with-spring-roo/) are roo commands.

    roo> osgi ps
    START LEVEL 99
    ID State Level Name
    [ 0] [Active ] [ 0] System Bundle (3.0.7)
    [ 1] [Active ] [ 1] jansi (1.5)
    …
    [ 68] [Resolved ] [ 1] com-oracle-roo-jdbc (11.2.0.2_0001)
    

    This shows the id of the com-oracle-roo-jdbc bundle: 68

    roo> osgi headers
    
    …
    com-oracle-roo-jdbc (68)
    ————————
    Bnd-LastModified = 1309962402810
    Build-Jdk = 1.6.0_07
    Built-By = jplandrain
    Bundle-Description = This bundle wraps the standard Maven artifact: ojdbc5-11.2.0.2.
    Bundle-License = http://www.oracle.com
    Bundle-ManifestVersion = 2
    Bundle-Name = com-oracle-roo-jdbc
    Bundle-SymbolicName = com.oracle.roo.jdbc.ojdbc5
    Bundle-Vendor = Oracle (wrapped into an OSGi bundle by the Spring Roo project build system)
    Bundle-Version = 11.2.0.2_0001
    Created-By = Apache Maven Bundle Plugin
    Export-Package = …
    

    Check the details for the bundle com-oracle-roo-jdbc (68) and, in particular, the “Bundle-SymbolicName” value

    roo> osgi uninstall com.oracle.roo.jdbc.ojdbc5
    

    That’s it. Removed.