Hi, That's not a problem of package but of OSGi requirement.
You can do: - do not include requirement in your my-test... bundle - provide the capability in your feature (similar to https://github.com/apache/karaf/blob/main/examples/karaf-jpa-example/karaf-jpa-example-features/src/main/feature/feature.xml#L28) IMHO, the easiest way is to avoid requirement in your bundle (adding this to the maven-bundle-plugin configuration). So, there's no problem with the packages, etc. The problem is simply the requirement in your bundle (you can see in the MANIFEST of your bundle, you will see a Require-Capability/Require-Service instructions). Regards JB See: On Mon, Aug 22, 2022 at 12:23 PM Ephemeris Lappis <ephemeris.lap...@gmail.com> wrote: > > Hello again. > > As it seems I have no solution to get an implicit connection factory, I've > adapted my POC setting myself a reference. But it seems that it doesn't work > because the service that is created by the jms:create command doesn't match > some class definition. > > In my POC's code I've added a dependency javax.jms-api version 2.0 to match > the API version that the bundle that is deployed is providing. > karaf@root()> exports | grep javax.jms > javax.jms.doc-files │ 2.0.0 │ 83 │ > javax.jms-api > javax.jms │ 2.0.0 │ 83 │ > javax.jms-api > > In my blueprints I've added the service reference, and used it on my JMS > routes : > <reference > id="myJMS" > interface="javax.jms.ConnectionFactory" > availability="mandatory" /> > > <from uri="jms:queue:k1-test-queue-1?connectionFactory=#myJMS" /> > > My bundle's manifest imports the correct package and service : > Import-Package: javax.jms;version="[2.0,3)",my.test.t26.helper;version > ="[0.0,1)",my.test.t26.uow;version="[0.0,1)",org.osgi.service.bluepri > nt;version="[1.0.0,2.0.0)" > Import-Service: javax.jms.ConnectionFactory;multiple:=false,my.test.t2 > 6.helper.Helper;multiple:=false,my.test.t26.uow.CustomUnitOfWorkFacto > ry;multiple:=false > > The service seems to be present on Karaf : > > karaf@root()> jms:connectionfactories > JMS Connection Factory > ────────────────────── > jms/my_amq > > and with service:list : > > [javax.jms.ConnectionFactory] > ----------------------------- > name = my_amq > osgi.jndi.service.name = jms/my_amq > password = secret > pax.jms.managed = true > service.bundleid = 93 > service.factoryPid = org.ops4j.connectionfactory > service.id = 147 > service.pid = > org.ops4j.connectionfactory.4d276d00-2c50-49b0-93f9-18dc16a107ce > service.scope = singleton > type = activemq > url = tcp://localhost:61616 > user = application > Provided by : > OPS4J Pax JMS Config (93) > Used by: > System Bundle (0) > > [javax.management.MBeanRegistration, > org.apache.karaf.features.management.FeaturesServiceMBean, > javax.management.NotificationEmitter, > javax.management.NotificationBroadcaster, javax.management.DynamicMBean, > javax.management.MBeanRegistration] > > But when installing my feature, the services do not match, and I have the > following error :( !!! > > Unable to resolve root: missing requirement [root] osgi.identity; > osgi.identity=my-test-26-karaf-2-routes; type=karaf.feature; > version="[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]"; > filter:="(&(osgi.identity=my-test-26-karaf-2-routes)(type=karaf.feature)(version>=0.0.1.SNAPSHOT)(version<=0.0.1.SNAPSHOT))" > [caused by: Unable to resolve my-test-26-karaf-2-routes/0.0.1.SNAPSHOT: > missing requirement [my-test-26-karaf-2-routes/0.0.1.SNAPSHOT] osgi.identity; > osgi.identity=my-test-26-karaf-2-routes; type=osgi.bundle; > version="[0.0.1.SNAPSHOT,0.0.1.SNAPSHOT]"; resolution:=mandatory [caused by: > Unable to resolve my-test-26-karaf-2-routes/0.0.1.SNAPSHOT: missing > requirement [my-test-26-karaf-2-routes/0.0.1.SNAPSHOT] osgi.service; > effective:=active; filter:="(objectClass=javax.jms.ConnectionFactory)"]] > > I thought it may come from the class origin, but only one bundle seems to > export it. So I tried to find the issue elsewhere... > > Inspecting the ActiveMQ OSGi bundle : > 52 │ Active │ 80 │ 5.17.1 │ ActiveMQ :: OSGi bundle > > I saw that it also gets the class, but doesn't export it : > > karaf@root()> bundle:classes 52 | grep javax.jms.ConnectionFactory > javax/jms/ConnectionFactory.class | exported: false > > Can I deduce that the JMS connection factory service may have been created > using a bad class from a private package, and this may be the reason why it > doesn't match my reference, and perhaps why the camel-jms component doesn't > detect it ? > > With previous versions of ActiveMQ I think it was working... > > Thanks a lot for your help. > > Regards. > > > Le lun. 22 août 2022 à 07:01, Jean-Baptiste Onofré <j...@nanthrax.net> a > écrit : >> >> Hi, >> >> here's the documentation about camel-activemq: >> https://camel.apache.org/components/3.18.x/activemq-component.html >> >> About the ConnectionFactory, you have to define it as reference in >> your route. You can find an example here: >> >> https://github.com/jbonofre/camel-amq-redelivery/blob/master/src/main/resources/OSGI-INF/blueprint/route.xml >> https://github.com/jbonofre/camel-amq-redelivery/blob/master/src/main/resources/OSGI-INF/blueprint/connectionfactory.xml >> >> Regards >> JB >> >> On Sun, Aug 21, 2022 at 10:22 AM Ephemeris Lappis >> <ephemeris.lap...@gmail.com> wrote: >> > >> > Hello. >> > >> > I've never seen any documentation about "camel-activeemq" : what's the >> > feature that provides it ? >> > >> > As I've said before, I've been trying to use camel-jms but surprisingly >> > my unique connection factory is not detected, and the component asks for >> > an explicit declaration. I thought that one unique connection factory >> > should be taken into account... I've created a unique connection factory >> > using "jms:create" connecting to an external ActiveMQ, and I've checked >> > that the service is present declaring the right interface. Is there a >> > special way of declaring or naming the connexion factory to make it >> > available for routes with camel-jms endpoints ? >> > >> > Thanks a lot for your help. >> > >> > Regards. >> > >> > Ephemeris Lappis >> > >> > Le 21/08/2022 à 08:12, Jean-Baptiste Onofré a écrit : >> > > That's correct: activemq-camel has been removed. >> > > >> > > You can now use camel-jms (recommended) or camel-activeemq. >> > > >> > > You can wrap your own component if needed, but I would rather update >> > > to camel-jms (not so hard to do). >> > > >> > > Regards >> > > JB >> > > >> > > On Fri, Aug 19, 2022 at 12:33 PM Ephemeris Lappis >> > > <ephemeris.lap...@gmail.com> wrote: >> > >> Hello. >> > >> >> > >> I've been working before on ActiveMQ 5.16.5, but as this version leads >> > >> to >> > >> too many problems on Karaf 4.4.1 (spring compatibility among other >> > >> issues), >> > >> I've decided to switch to ActiveMQ 5.17.1. >> > >> >> > >> Before, I think the component camel-activemq was provided by the feature >> > >> activemq-camel, but with 5.17.1 it doesn't appear anymore in this >> > >> feature, >> > >> if I'm not wrong... >> > >> >> > >> I've also tried as you suggested to use the jms component in my routes, >> > >> but >> > >> the connection factory I've created to connect to my ActiveMQ server is >> > >> not >> > >> taken into account by the component that requires an explicit connection >> > >> factory... Changing all our about 100 camel projects to change from >> > >> activemq to jms and declare a connection factory reference seems to be a >> > >> very bad choice for us... >> > >> >> > >> So, from both sides I've issues. >> > >> >> > >> Any idea to get out of this sad situation 😥 ? >> > >> >> > >> Thanks a lot ! >> > >> >> > >> Regards. >> > >> >> > >> PS: Perhaps the documentation on the component should say that it's >> > >> available "Since Camel 1.0" but also only with restriction after a given >> > >> version... >> > >> >> > >> >> > >> Le ven. 19 août 2022 à 11:51, Claus Ibsen <claus.ib...@gmail.com> a >> > >> écrit : >> > >> >> > >>> camel-activemq is not out of the box in Apache Camel in Camel v2. >> > >>> It comes from Apache ActiveMQ 5.x instead. >> > >>> >> > >>> However starting from ActiveMQ 5.17 then they dropped their >> > >>> camel-activemq >> > >>> JAR and its no longer available. >> > >>> Instead use the generic camel-jms instead. Or go back to ActiveMQ >> > >>> 5.16.x >> > >>> >> > >>> In the Camel website make sure to browse the components list for the >> > >>> Camel >> > >>> version you use. The list is different per version. >> > >>> >> > >>> >> > >>> On Fri, Aug 19, 2022 at 11:35 AM Ephemeris Lappis < >> > >>> ephemeris.lap...@gmail.com> wrote: >> > >>> >> > >>>> Hello. >> > >>>> >> > >>>> I've already asked the question, but probably not clearly... >> > >>>> >> > >>>> I don't understand why I can't resolve the dependency for : >> > >>>> org.apache.camel:camel-activemq:jar:2.25.4 >> > >>>> >> > >>>> I used this component for a long time on old servicemix environments, >> > >>>> and I'm trying to port my projects to Karaf using Camel 2.25.4 (and >> > >>>> ActiveMQ 5.17.1). >> > >>>> >> > >>>> The component is still documented on the Camel components list, but I >> > >>>> can't find it. >> > >>>> >> > >>>> Any help ? >> > >>>> >> > >>>> Thanks in advance. >> > >>>> >> > >>>> Regards. >> > >>>> >> > >>> >> > >>> -- >> > >>> Claus Ibsen >> > >>> ----------------- >> > >>> http://davsclaus.com @davsclaus >> > >>> Camel in Action 2: https://www.manning.com/ibsen2 >> > >>> >> > >> > -- >> > Cet e-mail a été vérifié par le logiciel antivirus d'Avast. >> > www.avast.com