karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bengt Rodehav <be...@rodehav.com>
Subject Re: "The org.osgi.service.jdbc package is unavailable" after upgrading to Karaf 2.3.0
Date Mon, 22 Oct 2012 19:54:36 GMT
Thanks for the info JB. Will check if that package was available in my
previous custom distribution (based on Karaf 2.2.8). If not, then it is
probably not needed.

Loooks like a jndi problem to me since I can verify that the service is
actually published but it cannot be found via jndi.

/Bengt

2012/10/22 Jean-Baptiste Onofré <jb@nanthrax.net>

> FYI,
>
> there is a change in the location of the org.osgi.service.jdbc package
> (especially org.osgi.service.jdbc.**DataSourceFactory):
>
> In Karaf 2.2.x, which use OSGi r4.2, this package was provided in
> org.osgi.enterprise.
>
> In Karaf 2.3.x, which use OSGi r4.3, this package was provided in
> org.osgi.compendium.
>
> In next release using OSGi r5.0.0, it's back in org.osgi.enterprise.
>
> So check the exported packages and the import in your bundle (especially
> if you use a Required-Bundle).
>
> Regards
> JB
>
>
> On 10/22/2012 04:06 PM, Charles Moulliard wrote:
>
>> This is correct
>>
>> On Mon, Oct 22, 2012 at 2:29 PM, Bengt Rodehav <bengt@rodehav.com
>> <mailto:bengt@rodehav.com>> wrote:
>>
>>     Achim, no Grace Period for any of the bundles.
>>
>>     Charles, "headers 151" gives me the following:
>>
>>     /Connect :: filetransfer-history-domain (151)/
>>     /-----------------------------**---------------/
>>     /Manifest-Version = 1.0/
>>     /Bnd-LastModified = 1350893282476/
>>     /Tool = Bnd-0.0.357/
>>     /Meta-Persistence = META-INF/persistence.xml/
>>     /Built-By = berodeha/
>>     /Implementation-Version = 2.3-SNAPSHOT/
>>     /Build-Jdk = 1.6.0_32/
>>     /Implementation-Title = Digia Connect/
>>     /Created-By = Apache Maven Bundle Plugin/
>>     /
>>     /
>>     /Bundle-Name = Connect :: filetransfer-history-domain/
>>     /Bundle-SymbolicName =
>>     se.digia.connect.services.**filetransfer.history-domain/
>>     /Bundle-Version = 2.3.0.SNAPSHOT/
>>     /Bundle-ManifestVersion = 2/
>>     /
>>     /
>>     /Import-Package =/
>>     /        javax.persistence;resolution:=**optional;version=1.1,/
>>     /        javax.persistence.metamodel;**resolution:=optional;version=*
>> *1.1,/
>>     /        javax.validation.constraints;**resolution:=optional;version=
>> **1.0,/
>>     /        org.apache.openjpa.enhance;**resolution:=optional;version=**
>> 2.1,/
>>     /        org.apache.openjpa.util;**resolution:=optional;version=**
>> 2.1,/
>>     /        se.digia.connect.filetransfer.**history.domain;/
>>     /                resolution:=optional;/
>>     /                version=2.3,/
>>     /
>>     se.digia.connect.util.**persistence;resolution:=**
>> optional;version=2.3/
>>     /Export-Package =/
>>     /        se.digia.connect.filetransfer.**history.domain;/
>>     /                uses:="org.apache.openjpa.**util,/
>>     /                        se.digia.connect.util.**persistence,/
>>     /                        javax.validation.constraints,/
>>     /                        org.apache.openjpa.enhance,/
>>     /                        javax.persistence,/
>>     /                        javax.persistence.metamodel";/
>>     /                version=2.3.0.SNAPSHOT/
>>
>>
>>     I think this is correct. Also, this has worked for quite some time
>>     on Karaf 2.2.8 (which had an older Aries version).
>>
>>     /Bengt
>>
>>
>>     2012/10/22 Charles Moulliard <ch007m@gmail.com
>>     <mailto:ch007m@gmail.com>>
>>
>>
>>         Have you added Meta-Persistence metadata in the MANIFEST file ?
>>         I have created a ticket to provide a more end user message on
>>         the console (https://issues.apache.org/**jira/browse/ARIES-945<https://issues.apache.org/jira/browse/ARIES-945>
>> )
>>
>>
>>         On Mon, Oct 22, 2012 at 2:09 PM, Bengt Rodehav
>>         <bengt@rodehav.com <mailto:bengt@rodehav.com>> wrote:
>>
>>             Thanks for your reply Charles,
>>
>>             Your're right I don't need the DataSourceFactory. I
>>             mistakenly thought that the info message was connected to
>>             the problem with not finding the data source via JNDI. Since
>>             everything has worked before (using Karaf 2.2.8) I assumed
>>             that the feature descriptor   in Karaf 2.3.0 lacked a bundle
>>             (that exported the org.osgi.service.jdbc package). That's
>>             why I thought it was a Karaf problem and not an Aries problem.
>>
>>             So, I probably do not need the org.osgi.service.jdbc package
>>             - it was a false lead. Still, I do have problems finding the
>>             data source via jndi. I get:
>>
>>             /
>>             2012-10-22 13:36:23,428 | ERROR | y/api/getEntries |
>>             container                        |
>>             ntainer.unit.impl.**JndiDataSource   85 | The DataSource
>>             osgi:service/javax.sql.**DataSource/(osgi.jndi.service.**name<http://osgi.jndi.service.name>
>>             <http://osgi.jndi.service.name**
>> >=jdbc/filetransferhistoryjta)
>>
>>             required by bundle
>>             se.digia.connect.services.**filetransfer.history-domain/2.**
>> 3.0.SNAPSHOT
>>             could not be found.
>>             javax.naming.**NameNotFoundException:
>>             osgi:service/javax.sql.**DataSource/"(osgi.jndi.**
>> service.name <http://osgi.jndi.service.name>
>>             <http://osgi.jndi.service.name**
>> >=jdbc/filetransferhistoryjta)**"
>>
>>             at
>>             org.apache.aries.jndi.url.**ServiceRegistryContext.lookup(**
>> ServiceRegistryContext.java:**113)[139:org.apache.aries.**jndi.url:1.0.0]
>>             at
>>             org.apache.aries.jndi.url.**ServiceRegistryContext.lookup(**
>> ServiceRegistryContext.java:**144)[139:org.apache.aries.**jndi.url:1.0.0]
>>             at
>>             org.apache.aries.jndi.**DelegateContext.lookup(**
>> DelegateContext.java:161)[137:**org.apache.aries.jndi.core:1.**0.0]
>>             at
>>             javax.naming.InitialContext.**lookup(InitialContext.java:**
>> 392)[:1.6.0_32]
>>             at
>>             org.apache.aries.jpa.**container.unit.impl.**
>> JndiDataSource.getDs(**JndiDataSource.java:65)[134:**
>> org.apache.aries.jpa.**container:1.0.0]
>>             at
>>             org.apache.aries.jpa.**container.unit.impl.**
>> DelayedLookupDataSource.**getConnection(**DelayedLookupDataSource.java:**
>> 36)[134:org.apache.aries.jpa.**container:1.0.0]
>>             at
>>             org.apache.openjpa.lib.jdbc.**DelegatingDataSource.**
>> getConnection(**DelegatingDataSource.java:137)**
>> [142:org.apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.lib.jdbc.**DecoratingDataSource.**
>> getConnection(**DecoratingDataSource.java:112)**
>> [142:org.apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.jdbc.**schema.DataSourceFactory.**
>> installDBDictionary(**DataSourceFactory.java:239)[**
>> 142:org.apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.jdbc.conf.**JDBCConfigurationImpl.**
>> getConnectionFactory(**JDBCConfigurationImpl.java:**
>> 733)[142:org.apache.openjpa:2.**1.1]
>>             at
>>             org.apache.openjpa.jdbc.conf.**JDBCConfigurationImpl.**
>> getDataSource(**JDBCConfigurationImpl.java:**
>> 872)[142:org.apache.openjpa:2.**1.1]
>>             at
>>             org.apache.openjpa.jdbc.**kernel.JDBCStoreManager.**
>> getDataSource(**JDBCStoreManager.java:179)[**
>> 142:org.apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.jdbc.**kernel.JDBCStoreManager.**
>> setContext(JDBCStoreManager.**java:162)[142:org.apache.**openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.jdbc.**kernel.JDBCStoreManager.**
>> setContext(JDBCStoreManager.**java:148)[142:org.apache.**openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.kernel.**DelegatingStoreManager.**
>> setContext(**DelegatingStoreManager.java:**79)[142:org.apache.openjpa:2.*
>> *1.1]
>>             at
>>             org.apache.openjpa.kernel.**BrokerImpl.initialize(**
>> BrokerImpl.java:369)[142:org.**apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.kernel.**BrokerImpl.initialize(**
>> BrokerImpl.java:323)[142:org.**apache.openjpa:2.1.1]
>>             at
>>             org.apache.openjpa.kernel.**AbstractBrokerFactory.**
>> initializeBroker(**AbstractBrokerFactory.java:**
>> 229)[142:org.apache.openjpa:2.**1.1]
>>             at
>>             org.apache.openjpa.kernel.**AbstractBrokerFactory.**
>> newBroker(**AbstractBrokerFactory.java:**213)[142:org.apache.openjpa:2.**
>> 1.1]
>>             at
>>             org.apache.openjpa.kernel.**DelegatingBrokerFactory.**
>> newBroker(**DelegatingBrokerFactory.java:**156)[142:org.apache.openjpa:2.
>> **1.1]
>>             at
>>             org.apache.openjpa.**persistence.**EntityManagerFactoryImpl.*
>> *createEntityManager(**EntityManagerFactoryImpl.java:**
>> 227)[142:org.apache.openjpa:2.**1.1]
>>             at
>>             org.apache.openjpa.**persistence.**EntityManagerFactoryImpl.*
>> *createEntityManager(**EntityManagerFactoryImpl.java:**
>> 60)[142:org.apache.openjpa:2.**1.1]
>>             at
>>             org.apache.aries.jpa.**container.impl.**
>> CountingEntityManagerFactory.**createEntityManager(**
>> CountingEntityManagerFactory.**java:71)[134:org.apache.aries.**
>> jpa.container:1.0.0]
>>             at
>>             org.apache.aries.jpa.**container.context.transaction.**impl.*
>> *JTAPersistenceContextRegistry.**getCurrentPersistenceContext(**
>> JTAPersistenceContextRegistry.**java:152)[135:org.apache.**
>> aries.jpa.container.context:1.**0.1]
>>             at
>>             org.apache.aries.jpa.**container.context.transaction.**
>> impl.JTAEntityManager.**getPersistenceContext(**
>> JTAEntityManager.java:87)[135:**org.apache.aries.jpa.**
>> container.context:1.0.1]
>>             at
>>             org.apache.aries.jpa.**container.context.transaction.**
>> impl.JTAEntityManager.**getCriteriaBuilder(**JTAEntityManager.java:391)[*
>> *135:org.apache.aries.jpa.**container.context:1.0.1]
>>             ...
>>             /
>>
>>             But the data source seem to be published as a service, the
>>             command "ls | grep -A 4 -B 4 javax.sql.DataSource" gives me
>>             the following output:
>>
>>             /Connect :: filetransfer-history-**datasource (153)
>> provides:/
>>             /-----------------------------**
>> -----------------------------/
>>             /javax.sql.XADataSource/
>>             /javax.sql.DataSource/
>>             /org.osgi.service.blueprint.**container.BlueprintContainer/
>>
>>
>>             I then execute "ls 153" and get:
>>
>>             /
>>             Connect :: filetransfer-history-**datasource (153) provides:
>>             ------------------------------**----------------------------
>>             objectClass = javax.sql.XADataSource
>>             osgi.jndi.service.name <http://osgi.jndi.service.name**> =
>>             jdbc/filetransferhistoryjta
>>             osgi.service.blueprint.**compname = derbyXADataSource
>>             service.id <http://service.id> = 493
>>             ----
>>             objectClass = javax.sql.DataSource
>>             osgi.jndi.service.name <http://osgi.jndi.service.name**> =
>>             jdbc/filetransferhistorynojta
>>             osgi.service.blueprint.**compname = derbyDataSource
>>             service.id <http://service.id> = 494
>>
>>             ----
>>             objectClass =
>>             org.osgi.service.blueprint.**container.BlueprintContainer
>>             osgi.blueprint.container.**symbolicname =
>>             se.digia.connect.services.**filetransfer.h/
>>             istory-datasource
>>             /
>>             osgi.blueprint.container.**version = 2.3.0.SNAPSHOT
>>             service.id <http://service.id> = 495
>>
>>             /
>>
>>             To me it looks like the service is provided with the correct
>>             properties. Maybe it's a jndi problem? I was hoping there
>>             was a "jndi" command in the Karaf shell that I could use to
>>             see what can be resolved via jndi but I can't find such a
>>             command.
>>
>>             I've actually encountered another strange problem. On
>>             startup everything looks fine. But when I try to access the
>>             webconsole - it's not there. I then start to type "list" in
>>             the Karaf shell. But as soon as I type the "l" I get the
>>             following message in the console:
>>
>>             /karaf@root> lError executing command: read() with timeout
>>             cannot be called as no/
>>             /n-blocking operation is disabled/
>>             /        __ __                  ____/
>>             /       / //_/____ __________ _/ __//
>>             /      / ,<  / __ `/ ___/ __ `/ /_/
>>             /     / /| |/ /_/ / /  / /_/ / __//
>>             /    /_/ |_|\__,_/_/   \__,_/_//
>>             /
>>             /
>>             /  Apache Karaf (2.3.0)/
>>             /
>>             /
>>             /Hit '<tab>' for a list of available commands/
>>             /and '[cmd] --help' for help on a specific command./
>>             /Hit '<ctrl-d>' or 'osgi:shutdown' to shutdown Karaf./
>>
>>
>>             Note that the "Karaf" logo had already been shown so it's
>>             shown twice. Also, in the log I get:
>>
>>             /2012-10-22 13:28:27,999 | ERROR | Thread-6         |
>>
>>             FeaturesServiceImpl              |
>>             s.internal.**FeaturesServiceImpl$2 1143 | Error installing
>>             boot features/
>>             /java.lang.**NullPointerException/
>>             /at
>>             org.apache.felix.framework.**BundleWiringImpl.**
>> findClassOrResourceByDelegatio**n(BundleWiringImpl.java:1432)[**
>> org.apache.felix.framework-4.**0.3.jar:]/
>>             /at
>>             org.apache.felix.framework.**BundleWiringImpl.access$400(**
>> BundleWiringImpl.java:72)[org.**apache.felix.framework-4.0.3.**jar:]/
>>             /at
>>             org.apache.felix.framework.**BundleWiringImpl$**
>> BundleClassLoader.loadClass(**BundleWiringImpl.java:1843)[**
>> org.apache.felix.framework-4.**0.3.jar:]/
>>             /at
>>             java.lang.ClassLoader.**loadClass(ClassLoader.java:**
>> 247)[:1.6.0_32]/
>>             /at
>>             org.apache.karaf.features.**internal.FeaturesServiceImpl.**
>> installFeatures(**FeaturesServiceImpl.java:525)[**
>> 20:org.apache.karaf.features.**core:2.3.0]/
>>             /at
>>             org.apache.karaf.features.**internal.FeaturesServiceImpl$**
>> 2.run(FeaturesServiceImpl.**java:1141)[20:org.apache.**
>> karaf.features.core:2.3.0]/
>>             /2012-10-22 13:28:28,002 | ERROR | Thread-6         |
>>
>>             FeaturesServiceImpl              |
>>             res.internal.**FeaturesServiceImpl 1227 | Error persisting
>>             FeaturesService state/
>>             /java.lang.**IllegalStateException: Invalid BundleContext./
>>             /at
>>             org.apache.felix.framework.**BundleContextImpl.**
>> checkValidity(**BundleContextImpl.java:514)[**
>> org.apache.felix.framework-4.**0.3.jar:]/
>>             /at
>>             org.apache.felix.framework.**BundleContextImpl.getDataFile(**
>> BundleContextImpl.java:491)[**org.apache.felix.framework-4.**0.3.jar:]/
>>             /at
>>             org.apache.karaf.features.**internal.FeaturesServiceImpl.**
>> saveState(FeaturesServiceImpl.**java:1215)[20:org.apache.**
>> karaf.features.core:2.3.0]/
>>             /at
>>             org.apache.karaf.features.**internal.FeaturesServiceImpl$**
>> 2.run(FeaturesServiceImpl.**java:1146)[20:org.apache.**
>> karaf.features.core:2.3.0]/
>>
>>
>>             If I don't press a key in the shell, I never get these
>>             messages but then the web service will never install. It's
>>             as if the installation is hung, waiting for something.
>>
>>             Do you or anyone have any clue as to what is happening. I am
>>             in the process of upgrading my custom distribution of Karaf
>>             from 2.2.8 to 2.3.0 so I might have done something very
>>             wrong but right now I have no clue as to where I should look
>>             further,
>>
>>             /Bengt
>>
>>
>>             2012/10/22 Charles Moulliard <ch007m@gmail.com
>>             <mailto:ch007m@gmail.com>>
>>
>>
>>                 Bengt,
>>
>>                 This package is not required by Aries JPA as resolution
>>                 is optional :
>>
>>                 org.osgi.service.jdbc;**resolution:=optional,
>>
>>                 When the Aries JPA Container
>>                 /**ManagedPersistenceUnitInfoImpl /class is called, Aries
>>
>>                 does a check to verify if the OSGI service is provided.
>>                 If this is not the case, the info is displayed in the
>>                 log and Aries JPA Container continues to load the JPA
>>                 Container based on your config (persistence.xml,
>>                 datasource, ...). If you are using JPA, you shouldn't
>>                 use the DataSourceFactory.
>>
>>                 These links could help you to configure your project
>>
>>                 /http://stackoverflow.com/**
>> questions/11861414/openjpa-in-**osgi-not-finding-mysql-jdbc-**
>> connector-bundle/<http://stackoverflow.com/questions/11861414/openjpa-in-osgi-not-finding-mysql-jdbc-connector-bundle/>
>>                 /http://aries.apache.org/**modules/jpaproject.html/<http://aries.apache.org/modules/jpaproject.html/>
>>                 /
>>
>>                 /
>>
>>                 Regards,
>>
>>                 Charles
>>
>>                 On Mon, Oct 22, 2012 at 11:25 AM, Bengt Rodehav
>>                 <bengt@rodehav.com <mailto:bengt@rodehav.com>> wrote:
>>
>>                     I'm trying to upgrade fro Karaf 2.2.8 to Karaf 2.3.0
>>                     and have run into a problem regarding datasources. I
>>                     get the following in my log:
>>
>>                     /2012-10-22 10:52:59,563 | INFO  | Thread-7
>>
>>                     | container                        |
>>                     l.**ManagedPersistenceUnitInfoImpl   50 | The
>>                     org.osgi.service.jdbc package is unavailable. As a
>>                     result the Aries JPA container will not offer any
>>                     DataSourceFactory integration./
>>
>>
>>                     It's only an INFO message but it seems fatal to me
>>                     because later on I cannot find my datasource when I
>>                     try to use it. I publish a data source (for Derby)
>>                     using Blueprint. I use the following features from
>>                     the karaf-enterprise descriptor:
>>
>>                     - transaction
>>                     - jpa
>>                     - jndi
>>
>>                     When I execute "exports | grep -i
>>                     org.osgi.service.jdbc" on the command line I get an
>>                     empty result.
>>
>>                     It seems like this package is needed for Aries JPA
>>                     Container. What bundle should export it?
>>
>>                     /Bengt
>>
>>
>>
>>
>>                 --
>>                 Charles Moulliard
>>                 Apache Committer / Sr. Enterprise Architect (RedHat)
>>                 Twitter : @cmoulliard | Blog :
>>                 http://cmoulliard.blogspot.com
>>
>>
>>
>>
>>
>>
>>         --
>>         Charles Moulliard
>>         Apache Committer / Sr. Enterprise Architect (RedHat)
>>         Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com
>>
>>
>>
>>
>>
>>
>> --
>> Charles Moulliard
>> Apache Committer / Sr. Enterprise Architect (RedHat)
>> Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com
>>
>>
>>
> --
> Jean-Baptiste Onofré
> jbonofre@apache.org
> http://blog.nanthrax.net
> Talend - http://www.talend.com
>

Mime
View raw message