OSGi бандл драйвера для Oracle

Драйверы JDBC для Oracle не являются OSGi бандлами, но их можно преобразовать в бандл, используя фреймворк Maven. Для этого следует выполнить следующие шаги :

  1. Инсталлировать в локальный репозиторий JDBC драйвер, например ojdbc6.jar.
  2. Создать Maven проект.
  3. Включить в файл описания проекта pom.xml зависимость драйвера ojdbc6.jar и плагин формирования бандла BND.

Манифест MANIFEST.MF вновь созданного бандла JDBC драйвера должен включать соответствующие секции <Import-Package>, <Export-Package>.

Проект создания бандла драйвера для Oracle

Можно использовать предлагаемый Eclipse проект для формирования OSGi бандла JDBC драйвера. Проект включает только файл описания pom.xml.

Листинг описания проекта pom.xml

Основную роль в этом проекте играет один единственный файл pom.xml, включающий :

  • секцию описания свойств <properties>;
  • секцию зависимости <dependency> с драйвером ojdbc6.jar;
  • секцию формирования <build> с плагином BND (maven-bundle-plugin).

При описании плагина BND важно правильно определить секции <Export-Package> и <Import-Package>.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.oracle.ojdbc</groupId>
  <artifactId>ojdbc6</artifactId>
  <packaging>bundle</packaging>
  <version>11.2.0.1</version>
  <name>Oracle JDBC driver</name>
  <description>
     This bundle wraps driver ojdbc6-11.2.0.1.0.jar
  </description>

  <properties>
     <project.build.sourceEncoding>
        UTF-8
     </project.build.sourceEncoding>
     <pkgArtifactId>ojdbc6</pkgArtifactId>
     <pkgVersion>11.2.0.1</pkgVersion>
     <osgiVersion></osgiVersion>
     <pkgVendor>Oracle Corporation</pkgVendor>
     <maven.compiler.source>1.8</maven.compiler.source>
     <maven.compiler.target>1.8</maven.compiler.target>
     <pkgDocUrl/>
  </properties>
  <dependencies>
     <dependency>
        <groupId>com.oracle</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.1.0</version>
        <optional>true</optional>
     </dependency>
  </dependencies>

  <build>
     <extensions>
        <extension>
           <groupId>org.apache.maven.wagon</groupId>
           <artifactId>wagon-webdav-jackrabbit</artifactId>
           <version>1.0-beta-6</version>
        </extension>
     </extensions>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <version>2.3.4</version>
            <extensions>true</extensions>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>
                        
                    </Bundle-SymbolicName>
                    <Export-Package>
                        *;version=
                    </Export-Package>
                    <Import-Package>
                        !javax.resource,
                        !javax.resource.spi,
                        !javax.resource.spi.endpoint,
                        !javax.resource.spi.security,
                        !oracle.security.pki,
                        !oracle.ons,
                        !oracle.i18n.text,
                        !oracle.i18n.text.converter,
                        !oracle.xdb,
                        !com.sun.security.auth.module,*
                    </Import-Package>
                </instructions>
            </configuration>
        </plugin>
     </plugins>
  </build>
</project>

Листинг манифеста бандла, MANIFEST.MF

Если взглянуть на манифест MANIFEST.MF созданного бандла, то можно будет увидеть все необходимые параметры и секции, классифицирующие jar-архив как OSGi бандл. Export-Package в листинге представлен в сильно усеченном виде.

Manifest-Version: 1.0
Bundle-Description: This bundle wraps driver ojdbc6-11.2.0.1.0.jar
Bundle-SymbolicName: ojdbc6
Built-By: PC
Bundle-ManifestVersion: 2
Bnd-LastModified: 1515178285409
Bundle-Version: 11.2.0.1
Bundle-Name: Oracle JDBC driver
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.8.0_121
Tool: Bnd-1.15.0
Import-Package: javax.crypto,javax.crypto.spec,javax.management,javax.
 naming,javax.naming.directory,javax.naming.spi,javax.net,javax.net.ss
 l,javax.security.auth,javax.security.auth.callback,javax.security.aut
 h.kerberos,javax.security.cert,javax.sql,javax.sql.rowset,javax.sql.r
 owset.spi,javax.transaction.xa,javax.xml.parsers,org.ietf.jgss,org.w3
 c.dom,org.xml.sax,org.xml.sax.helpers
Export-Package: oracle.jdbc.util;version="11.2.0.1", …

Ignore-Package: oracle.i18n.text.converter,oracle.security.pki,com.sun
 .security.auth.module,javax.resource.spi.endpoint,javax.resource.spi.
 security,oracle.ons,oracle.xdb,oracle.i18n.text,javax.resource,javax.
 resource.spi

Скачать проект

Рассмотренный на странице проект создания бандла драйвера для Oracle в виде проекта Eclipse можно скачать здесь (1.95 Мб). Архив включает бандл JDBC драйвера ojdbc6-11.2.0.1.jar в директории target.

  Рейтинг@Mail.ru