Hi Erwin, Thanks for your input – finally I had time to test it extensively and it’s working now!!! In the end the source of error was sitting in front of the PC ;-)
The problem was that some dependencies where embedded into the actual bundle and at the same time these dependencies are also provided by pax-jdbc via the feature. (for details see [1]) So no actual problem with Pax-JDBC itself :-) Thanks again! Best, Lukas [1] https://github.com/roedll/pax-jdbc-pre-hook-test/blob/master/bundle-headers.diff#L10-L12 Von: Erwin Hogeweg <erwin.hoge...@me.com> Gesendet: Mittwoch, 19. Februar 2020 12:53 An: user@karaf.apache.org Betreff: Re: Karaf 4.2.8-SNAPSHOT - pax-jdbc 1.4.4 - prehook not working Lukas , It looks like you missed my pom.xml changes…Once I applied those to your git version it worked again. I was unable to push the change to GitHub so here they are again. I reduced the maven-bundle-plugin to: <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <!-- Do not generate that OBR file in the local maven cache --> <obrRepository>NONE</obrRepository> <instructions> <_nouses>true</_nouses> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> </instructions> </configuration> FWIW… I am running OSX Catalina with Java-8. Erwin On Feb 19, 2020, at 05:36, Roedl Lukas <lukas.ro...@ait.ac.at<mailto:lukas.ro...@ait.ac.at>> wrote: @Erwin: Thanks for testing! I tried to reproduce and incorporated your proposed changes in https://github.com/roedll/pax-jdbc-pre-hook-test/commit/1a427187148461da564326ceae36622c5f943e90 But unfortunately I had no luck that the PreHook finally got called. Did you also change some other things? Best, Lukas Von: Jean-Baptiste Onofré <j...@nanthrax.net<mailto:j...@nanthrax.net>> Gesendet: Dienstag, 18. Februar 2020 20:02 An: user@karaf.apache.org<mailto:user@karaf.apache.org> Betreff: Re: Karaf 4.2.8-SNAPSHOT - pax-jdbc 1.4.4 - prehook not working Thanks for the update. I will investigate tomorrow. I will keep you posted. Regards JB Le mar. 18 f?vr. 2020 ? 17:01, Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> a ?crit : Lukas, I believe I have some success by copying configuration from my env. to the prehook test. 2020-02-18T10:35:05,924 | INFO | features-3-thread-1 | PreHookTest | 50 - prehook - 1.0.0.SNAPSHOT | Starting PreHookTest ... 2020-02-18T10:35:05,928 | WARN | activator-1-thread-1 | SshUtils | 38 - org.apache.karaf.shell.ssh - 4.2.8 | Configured cipher 'aes256-ctr' not available 2020-02-18T10:35:05,931 | INFO | features-3-thread-1 | ServiceTrackerHelper | 16 - org.ops4j.pax.jdbc.config - 1.4.4 | Obtained service dependency: (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.name=sqlite)) 2020-02-18T10:35:05,931 | WARN | activator-1-thread-1 | SshUtils | 38 - org.apache.karaf.shell.ssh - 4.2.8 | Configured cipher 'aes192-ctr' not available 2020-02-18T10:35:05,932 | INFO | features-3-thread-1 | DataSourceRegistration | 16 - org.ops4j.pax.jdbc.config - 1.4.4 | Found DataSourceFactory. Creating DataSource prehook-test 2020-02-18T10:35:05,953 | INFO | features-3-thread-1 | DataSourceRegistration | 16 - org.ops4j.pax.jdbc.config - 1.4.4 | Executing pre hook for DataSource prehook-test 2020-02-18T10:35:05,953 | INFO | features-3-thread-1 | PreHookTest | 50 - prehook - 1.0.0.SNAPSHOT | Called PreHookTest.prepare() ? I reduced the maven-bundle-plugin to: <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <!-- Do not generate that OBR file in the local maven cache --> <obrRepository>NONE</obrRepository> <instructions> <_nouses>true</_nouses> <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> </instructions> </configuration> And I changed the component annotations to: @Component( // scope = ServiceScope.SINGLETON, immediate = true, // service = PreHook.class, property = "name=prehook-test-hook" ) public class PreHookTest implements PreHook { ? I may have thrown away too much, but at least this is a good starting point. Erwin On Feb 17, 2020, at 13:55, Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> wrote: Lukas, I am currently on the road but I will try this ASAP. Kind Regards, Erwin El feb. 17, 2020, a la(s) 08:55, Roedl Lukas <lukas.ro...@ait.ac.at<mailto:lukas.ro...@ait.ac.at>> escribi?: ? Hi, We?ve similar problems with a Pax JDBC Pre Hook getting called. I?ve prepared a minimal example on https://github.com/roedll/pax-jdbc-pre-hook-test using SQLite to make it a bit more concrete. Apache Karaf 4.2.8 in combination with Pax JDBC 1.4.4 is used. The DataSource is specified in the file ?org.ops4j.datasource-prehook-test.cfg? (see [1]) and without a PreHook defined the DataSource is published as expected: dataSourceName = prehook-test felix.fileinstall.filename = file:/X:/pax-jdbc-pre-hook-test/framework/target/assembly/etc/org.ops4j.datasource-prehook-test.cfg objectClass = [javax.sql.DataSource] osgi.jdbc.driver.name = sqlite osgi.jndi.service.name = prehook-test pax.jdbc.managed = true service.bundleid = 16 service.factoryPid = org.ops4j.datasource service.id<http://service.id/> = 88 service.pid = org.ops4j.datasource.5a7b2e4b-4781-4b60-b707-74a48e210bda service.scope = singleton url = jdbc:sqlite:prehook-test.db With the PreHook specified (like ?ops4j.preHook=prehook-test-hook?) the last log entry is ?Waiting for service dependency: (&(objectClass=org.ops4j.pax.jdbc.hook.PreHook)(name=prehook-test-hook))? event if the PreHook itself is started and active: Pax JDBC - Test - PreHook (21) provides: ---------------------------------------- component.id<http://component.id/> = 0 component.name = at.roedll.pax.jdbc.pre.hook.test.PreHookTest name = prehook-test-hook objectClass = [org.ops4j.pax.jdbc.hook.PreHook] service.bundleid = 21 service.id<http://service.id/> = 75 service.scope = bundle Can someone which doesn?t have problems with this, please take a short look, if there are some differences between the working configurations and this example? Best, Lukas [1] https://github.com/roedll/pax-jdbc-pre-hook-test/blob/master/framework/src/main/filtered-resources/etc/org.ops4j.datasource-prehook-test.cfg Von: Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> Gesendet: Donnerstag, 23. Januar 2020 22:40 An: user@karaf.apache.org<mailto:user@karaf.apache.org> Betreff: Re: Karaf 4.2.8-SNAPSHOT - pax-jdbc 1.4.4 - prehook not working Hi Alex, Below a similar sequence from my log. From your log it seems that the Derby DataSourceFactory is not resolved. I remember that at some point I changed the driver.name entry in the config to a driver.class entry. That is for a mySQL database though but but maybe? Another silly question: Is your datasource functional if you leave out the preHook? Obtained service dependency: (objectClass=org.ops4j.pax.jdbc.config.ConfigLoader) Waiting for service dependency: (objectClass=org.ops4j.pax.jdbc.config.ConfigLoader) Waiting for service dependency: (&(pool=*)(!(pax.jdbc.managed=true))(|(objectClass=javax.sql.DataSource)(objectClass=javax.sql.XADataSource))) Waiting for service dependency: (&(objectClass=org.ops4j.pax.jdbc.pool.common.PooledDataSourceFactory)(pool=dbcp2)(xa=false)) Waiting for service dependency: (&(objectClass=org.ops4j.pax.jdbc.pool.common.PooledDataSourceFactory)(pool=dbcp2)(xa=false)) Obtained service dependency: (&(objectClass=org.ops4j.pax.jdbc.pool.common.PooledDataSourceFactory)(pool=dbcp2)(xa=false)) Obtained service dependency: (&(objectClass=org.ops4j.pax.jdbc.hook.PreHook)(name=seegate)) Obtained service dependency: (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.class=com.mysql.jdbc.Driver)) Cheers, Erwin On Jan 23, 2020, at 13:22, Alex Soto <alex.s...@envieta.com<mailto:alex.s...@envieta.com>> wrote: Yes, the migration service is being registered: Obtained service dependency: (objectClass=org.ops4j.pax.jdbc.config.ConfigLoader) Waiting for service dependency: (objectClass=org.ops4j.pax.jdbc.config.ConfigLoader) Waiting for service dependency: (&(pool=*)(!(pax.jdbc.managed=true))(|(objectClass=javax.sql.DataSource)(objectClass=javax.sql.XADataSource))) Obtained service dependency: (&(objectClass=org.ops4j.pax.jdbc.hook.PreHook)(name=querierDB)) Waiting for service dependency: (&(objectClass=org.osgi.service.jdbc.DataSourceFactory)(osgi.jdbc.driver.name=derby)) And service:list org.ops4j.pax.jdbc.hook.PreHook [org.ops4j.pax.jdbc.hook.PreHook] --------------------------------- component.id<http://component.id/> = 29 component.name = org.enquery.encryptedquery.querier.data.maint.Migration name = querierDB service.bundleid = 35 service.id<http://service.id/> = 276 service.scope = bundle Provided by : EncryptedQuery :: Querier :: Data (35) Used by: OPS4J Pax JDBC Config (210) Best regards, Alex soto On Jan 22, 2020, at 1:06 PM, Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> wrote: Just this week I upgraded from karaf-1.2.6 and pax-jdbc-1.3.1 to karaf-1.2.8-SNAPSHOT and pax-jdbc-1.4.4 and I didn?t run into any issues. Stupid question, but can you confirm that the Migrator class is instantiated and that the component is active? com.*.Migrator in bundle 129 (db.init:1.0.0.SNAPSHOT_20200122-1230) enabled, 1 instance. Id: 18, State:ACTIVE Initially I missed some Package-Imports on the migrator bundle which left the component in the SATISFIED (I believe) state. After scrolling through the logs I discovered a CNFE which pointed me in the right direction. Erwin On Jan 22, 2020, at 12:53, Alex Soto <alex.s...@envieta.com<mailto:alex.s...@envieta.com>> wrote: I tested with Karaf 4.2.7 and various versions of Pax-JDBC. The hook is not being called stating with Pax-JDBC 1.3.4. Something must have changed in Pax-JDBC 1.3.4 as everything else remains the same in my tests. Best regards, Alex soto On Jan 22, 2020, at 12:39 PM, Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> wrote: Ignore the different datasource names. I messed up the ?replace all? :-) On Jan 22, 2020, at 12:36, Erwin Hogeweg <erwin.hoge...@me.com<mailto:erwin.hoge...@me.com>> wrote: It seems to work for me with Karaf-4.2.8-SNAPSHOT and pax-jdbc-1.4.4. 12 ? Active ? 80 ? 1.4.4 ? OPS4J Pax JDBC Generic Driver Extender 13 ? Active ? 80 ? 1.4.4 ? OPS4J Pax JDBC Config 14 ? Active ? 80 ? 1.4.4 ? OPS4J Pax JDBC Pooling Support Base [features-2-thread-1] INFO org.ops4j.pax.jdbc.config.impl.DataSourceRegistration - Found DataSourceFactory. Creating DataSource jdbc/mydatasource [features-2-thread-1] INFO org.ops4j.pax.jdbc.config.impl.DataSourceRegistration - Executing pre hook for DataSource jdbc/mydatasource INFO 1/22/20 12:32 PM: liquibase: Successfully acquired change log lock INFO 1/22/20 12:32 PM: liquibase: Reading from seegate.DATABASECHANGELOG INFO 1/22/20 12:32 PM: liquibase: Successfully released change log lock [features-2-thread-1] INFO org.ops4j.pax.jdbc.config.impl.DataSourceRegistration - Pre hook finished. Publishing DataSource jdbc/mydatasource [features-2-thread-1] INFO org.apache.aries.jpa.container.impl.DataSourceTracker - Found DataSource for seegate.pu osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/mydatasource) FWIW - I did change the exception handling in Migrator to better see when/if the migration fails: @Override public void prepare(DataSource ds) throwsSQLException { try (Connection connection =ds.getConnection()) { prepare(connection); } catch (LiquibaseException e) { LOG.error(e.getClass().getName() + ": " + e.getMessage()); // throw new RuntimeException(e); } } Cheers, Erwin On Jan 22, 2020, at 11:11, Alex Soto <alex.s...@envieta.com<mailto:alex.s...@envieta.com>> wrote: Same is happening to me, it works with Pax-JDBC 1.3.0, but not with Pax-JDBC 1.4.0, which is the one included in Karaf 4.2.7. Best regards, Alex soto On Jan 20, 2020, at 9:10 AM, stefang <stefan.gue...@me.com<mailto:stefan.gue...@me.com>> wrote: Hi, we are not able to run Christian's Example: https://github.com/cschneider/Karaf-Tutorial/blob/master/liquibase/service/src/main/java/net/lr/tutorial/db/service/Migrator.java Must be something todo with pax-jdbc 1.4.4 (wich comes with 4.2.8) Karaf 4.2.6 (pax-jdbc 1.3.5)works fine. Stefan -- Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html