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

Reply via email to