Yes you can create a DataSource that is available on first boot.
To make this work you need to add the pax-jdbc features that are needed
for your DataSource to the boot features.
In your example that should be: pax-jdbc-config pax-jdbc-pool-dbcp2
pax-jdbc-h2 transaction
Then you also need to put a DataSource config in etc.
If you then start karaf the DataSource service should come up.
Christian
On 05.04.2017 11:43, Cristiano Costantini wrote:
hello,
Is it possible to specify at configuration a JDBC datasource to be
created when Karaf boots the first time?
For information, I'm learning using Karaf JDBC
(https://karaf.apache.org/manual/latest/#_datasources_jdbc) and then
Karaf JPA (https://karaf.apache.org/manual/latest/#_persistence_jpa)
to replace our current implementation which is based on Spring
(spring-orm and spring-jdbc)
I'm following the examples of Christian from
https://github.com/apache/aries/tree/trunk/jpa/examples/
where I've found the example command
jdbc:ds-create -dn H2-pool-xa -url jdbc:h2:mem:tasklist tasklist
that creates a data source and publish to OSGi registry its service:
karaf@root>jdbc:ds-info tasklist
Property | Value
-------------------------------------
driver.version | 1.3.172 (2013-05-25)
db.version | 1.3.172 (2013-05-25)
db.product | H2
url | jdbc:h2:mem:tasklist
driver.name <http://driver.name> | H2 JDBC Driver
username |
karaf@root>service:list javax.sql.DataSource
[javax.sql.DataSource]
----------------------
dataSourceName = tasklist
osgi.jdbc.driver.name <http://osgi.jdbc.driver.name> = H2-pool-xa
osgi.jndi.service.name <http://osgi.jndi.service.name> = tasklist
service.bundleid = 222
service.factoryPid = org.ops4j.datasource
service.id <http://service.id> = 403
service.pid = org.ops4j.datasource.ac08f704-67e1-40c8-8855-9e3e262f8a9e
service.scope = singleton
url = jdbc:h2:mem:tasklist
Provided by :
OPS4J Pax JDBC Config (222)
Used by:
Apache Karaf :: JDBC :: Core (226)
Thank you !
Cristiano
--
Christian Schneider
http://www.liquid-reality.de
Open Source Architect
http://www.talend.com