Hello again ! After reading the code of pax-transx-tm-geronimo I think the issue perhaps comes from the detected presence of the spring-tx exported packages when the TM is instantiated : the code seems to protect itself against missing classes to provide a PTM only when the spring-tx classes are present.
I've changed the definition of my jdbc feature to add the dependency to the feature "spring-tx", that loads the spring(tx bundle, with the hope that the exported packages could be available before the TM is created... But I have exactly the same behavior. Nevertheless, when I check the order of bundles and their start level, I think this should work : karaf@root()> la | grep tx 122 │ Active │ 30 │ 5.3.23.1 │ Apache ServiceMix :: Bundles :: spring-tx karaf@root()> la | grep tm 126 │ Active │ 80 │ 0.5.3 │ pax-transx-tm-api 127 │ Active │ 80 │ 0.5.3 │ pax-transx-tm-geronimo Now spring-tx is installed first (ID=122), and its start level is 30, while pax-transx-tm-geronimo (ID=127), is installed after and starts at 80. The first install of my features makes it all work, but the stop/start still breaks the PTM... I don't understand how the imported packages of the pax-transx-tm-geronimo work, since the concerned packages are optional, but exported by the spring-tx : karaf@root()> headers 127 pax-transx-tm-geronimo (127) ---------------------------- Bnd-LastModified = 1665560954112 Build-Jdk-Spec = 11 Created-By = Apache Maven Bundle Plugin 5.1.4 Manifest-Version = 1.0 Tool = Bnd-6.1.0.202111221555 Bundle-Activator = org.ops4j.pax.transx.tm.impl.geronimo.Activator Bundle-Description = Maven parent POM for all OPS4J Maven projects. Bundle-DocURL = http://www.ops4j.org/ Bundle-License = https://www.apache.org/licenses/LICENSE-2.0 Bundle-ManifestVersion = 2 Bundle-Name = pax-transx-tm-geronimo Bundle-SymbolicName = org.ops4j.pax.transx.pax-transx-tm-geronimo Bundle-Vendor = OPS4J - Open Participation Software for Java Bundle-Version = 0.5.3 Provide-Capability = osgi.service;objectClass=javax.transaction.TransactionManager, osgi.service;objectClass=javax.transaction.TransactionSynchronizationRegistry, osgi.service;objectClass=javax.transaction.UserTransaction, osgi.service;objectClass=org.ops4j.pax.transx.tm.TransactionManager, osgi.service;objectClass=org.springframework.transaction.PlatformTransactionManager Require-Capability = osgi.ee;filter:=(&(osgi.ee=JavaSE)(version=1.8)) Export-Package = org.apache.aries.transaction;uses:="javax.resource.spi,javax.transaction,org.apache.geronimo.transaction.manager";version=1.0, org.apache.geronimo.transaction;uses:=javax.transaction;version=3.1, org.apache.geronimo.transaction.manager;uses:="javax.resource.spi,javax.transaction,javax.transaction.xa,org.slf4j";version=3.1 Import-Package = javax.transaction;version="[1.1,2)", javax.transaction.xa, org.ops4j.pax.transx.tm;version="[0.5,1)", org.osgi.framework;version="[1.8,2)", org.osgi.service.cm;version="[1.5,2)", org.osgi.service.log;version="[1.3,2)", org.slf4j, org.springframework.transaction;resolution:=optional, org.springframework.transaction.jta;resolution:=optional, org.springframework.transaction.support;resolution:=optional, javax.resource.spi;resolution:=optional;version="[1.6,2)" karaf@root()> exports | grep org.springframework.transaction org.springframework.transaction.annotation │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.config │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.event │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.interceptor │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.jta │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.reactive │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction.support │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx org.springframework.transaction │ 5.3.23 │ 122 │ org.apache.servicemix.bundles.spring-tx Is the start level ignored ? When I execute the feature:refresh, the Karaf's logs clearly show that even if "no change" is detected, many components are impacted, among them the spring-tx bundle that is restarted before the pax-transx-tm-geronimo, which explains why it works after. Here are the logs : 14:44:39.715 INFO [features-3-thread-1] No deployment change. 14:44:39.719 INFO [features-3-thread-1] Stopping bundles: 14:44:39.724 INFO [features-3-thread-1] facfou017-esb/100.2.2.SNAPSHOT 14:44:39.730 INFO [features-3-thread-1] Destroying container for blueprint bundle facfou017-esb/100.2.2.SNAPSHOT 14:44:39.741 INFO [features-3-thread-1] foo-data-service/0.0.1.SNAPSHOT 14:44:39.745 INFO [features-3-thread-1] Destroying container for blueprint bundle foo-data-service/0.0.1.SNAPSHOT 14:44:39.795 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-pool-pooledjms/1.1.2 14:44:39.800 INFO [features-3-thread-1] TransactionManager service lost. Shutting down support for XA ConnectionFactoryFactories 14:44:39.807 INFO [features-3-thread-1] Lost service dependency: (&(objectClass=org.ops4j.pax.jms.service.PooledConnectionFactoryFactory)(pool=pooledjms)(xa=false)) 14:44:39.809 INFO [features-3-thread-1] Lost service dependency: (&(objectClass=org.ops4j.pax.jms.service.ConnectionFactoryFactory)(type=activemq)) 14:44:39.814 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-activemq/1.1.2 14:44:39.817 INFO [features-3-thread-1] org.messaginghub.pooled.jms/1.2.3 14:44:39.818 INFO [features-3-thread-1] org.apache.activemq.osgi/5.18.0 14:44:39.819 INFO [features-3-thread-1] Destroying container for blueprint bundle org.apache.activemq.osgi/5.18.0 14:44:39.831 INFO [features-3-thread-1] org.ops4j.pax.transx.pax-transx-tm-geronimo/0.5.3 14:44:39.841 INFO [features-3-thread-1] TransactionManager service lost. Shutting down support for XA DataSourceFactories 14:44:39.885 INFO [features-3-thread-1] org.apache.camel.camel-sql/3.20.3 14:44:39.896 INFO [features-3-thread-1] org.apache.camel.camel-spring-xml/3.20.3 14:44:39.901 INFO [features-3-thread-1] org.apache.camel.camel-spring/3.20.3 14:44:39.918 INFO [features-3-thread-1] org.apache.camel.camel-jms/3.20.3 14:44:39.927 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jms/5.3.23.1 14:44:39.929 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jdbc/5.3.23.1 14:44:39.931 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-tx/5.3.23.1 14:44:39.935 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-context-support/5.3.23.1 14:44:39.961 INFO [features-3-thread-1] Refreshing bundles: 14:44:39.971 INFO [features-3-thread-1] foo-data-service/0.0.1.SNAPSHOT (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:39.973 INFO [features-3-thread-1] facfou017-esb/100.2.2.SNAPSHOT (Wired to org.apache.camel.camel-spring/3.20.3 which is being refreshed) 14:44:39.976 INFO [features-3-thread-1] org.apache.activemq.osgi/5.18.0 (Wired to org.ops4j.pax.transx.pax-transx-tm-geronimo/0.5.3 which is being refreshed) 14:44:39.978 INFO [features-3-thread-1] org.apache.camel.camel-jms/3.20.3 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:39.985 INFO [features-3-thread-1] org.apache.camel.camel-spring/3.20.3 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:39.990 INFO [features-3-thread-1] org.apache.camel.camel-spring-xml/3.20.3 (Wired to org.apache.camel.camel-spring/3.20.3 which is being refreshed) 14:44:39.997 INFO [features-3-thread-1] org.apache.camel.camel-sql/3.20.3 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:39.999 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-context-support/5.3.23.1 (Wired to org.apache.servicemix.bundles.spring-jdbc/5.3.23.1 which is being refreshed) 14:44:40.008 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jdbc/5.3.23.1 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:40.009 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jms/5.3.23.1 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:40.014 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-tx/5.3.23.1 (Should be wired to: javax.transaction-api/1.2.0 (through [org.apache.servicemix.bundles.spring-tx/5.3.23.1] osgi.wiring.package; resolution:=optional; filter:="(&(osgi.wiring.package=javax.transaction)(version>=1.2.0)(!(version>=2.0.0)))")) 14:44:40.015 INFO [features-3-thread-1] org.messaginghub.pooled.jms/1.2.3 (Should be wired to: org.ops4j.pax.transx.pax-transx-tm-geronimo/0.5.3 (through [org.messaginghub.pooled.jms/1.2.3] osgi.wiring.package; resolution:=optional; filter:="(&(osgi.wiring.package=org.apache.geronimo.transaction.manager)(version>=3.0.0)(!(version>=4.0.0)))"), javax.transaction-api/1.2.0 (through [org.messaginghub.pooled.jms/1.2.3] osgi.wiring.package; resolution:=optional; filter:="(&(osgi.wiring.package=javax.transaction)(version>=1.1.0)(!(version>=2.0.0)))")) 14:44:40.022 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-activemq/1.1.2 (Wired to org.apache.activemq.osgi/5.18.0 which is being refreshed) 14:44:40.026 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-pool-pooledjms/1.1.2 (Wired to org.messaginghub.pooled.jms/1.2.3 which is being refreshed) 14:44:40.027 INFO [features-3-thread-1] org.ops4j.pax.transx.pax-transx-tm-geronimo/0.5.3 (Wired to org.apache.servicemix.bundles.spring-tx/5.3.23.1 which is being refreshed) 14:44:40.186 INFO [features-3-thread-1] Starting bundles: 14:44:40.194 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-tx/5.3.23.1 14:44:40.201 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jms/5.3.23.1 14:44:40.212 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-jdbc/5.3.23.1 14:44:40.214 INFO [features-3-thread-1] org.apache.servicemix.bundles.spring-context-support/5.3.23.1 14:44:40.219 INFO [features-3-thread-1] org.apache.camel.camel-sql/3.20.3 14:44:40.241 INFO [features-3-thread-1] org.apache.camel.camel-spring/3.20.3 14:44:40.275 INFO [features-3-thread-1] org.apache.camel.camel-spring-xml/3.20.3 14:44:40.297 INFO [features-3-thread-1] org.apache.camel.camel-jms/3.20.3 14:44:40.326 INFO [features-3-thread-1] org.ops4j.pax.transx.pax-transx-tm-geronimo/0.5.3 14:44:40.339 INFO [features-3-thread-1] org.messaginghub.pooled.jms/1.2.3 14:44:40.340 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-pool-pooledjms/1.1.2 14:44:40.360 INFO [features-3-thread-1] Obtained service dependency: (&(objectClass=org.ops4j.pax.jms.service.PooledConnectionFactoryFactory)(pool=pooledjms)(xa=false)) 14:44:40.361 INFO [features-3-thread-1] Waiting for service dependency: (&(objectClass=org.ops4j.pax.jms.service.ConnectionFactoryFactory)(type=activemq)) 14:44:40.369 INFO [features-3-thread-1] foo-data-service/0.0.1.SNAPSHOT 14:44:40.390 INFO [features-3-thread-1] Blueprint bundle foo-data-service/0.0.1.SNAPSHOT is waiting for dependencies [(&(osgi.jndi.service.name=jdbc/alice)(objectClass=javax.sql.DataSource))] 14:44:40.403 INFO [features-3-thread-1] facfou017-esb/100.2.2.SNAPSHOT 14:44:40.420 INFO [features-3-thread-1] Blueprint bundle facfou017-esb/100.2.2.SNAPSHOT is waiting for dependencies [(&(osgi.jndi.service.name=jdbc/alice)(objectClass=javax.sql.DataSource)), (objectClass=com.company.foo.buddy.ExchangeBuddy), (objectClass=org.springframework.transaction.PlatformTransactionManager), (&(osgi.jndi.service.name=jms/alice)(objectClass=javax.jms.ConnectionFactory))] 14:44:40.429 INFO [features-3-thread-1] org.apache.activemq.osgi/5.18.0 14:44:40.444 INFO [paxtransx-config-1-thread-1] TransactionManager service detected. Providing support for XA DataSourceFactories 14:44:40.447 INFO [paxtransx-config-1-thread-1] Found DataSourceFactory. Creating DataSource jdbc/alice 14:44:40.452 INFO [Blueprint Extender: 1] Blueprint bundle facfou017-esb/100.2.2.SNAPSHOT is waiting for dependencies [(objectClass=com.company.foo.buddy.ExchangeBuddy), (objectClass=org.springframework.transaction.PlatformTransactionManager), (&(osgi.jndi.service.name=jms/alice)(objectClass=javax.jms.ConnectionFactory))] 14:44:40.465 INFO [paxtransx-config-1-thread-1] TransactionManager service detected. Providing support for XA ConnectionFactoryFactories 14:44:40.473 INFO [Blueprint Extender: 1] Blueprint bundle facfou017-esb/100.2.2.SNAPSHOT is waiting for dependencies [(objectClass=com.company.foo.buddy.ExchangeBuddy), (&(osgi.jndi.service.name=jms/alice)(objectClass=javax.jms.ConnectionFactory))] 14:44:40.498 INFO [Blueprint Extender: 2] Suppression du cache 'foo.exchanges' (Trouvé : false) 14:44:40.509 INFO [features-3-thread-1] Blueprint bundle org.apache.activemq.osgi/5.18.0 has been started 14:44:40.513 INFO [features-3-thread-1] org.ops4j.pax.jms.pax-jms-activemq/1.1.2 14:44:40.521 INFO [Blueprint Extender: 2] Suppression du cache 'foo.transcoding' (Trouvé : false) 14:44:40.522 INFO [features-3-thread-1] Obtained service dependency: (&(objectClass=org.ops4j.pax.jms.service.ConnectionFactoryFactory)(type=activemq)) 14:44:40.523 INFO [features-3-thread-1] Found ConnectionFactoryFactory. Creating ConnectionFactory jms/alice 14:44:40.530 INFO [Blueprint Extender: 2] Blueprint bundle foo-data-service/0.0.1.SNAPSHOT has been started 14:44:40.565 INFO [features-3-thread-1] Provided ConnectionFactory implementation is JMS 2.0+ capable. 14:44:40.573 INFO [Blueprint Extender: 3] Blueprint bundle facfou017-esb/100.2.2.SNAPSHOT is waiting for dependencies [(objectClass=com.company.foo.buddy.ExchangeBuddy)] 14:44:40.590 INFO [features-3-thread-1] Done. 14:44:40.646 INFO [Blueprint Extender: 3] Using custom UnitOfWorkFactory: com.company.foo.buddy.service.uow.FooMDCUnitOfWorkFactoryService@7b44d6c2 14:44:40.654 INFO [Blueprint Extender: 3] Using custom EventNotifier with id: buddyEventNotifier and implementation: com.company.foo.buddy.service.events.FooEventNotifier@198c35da 14:44:40.657 INFO [Blueprint Extender: 3] Using CamelClusterService with id: null and implementation: org.apache.camel.component.file.cluster.FileLockClusterService@610e1456 14:44:40.729 INFO [Blueprint Extender: 3] Blueprint bundle facfou017-esb/100.2.2.SNAPSHOT has been started 14:44:40.741 INFO [Blueprint Event Dispatcher: 1] Attempting to start CamelContext: facfou017_context 14:44:40.887 INFO [Blueprint Event Dispatcher: 1] Apache Camel 3.20.3 (facfou017_context) is starting 14:44:40.888 INFO [Blueprint Event Dispatcher: 1] MDC logging is enabled on CamelContext: facfou017_context 14:44:41.155 INFO [Blueprint Event Dispatcher: 1] Routes startup (started:3) 14:44:41.156 INFO [Blueprint Event Dispatcher: 1] Started acq_facfou017 (ref://in) 14:44:41.157 INFO [Blueprint Event Dispatcher: 1] Started trf_facfou017 (jms://facfou017.internal.queue) 14:44:41.158 INFO [Blueprint Event Dispatcher: 1] Started diff_facfou017 (seda://broadcastJson) 14:44:41.158 INFO [Blueprint Event Dispatcher: 1] Apache Camel 3.20.3 (facfou017_context) started in 417ms (build:4ms init:143ms start:270ms) Any help is welcome... Thanks ! Regards. Le mer. 12 avr. 2023 à 10:14, Maurice Betzel <m.bet...@gaston-schul.com> a écrit : > > Hi Ephemeris, > > First thing to notice, are you aiming to use XA transactions with JMS / JDBC? > As far as I know only the pax jdbc aries pool and transactionmanager support > this. > The following setup is for Karaf 4.2.6 / ActiveMQ 5.15.9 / Camel 2.24.1 and > is proven in years of production. > > Basic Karaf runtime: > > <startupFeatures> > <feature>eventadmin</feature> > </startupFeatures> > <bootFeatures> > <feature>wrap</feature> > <feature>shell</feature> > <feature>feature</feature> > <feature>jaas</feature> > <feature>ssh</feature> > <feature>management</feature> > <feature>bundle</feature> > <feature>config</feature> > <feature>deployer</feature> > <feature>diagnostic</feature> > <feature>feature</feature> > <feature>instance</feature> > <feature>kar</feature> > <feature>log</feature> > <feature>package</feature> > <feature>wrapper</feature> > <feature>service</feature> > <feature>system</feature> > </bootFeatures> > > This is my ActiveMQ pooling and connection factory setup using activemq-camel > and JMS 1.1, I am just now migrating to pax transx and Artemis: > > <?xml version="1.0" encoding="UTF-8"?> > <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" > > xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.3.0" > > xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.5.0"> > > <ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"/> > > <cm:property-placeholder > persistent-id="eu.abeel.platform.activemq.service" update-strategy="reload"> > <cm:default-properties> > <cm:property name="broker-name" value="amq-broker"/> > <cm:property name="maximumRedeliveries" value="0"/> > <cm:property name="maximumRedeliveryDelay" value="-1"/> > <cm:property name="initialRedeliveryDelay" value="1000"/> > <cm:property name="redeliveryDelay" value="1000"/> > <cm:property name="useCollisionAvoidance" value="false"/> > <cm:property name="useExponentialBackOff" value="false"/> > <cm:property name="backOffMultiplier" value="5"/> > </cm:default-properties> > </cm:property-placeholder> > > <bean id="activemqConnectionFactory" > class="org.apache.activemq.ActiveMQConnectionFactory"> > <property name="brokerURL" > value="vm://${broker-name}?create=false&waitForStart=10000"/> > <property name="userName" value="$[activemq.jms.user]"/> > <property name="password" value="$[activemq.jms.password]"/> > </bean> > > <bean id="pooledConnectionFactory" > class="org.apache.activemq.pool.PooledConnectionFactory"> > <property name="maxConnections" value="8"/> > <property name="connectionFactory" ref="activemqConnectionFactory"/> > </bean> > > <!-- XA --> > <bean id="activeMQXAConnectionFactory" > class="org.apache.activemq.ActiveMQXAConnectionFactory"> > <property name="brokerURL" > value="vm://${broker-name}?create=false&waitForStart=10000"/> > <property name="userName" value="$[activemq.jms.user]"/> > <property name="password" value="$[activemq.jms.password]"/> > <property name="redeliveryPolicy"> > <bean class="org.apache.activemq.RedeliveryPolicy"> > <property name="maximumRedeliveries" > value="${maximumRedeliveries}"/> > <property name="maximumRedeliveryDelay" > value="${maximumRedeliveryDelay}"/> > <property name="initialRedeliveryDelay" > value="${initialRedeliveryDelay}"/> > <property name="useCollisionAvoidance" > value="${useCollisionAvoidance}"/> > <property name="useExponentialBackOff" > value="${useExponentialBackOff}"/> > <property name="backOffMultiplier" > value="${backOffMultiplier}"/> > </bean> > </property> > </bean> > > <!-- connection factory wrapper to support auto-enlisting of XA resource > --> > <bean id="jcaPooledConnectionFactory" > class="org.apache.activemq.pool.JcaPooledConnectionFactory"> > <property name="maxConnections" value="8"/> > <property name="connectionFactory" ref="activeMQXAConnectionFactory"/> > <property name="transactionManager" ref="osgiJtaTransactionManager"/> > <property name="name" value="activemq.${broker-name}"/> > </bean> > > <!-- ActiveMQ XA Resource Manager --> > <bean id="resourceManager" > class="org.apache.activemq.pool.ActiveMQResourceManager" > init-method="recoverResource"> > <property name="transactionManager" ref="osgiJtaTransactionManager"/> > <property name="connectionFactory" ref="jcaPooledConnectionFactory"/> > <property name="resourceName" value="activemq.${broker-name}"/> > </bean> > > <reference id="osgiJtaTransactionManager" > interface="javax.transaction.TransactionManager" availability="mandatory"/> > > <!-- Register the javax.jms.ConnectionFactory in the OSGi Service > Registry --> > <service ref="pooledConnectionFactory" > interface="javax.jms.ConnectionFactory"> > <service-properties> > <entry key="name" value="platform-jms-cf"/> > <entry key="transacted" value="false"/> > <entry key="osgi.jndi.service.name" value="jms/platform-cf"/> > </service-properties> > </service> > > <!-- Register the javax.jms.ConnectionFactory for the XA > PooledConnectionFactory in the OSGi Service Registry --> > <service ref="jcaPooledConnectionFactory" > interface="javax.jms.ConnectionFactory"> > <service-properties> > <entry key="name" value="platform-jms-cf-xa"/> > <entry key="transacted" value="true"/> > <entry key="osgi.jndi.service.name" value="jms/platform-cf-xa"/> > </service-properties> > </service> > > </blueprint> > > This is the feature installing JMS: > > <feature name="platform-jms" description="ActiveMQ messaging" > version="${project.version}" start-level="50"> > <details>MOM implementation provided by Apache ActiveMQ</details> > <feature>transaction</feature> > <feature>aries-blueprint</feature> > <feature>activemq-broker-noweb</feature> > <feature>activemq-camel</feature> > > <bundle>mvn:eu.abeel.platform.activemq/service/${project.version}</bundle> > <configfile finalname="/etc/eu.abeel.platform.activemq.service.cfg"> > > mvn:eu.abeel.platform.activemq/service/${project.version}/cfg/activemq-service > </configfile> > </feature> > > This is my feature for MariaDB with pax-jdbc 1.5.0, Hibernate 5.2.18.Final > and Aries transactionmanager 1.3.3 with jpa 2.7.2, a JDBC connection pool > gets created only if a specified config file is deployed in the /etc folder: > > <feature name="platform-facade-mariadb-persistence" > version="${project.version}"> > <feature>aries-blueprint</feature> > <feature>transaction</feature> > <feature>jndi</feature> > <!-- Pax JDBC --> > <bundle>mvn:org.osgi/org.osgi.service.jdbc/1.0.0</bundle> > <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc/${pax.jdbc.version}</bundle> > > <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-mariadb/${pax.jdbc.version}</bundle> > > <bundle>mvn:org.apache.karaf.jdbc/org.apache.karaf.jdbc.core/${karaf.version}</bundle> > <bundle>mvn:org.apache.aries/org.apache.aries.util/1.1.3</bundle> > > <bundle>mvn:org.apache.aries.transaction/org.apache.aries.transaction.manager/${aries.transaction.manager.version}</bundle> > > <bundle>mvn:org.apache.geronimo.specs/geronimo-jta_1.1_spec/1.1.1</bundle> > > <bundle>mvn:org.apache.geronimo.specs/geronimo-j2ee-connector_1.6_spec/1.0</bundle> > > <bundle>mvn:org.apache.geronimo.specs/geronimo-validation_1.0_spec/1.1</bundle> > > <bundle>mvn:org.apache.geronimo.components/geronimo-connector/3.1.4</bundle> > > <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-common/${pax.jdbc.version}</bundle> > > <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-pool-aries/${pax.jdbc.version}</bundle> > > <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jasypt/1.9.3_1</bundle> > > <bundle>mvn:org.ops4j.pax.jdbc/pax-jdbc-config/${pax.jdbc.version}</bundle> > <!-- AriesJPA --> > <bundle>mvn:org.osgi/org.osgi.service.jpa/1.1.0</bundle> > > <bundle>mvn:javax.interceptor/javax.interceptor-api/${javax.interceptor-api.version}</bundle> > > <bundle>mvn:javax.persistence/javax.persistence-api/${javax.persistence-api.version}</bundle> > <capability> > > osgi.service;effective:=active;objectClass=javax.persistence.spi.PersistenceProvider > </capability> > <bundle dependency="true" > start-level="30">mvn:org.apache.felix/org.apache.felix.coordinator/1.0.2</bundle> > <bundle > start-level="30">mvn:org.apache.aries.jpa.javax.persistence/javax.persistence_2.1/${aries.jpa.version}</bundle> > <bundle > start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.api/${aries.jpa.version}</bundle> > <bundle > start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.container/${aries.jpa.version}</bundle> > <bundle > start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.support/${aries.jpa.version}</bundle> > <bundle > start-level="30">mvn:org.apache.aries.jpa/org.apache.aries.jpa.blueprint/${aries.jpa.version}</bundle> > <!-- Hibernate ORM --> > <bundle>mvn:org.jboss.logging/jboss-logging/3.4.1.Final</bundle> > > <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle> > <bundle>mvn:org.javassist/javassist/3.27.0-GA</bundle> > <bundle>mvn:net.bytebuddy/byte-buddy/1.10.17</bundle> > > <bundle>mvn:org.jboss.spec.javax.transaction/jboss-transaction-api_1.2_spec/1.1.1.Final</bundle> > <bundle>mvn:org.jboss/jandex/2.1.3.Final</bundle> > <bundle>mvn:com.fasterxml/classmate/1.5.1</bundle> > > <bundle>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.dom4j/2.1.3_1</bundle> > > <bundle>mvn:org.hibernate.common/hibernate-commons-annotations/5.1.2.Final</bundle> > > <bundle>mvn:org.hibernate/hibernate-core/${hibernate.orm.version}</bundle> > > <bundle>mvn:org.hibernate/hibernate-osgi/${hibernate.orm.version}</bundle> > <capability> > > osgi.service;objectClass=javax.persistence.spi.PersistenceProvider;effective:=active;javax.persistence.provider=org.hibernate.jpa.HibernatePersistenceProvider > </capability> > </feature> > > > -----Oorspronkelijk bericht----- > Van: Ephemeris Lappis <ephemeris.lap...@gmail.com> > Verzonden: woensdag 12 april 2023 09:33 > Aan: user@karaf.apache.org > Onderwerp: Re: Karaf 4.4.3 / Unstable transaction features/services > installation > > CAUTION: This email originated from outside of Gaston Schul. Do not click > links or open attachments unless you recognize the sender and know the > content is safe. > > > Hello Maurice. > > I attach a description of our features stack, starting with low level > resource management, then framework and common features, and finally an > application feature example. > > The transaction feature is pulled by a common "foo-base", and used in some of > our application bundles that need both JMS and JDBC commits. > The blueprint code is something like that : > > <reference > id="barJMS" > interface="javax.jms.ConnectionFactory" > filter="(osgi.jndi.service.name=jms/bar)" /> > <reference > id="barDS" > interface="javax.sql.DataSource" > filter="(osgi.jndi.service.name=jdbc/bar)" /> > > <reference > id="transactionManager" > interface="org.springframework.transaction.PlatformTransactionManager" > /> > > <bean class="org.apache.camel.spring.spi.SpringTransactionPolicy"> > <argument ref="transactionManager" /> > </bean> > > Any comment is welcome ;) ! > > Thanks. > > Regards. > > Le mar. 11 avr. 2023 à 20:03, Maurice Betzel <m.bet...@gaston-schul.com> a > écrit : > > > > Hi, I do remember having a similar issue years back and I feel your pain > > but I cannot remember what I did to cure the issue. > > What do your custom features look like so I can compare them. > > > > -----Oorspronkelijk bericht----- > > Van: Ephemeris Lappis <ephemeris.lap...@gmail.com> > > Verzonden: dinsdag 11 april 2023 13:06 > > Aan: user@karaf.apache.org > > Onderwerp: Karaf 4.4.3 / Unstable transaction features/services > > installation > > > > CAUTION: This email originated from outside of Gaston Schul. Do not click > > links or open attachments unless you recognize the sender and know the > > content is safe. > > > > > > Hello. > > > > I've already posted some similar questions some weeks ago about some issues > > we had with our features deployment, but I didn't get any explanation or > > solution. I will try again before creating a ticket for an issue that > > perhaps is not a bug... > > > > Our "low level" karaf features install commons services like : > > - pax-jms (with ActiveMQ client and a configuration file) > > - pax-jdbc (with PostgreSQL driver and a configuration file) > > - transaction > > > > Then we install common Camel features and our applications features. > > > > If I'm not wrong, the feature transaction has the following dependencies : > > -> feature transaction-manager-geronimo > > -> feature pax-transx-tm-geronimo > > -> starts bundle > > mvn:org.ops4j.pax.transx/pax-transx-tm-geronimo/0.5.3 > > > > This bundle exposes the service "PlatformTransactionmanager" that we need > > to create transaction policies in some of our application's bundles. > > > > When we install all the features on a clean Karaf, all the services > > are started, and the dependency on the PlatformTransactionManager > > (PTM) is resolved as expected. > > > > in list of services we have : > > > > pax-transx-tm-geronimo (126) provides: > > -------------------------------------- > > [org.osgi.service.cm.ManagedService] > > [javax.transaction.TransactionManager, > > javax.transaction.TransactionSynchronizationRegistry, > > javax.transaction.UserTransaction, > > org.apache.geronimo.transaction.manager.RecoverableTransactionManager, > > org.springframework.transaction.PlatformTransactionManager] > > [org.ops4j.pax.transx.tm.TransactionManager] > > > > But if we stop the Karaf, and start it again, the PTM doesn't start, and > > the dependent bundles fail. The services list doesn't include the PTM > > anymore : > > > > pax-transx-tm-geronimo (126) provides: > > > > -------------------------------------- > > > > [org.osgi.service.cm.ManagedService] > > > > [javax.transaction.TransactionManager, > > javax.transaction.TransactionSynchronizationRegistry, > > javax.transaction.UserTransaction, > > org.apache.geronimo.transaction.manager.RecoverableTransactionManager] > > [org.ops4j.pax.transx.tm.TransactionManager] > > > > I discovered that using "feature:refresh" does something that restarts the > > missing service. Then stopping and starting Karaf seems to have no impact. > > > > I don't understand why the Karaf feature installation works the first time, > > but doesn't let the system in a stable state, and what the refresh does to > > get it working again, since no change has been applied... > > > > Thanks in advance for any ideas. > > > > Regards. > > Al onze verrichtingen geschieden op basis van de Algemene voorwaarden der > > Expediteurs van België, gepubliceerd in de bijlage tot het Belgisch > > Staatsblad dd. 24 juni 2005 onder nr. 0090237. De tekst van deze > > voorwaarden wordt op uw verzoek gratis toegezonden. > > All our transactions are subject to the General Conditions of the Belgian > > Forwarders Association which have been published under nr. 0090237 in the > > "Bijlage tot het Belgisch Staatsblad" dated June 24th, 2005, and is > > available free of charge upon request. > > Toutes nos opérations se font sur base des Conditions Générales des > > Expéditeurs de Belgique. Le texte en a été publié dans l' Annexe au > > Moniteur Belge du 24 juin 2005 sous le n° 0090237. Ce texte sera vous > > envoyé gratuitment sur demande. > > Email confidentiality notice: > > This email and any files transmitted with it are confidential and intended > > only for the use of the recipient. If you have received this email in error > > please notify its sender. > > > Al onze verrichtingen geschieden op basis van de Algemene voorwaarden der > Expediteurs van België, gepubliceerd in de bijlage tot het Belgisch > Staatsblad dd. 24 juni 2005 onder nr. 0090237. De tekst van deze voorwaarden > wordt op uw verzoek gratis toegezonden. > All our transactions are subject to the General Conditions of the Belgian > Forwarders Association which have been published under nr. 0090237 in the > "Bijlage tot het Belgisch Staatsblad" dated June 24th, 2005, and is available > free of charge upon request. > Toutes nos opérations se font sur base des Conditions Générales des > Expéditeurs de Belgique. Le texte en a été publié dans l' Annexe au Moniteur > Belge du 24 juin 2005 sous le n° 0090237. Ce texte sera vous envoyé > gratuitment sur demande. > Email confidentiality notice: > This email and any files transmitted with it are confidential and intended > only for the use of the recipient. If you have received this email in error > please notify its sender. >