felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christian Schneider <ch...@die-schneider.net>
Subject Re: Connect a bundle to a data base
Date Thu, 22 Mar 2012 16:39:19 GMT
As this may be interesting for others too I have created an example on 
how to instantiate a DataSource and publish it as a service.
I also used the config admin service so you can define the properties 
outside of the bundle.

See
https://github.com/cschneider/Karaf-Tutorial/tree/master/db/datasource-mysql

As you see I did not have to define much for the maven bundle plugin.

Christian


Am 22.03.2012 15:56, schrieb elMateo:
> ManifestLocation is for indicate exactly where is the manisfest file.
>   Removeheader is used for one of the test to try the application, it isn't
> important.
>
> On Thu, Mar 22, 2012 at 1:29 PM, Christian Schneider<
> chris@die-schneider.net>  wrote:
>
>> Some questions /remarks:
>>
>> Why do you use<manifestLocation>  and<_removeheaders>? I never used those
>> till now.
>> I think you do not have to export any packages as you just provide a
>> service.
>>
> Ok, I'm going to test this.
>
>> Do you initialize the DataSource in java code? If yes then you probably do
>> not need any dynamic imports and you typically do not need to define
>> Import-Package as the plugin normally does the correct thing.
>>
> Yes, I do this: DataSource dataSource = new
> com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
>
>> Can you upload your whole project somewhere?
>>
> Sorry, I don't have any server to upload my project. But my Activator class
> only do this:
>
>                    DataSource dataSource = new
> com.mysql.jdbc.jdbc2.optional.MysqlDataSource();
>                    registration =
> bc.registerService(DataSource.class.getName(), dataSource, null);
>
> And when I start the bundle, Apache Felix show me exceptions write above.
>
> Thanks a lot for yours answers :) !
>
>> Christian
>>
>>
>>
>>
>>
>> Am 22.03.2012 11:50, schrieb elMateo:
>>
>>> This is an extract of my pom file:
>>>
>>>             <plugin>
>>> <groupId>org.apache.felix</**groupId>
>>> <artifactId>maven-bundle-**plugin</artifactId>
>>> <extensions>true</extensions>
>>> <configuration>
>>> <manifestLocation>META-INF</**manifestLocation>
>>> <instructions>
>>> <_removeheaders>Ignore-**Package</_removeheaders>
>>> <Bundle-SymbolicName>**bundleDBConnector</Bundle-**SymbolicName>
>>> <Bundle-Name>**bundleDBConnector</Bundle-**Name>
>>> <Bundle-Activator>com.**database.bundle.Activator</**Bundle-Activator>
>>> <Export-Package>com.database.**bundle;-split-package:=merge-**
>>> last</Export-Package>
>>> <Import-Package>org.osgi.**framework</Import-Package>
>>> <DynamicImport-Package>javax.**sql.*,com.mysql.jdbc.jdbc2.**
>>> optional.*</DynamicImport-**Package>
>>> </instructions>
>>> </configuration>
>>> </plugin>
>>>
>>> Is it correct?? Uff, still it appears the same exception :(
>>>
>>> On Thu, Mar 22, 2012 at 10:23 AM, elMateo<soyelmateo@gmail.com>   wrote:
>>>
>>>   Yes, I'm developing my application with Maven. I'm going to read this
>>>> tutorial. Maybe I'm doing something wrong
>>>>
>>>>
>>>> On Wed, Mar 21, 2012 at 7:43 PM, Christian Schneider<
>>>> chris@die-schneider.net>   wrote:
>>>>
>>>>   In the bundle that creates the DataSource you have to have an
>>>>> Import-Package statement in the Manifest for each package you use.
>>>>> So at least com.mysql.jdbc.optional and javax.sql.DataSource. It is
>>>>> quite
>>>>> hard to do that by hand. If you use maven to build your bundle then
>>>>> you should use the maven bundle plugin which analyzes your java code
and
>>>>> creates the necessary statements for the Manifest.
>>>>>
>>>>> In this tutorial I describe how to do it:
>>>>> http://www.liquid-reality.de/****display/liquid/2011/02/15/**<http://www.liquid-reality.de/**display/liquid/2011/02/15/**>
>>>>> Karaf+Tutorial+Part+1+-+****Installation+and+First+****application<
>>>>> http://www.liquid-**reality.de/display/liquid/**
>>>>> 2011/02/15/Karaf+Tutorial+**Part+1+-+Installation+and+**
>>>>> First+application<http://www.liquid-reality.de/display/liquid/2011/02/15/Karaf+Tutorial+Part+1+-+Installation+and+First+application>
>>>>>
>>>>> The tutorial is about karaf but the bundle creation is the same if you
>>>>> use pure felix. Only the deployment may be different.
>>>>>
>>>>> Christian
>>>>>
>>>>>
>>>>> Am 21.03.2012 18:35, schrieb elMateo:
>>>>>
>>>>>   I'm struggling with this exception of
>>>>>> Apache java.lang.****NoClassDefFoundError:
>>>>>> com/mysql/jdbc/jdbc2/optional/****MysqlDataSource. Because I have
the
>>>>>>
>>>>>> MySQL
>>>>>> Connect/J bundle running in Apache Felix. Sometimes I have another
>>>>>> exception, java.lang.****NoClassDefFoundError: javax/sql/DataSource,
>>>>>> and I
>>>>>>
>>>>>> don't know why :(
>>>>>>
>>>>>> On Wed, Mar 21, 2012 at 5:20 PM, Christian Schneider<
>>>>>> chris@die-schneider.net>    wrote:
>>>>>>
>>>>>>   The solution described by Neil should allow that and should be
easy to
>>>>>>
>>>>>>> implement. Using the service to connect your other bundles to
the
>>>>>>> datasource even makes them
>>>>>>> very indepentent of the implementation of the "bridge bundle".
A user
>>>>>>> bundle could import the DataSource from my solution with blueprint
or
>>>>>>> the
>>>>>>> handwritten java bridge bundle
>>>>>>> and would not have to be changed in any way.
>>>>>>>
>>>>>>> What exactly are you struggling with?
>>>>>>>
>>>>>>> Christian
>>>>>>>
>>>>>>> Am 21.03.2012 15:43, schrieb elMateo:
>>>>>>>
>>>>>>>   What I want it's only a bundle that work as a bridge to  whatever
>>>>>>>
>>>>>>>   database.
>>>>>>>> The other bundles access to this one to retrieve any information
from
>>>>>>>> external databases. But I don't get this :(
>>>>>>>>
>>>>>>>> On Wed, Mar 21, 2012 at 2:38 PM, Donald Whytock<dwhytock@gmail.com>
>>>>>>>>   wrote:
>>>>>>>>
>>>>>>>>   What you probably want in the long run is a datasource-generating
>>>>>>>>
>>>>>>>>   service, to which you pass the database URI.  You can put
things in
>>>>>>>>> the properties of the service to indicate whether it's
Oracle,
>>>>>>>>> mySQL,
>>>>>>>>> MSSQL, etc., so that you can have multiple generating
services at
>>>>>>>>> the
>>>>>>>>> same time.
>>>>>>>>>
>>>>>>>>> Don
>>>>>>>>>
>>>>>>>>> ------------------------------******--------------------------**
>>>>>>>>> --**--**
>>>>>>>>> ---------
>>>>>>>>> To unsubscribe, e-mail: users-unsubscribe@felix.****apac**he.org<
>>>>>>>>> http://apache.org**>
>>>>>>>>> <users-unsubscribe@**felix.**apache.org<http://felix.apache.org><
>>>>>>>>> users-unsubscribe@**felix.apache.org<users-unsubscribe@felix.apache.org>
>>>>>>>>> For additional commands, e-mail: users-help@felix.apache.org
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>   --
>>>>>>>>>
>>>>>>>> Christian Schneider
>>>>>>> http://www.liquid-reality.de
>>>>>>>
>>>>>>> Open Source Architect
>>>>>>> Talend Application Integration Division http://www.talend.com
>>>>>>>
>>>>>>>
>>>>>>> ------------------------------******--------------------------**--**
>>>>>>> --**---------
>>>>>>> To unsubscribe, e-mail: users-unsubscribe@felix.****apac**he.org<
>>>>>>> http://apache.org**>
>>>>>>> <users-unsubscribe@**felix.**apache.org<http://felix.apache.org><
>>>>>>> users-unsubscribe@**felix.apache.org<users-unsubscribe@felix.apache.org>
>>>>>>> For additional commands, e-mail: users-help@felix.apache.org
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>   --
>>>>> Christian Schneider
>>>>> http://www.liquid-reality.de
>>>>>
>>>>> Open Source Architect
>>>>> Talend Application Integration Division http://www.talend.com
>>>>>
>>>>>
>>>>> ------------------------------****----------------------------**
>>>>> --**---------
>>>>> To unsubscribe, e-mail: users-unsubscribe@felix.**apac**he.org<http://apache.org>
>>>>> <users-unsubscribe@**felix.apache.org<users-unsubscribe@felix.apache.org>
>>>>> For additional commands, e-mail: users-help@felix.apache.org
>>>>>
>>>>>
>>>>>
>> --
>> Christian Schneider
>> http://www.liquid-reality.de
>>
>> Open Source Architect
>> Talend Application Integration Division http://www.talend.com
>>
>>
>> ------------------------------**------------------------------**---------
>> To unsubscribe, e-mail: users-unsubscribe@felix.**apache.org<users-unsubscribe@felix.apache.org>
>> For additional commands, e-mail: users-help@felix.apache.org
>>
>>


-- 
Christian Schneider
http://www.liquid-reality.de

Open Source Architect
Talend Application Integration Division http://www.talend.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@felix.apache.org
For additional commands, e-mail: users-help@felix.apache.org


Mime
View raw message