Hi Stefan,

If the problem is related to PAX JDBC in static distribution, it’s not yet fully fixed.

All the details is in the Jira: the problem is about the resolver order. When using static distribution, all features are startup features, meaning that all is evaluated at same stage. As PAX JDBC has requirements from framework, the framework should be evaluated before pax-jdbc.
It’s not a problem when using pax JDBC as boot feature in dynamic distribution as startup is evaluated first and then boot features.
But with static distribution, again, all is at "same level"/startup.

My plan is to add an order on startup properties to be able to address resolution order in startup.

I plan to fix that for Karaf 4.2.9.

Regards
JB

Le 7 avr. 2020 à 12:47, stefang <stefan.guenst@me.com> a écrit :

Hi Erwin,

we tried it with static distribution based on 4.2.8 Release without any luck
(4.2.6 without problems)
Anything we missed?

Regards 

Stefan 



Erwin Hogeweg wrote
Hi Lukas,

Glad I could help.

Happy coding.

Erwin


On Mar 18, 2020, at 12:13, Roedl Lukas &lt;

Lukas.Roedl@.ac

&gt; wrote:

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
&lt;https://github.com/roedll/pax-jdbc-pre-hook-test/blob/master/bundle-headers.diff#L10-L12&gt;

Von: Erwin Hogeweg &lt;

erwin.hogeweg@

&gt; 
Gesendet: Mittwoch, 19. Februar 2020 12:53
An: 

user@.apache

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>



<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 &lt;

Lukas.Roedl@.ac

&lt;mailto:

Lukas.Roedl@.ac

&gt;> 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
&lt;https://github.com/roedll/pax-jdbc-pre-hook-test/commit/1a427187148461da564326ceae36622c5f943e90&gt;

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é &lt;

jb@

&lt;mailto:

jb@

&gt;> 
Gesendet: Dienstag, 18. Februar 2020 20:02
An: 

user@.apache

&lt;mailto:

user@.apache

&gt;
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 &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> 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>



<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 &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> 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 &lt;

Lukas.Roedl@.ac

&lt;mailto:

Lukas.Roedl@.ac

&gt;> 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
&lt;https://github.com/roedll/pax-jdbc-pre-hook-test&gt; 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 &lt;http://service.id/&gt; = 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 &lt;http://component.id/&gt; = 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 &lt;http://service.id/&gt; = 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
&lt;https://github.com/roedll/pax-jdbc-pre-hook-test/blob/master/framework/src/main/filtered-resources/etc/org.ops4j.datasource-prehook-test.cfg&gt;

Von: Erwin Hogeweg &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> 
Gesendet: Donnerstag, 23. Januar 2020 22:40
An: 

user@.apache

&lt;mailto:

user@.apache

&gt;
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 &lt;

alex.soto@

&lt;mailto:

alex.soto@

&gt;> 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 &lt;http://component.id/&gt; = 29
component.name = org.enquery.encryptedquery.querier.data.maint.Migration
name = querierDB
service.bundleid = 35
service.id &lt;http://service.id/&gt; = 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 &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> 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 &lt;

alex.soto@

&lt;mailto:

alex.soto@

&gt;> 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 &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> wrote:

Ignore the different datasource names. I messed up the ?replace all? :-)


On Jan 22, 2020, at 12:36, Erwin Hogeweg &lt;

erwin.hogeweg@

&lt;mailto:

erwin.hogeweg@

&gt;> 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 &lt;

alex.soto@

&lt;mailto:

alex.soto@

&gt;> 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 &lt;

stefan.guenst@

&lt;mailto:

stefan.guenst@

&gt;> 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
&lt;https://github.com/cschneider/Karaf-Tutorial/blob/master/liquibase/service/src/main/java/net/lr/tutorial/db/service/Migrator.java&gt;


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
&lt;http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html&gt;





--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html