создание OSGi с поддержкой jar для ORACLE (для Spring Roo - интеграция ORACLE db) - PullRequest
4 голосов
/ 06 сентября 2011

Я решаю проблему с драйвером Spring Roo / Oracle OSGi, которую многие другие уже решали и, похоже, решили.

«В настоящее время Springsource не может разместить драйвер Oracle в оболочке OSGi», поэтому вам кажется, что вынужно взять с собой уже существующий не OSGi.

Я выполняю шаги здесь с драйвером для Oracle 11g, драйвер версии 2.

Застрял с шагом 11,

Удалите неисправный драйвер OSGI из репозитория Felix:
  • Используйте «osgi ps», чтобы получить идентификатор удаляемого пакета OSGI.
  • Используйте «заголовки osgi», чтобы получить Bundle-SymbolicName соответствующего пакета OSGI.Возможно com.oracle.roo.jdbc.ojdbc5 или com.oracle.roo.jdbc.ojdbc6.
  • Использование osgi uninstall –bundleSymbolicName com.oracle.roo.jdbc.ojdbcx

У меня вообще нет фона с osgi, несмотря на получение com.sun.security.auth.moduleпри запуске указывается отсутствующая зависимость:

roo> database reverse engineer --shema xxx

не может перейти к фазам osgi для удаления этих зависимостей из OSGi.

Может ли кто-нибудь консоль вывести команды, чтобы сделать это, как ни странно.

Очень признателен - Roo позволяет очень быстро создавать базовое приложение, но roo-oracle - это капля утеса по сравнению с простотой и скоростью всего остального.

Ответы [ 3 ]

3 голосов
/ 06 сентября 2011
NOTE: "CMD>" indicates from the command prompt, "roo>" indicates from within the roo shell, which can be accessed from the command prompt, by typeing "roo", provided the roo binary in on the environment path.     

Чтобы это исправить, я сделал: В директории с файлом oracle jar:

[1] CMD> mvn install:install-file -Dfile=ojdbc5-11.2.0.2.jar -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=11.2.0.2 -Dpackaging=jar

[2] start roo, and run:
roo> addon create wrapper --topLevelPackage com.oracle.roo.JDBC --groupId com.oracle --artifactId ojdbc5 --version 11.2.0.2 --vendorName Oracle --licenseUrl http://www.oracle.com

[3] need to remove some dependencies from the generated file (com.oracle.roo.jdbc.ojdbc5-11.2.0.2.0001.jar in this case), open jar in 7zip or other and edit manifest.MF file and remove from the "Import-Package:" bit in MINIFEST.MF:
com.sun.security.auth.module
oracle.i18n.text,
oracle.i18n.text.converter
oracle.ons,oracle.security.pki

[4] install the following dependencies (get from http://ebr.springsource.com/repository/app/, search on this site for the groupIds below) into mvn:

CMD> mvn install:install-file -Dfile=com.springsource.javax.resource-1.5.0.jar -DgroupId=javax.resource -DartifactId=com.springsource.javax.resource -Dversion=1.5.0 -Dpackaging=jar

CMD> mvn install:install-file -Dfile=com.springsource.javax.transaction-1.1.0.jar -DgroupId=javax.transaction -DartifactId=com.springsource.javax.transaction -Dversion=1.1.0 -Dpackaging=jar

CMD> mvn install:install-file -Dfile=ojdbc5.jar -DgroupId=com.oracle -DartifactId=ojdbc5 -Dversion=11.2.0.2 -Dpackaging=jar

[5] in roo, run

roo> osgi install --url file:///c:\users\alex\com.springsource.javax.transaction-1.1.0.jar
roo> osgi install --url file:///c:\users\alex\com.springsource.javax.resource-1.5.0.jar
roo> osgi install --url file:///c:\path\to\current\dir\oracle\file_generated_by_wrapper.jar


[6] to check these files have made it ok type 

roo> osgi ps

gives:

[  62] [Active     ] [    1] Spring Roo - Wrapping - jline (0.9.94.0010)
[  63] [Active     ] [    1] Spring Roo - Wrapping - json-simple (1.1.0.0010)
[  64] [Active     ] [    1] Spring Roo - Wrapping - protobuf-java-lite (2.3.0.0001)
[  65] [Active     ] [    1] Spring User Agent Analysis - Client (1.0.2.RELEASE)
[  69] [Active     ] [    1] Java Resource API (1.5.0)
[  70] [Active     ] [    1] com-oracle-roo-jdbc (11.2.0.2_0001)
[  72] [Installed  ] [    1] Java Transaction API (1.1.0)

basically 'Active' is what you want - 

run:

roo> osgi start --url file:///c:\users\alex\com.springsource.javax.transaction-1.1.0.jar

to change 'Installed' to 'Active'

[7] in roo, run:
roo> database reverse engineer --schema <schema>

if you get a 'Framework error' then you need to open up the manifest of your jar and delete more oracle imports (the above list *should* be sufficient) - only remove from the imports section tho.

once you've changed the jar, reload into OSGi with:

roo> osgi uninstall --bundleSymbolicName com.oracle.roo.jdbc.ojdbc5
roo> osgi start --url  file:///c:\users\alex\com.oracle.roo.jdbc.ojdbc5-11.2.0.2.0001.jar

re-run:

roo> database reverse engineer --schema <schema> 

to verify. Add a table into the schema and get DBA to grant access to get stuff to actually be generated. 
2 голосов
/ 16 сентября 2011

Команды, упомянутые в моем посте (http://nidget.wordpress.com/2011/07/21/how-to-osgify-an-oracle-jdbc-driver-with-spring-roo/) - это команды roo.

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)

Здесь показан идентификатор пакета com-oracle-roo-jdbc: 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 = …

Проверьте детали для пакета com-oracle-roo-jdbc (68) и, в частности, значение «Bundle-SymbolicName»

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

Вот и все. Удалено.

0 голосов
/ 11 июня 2016

Итак, с 2016 года (Spring Roo 1.3.2) для тех, кто когда-либо искал, как удалить OSGi, вот что мне помогло.

roo> osgi uninstall - bundleSymbolicName"com.oracle.roo.jdbc.ojdbc6"

Пакет 'com.oracle.roo.jdbc.ojdbc6': удален!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...