Hello.

You've probably not seen my own answers on the post to update it with
my last tests :
- the bundle has no problem when installed out of the feature, and I
think the service manifest itself is not the issue
- In this manifest, I understand the requirement on the jms service,
but the existing connection factory should satisfy it
- why the similar jdbc datasource requirement is processed as expected
and doesn't lead to a similar issue ?
- Disabling the serviceRequirements in the feature configuration, the
feature installer works as expected.

I agree with you, I'm going to post a new message on the Karaf list.

Do you think that in my new post I should mention a Karaf feature
installer's (its "resolver") issue, since the bundle installer has no
problem finding the existing services to satisfy requirements ?

Thanks again.

Le jeu. 25 août 2022 à 07:23, Jean-Baptiste Onofré <j...@nanthrax.net> a écrit :
>
> Hi,
>
> you have a requirement in your bundle: it's the Import-Service
> statement. The problem comes from there: it's nothing about the
> runtime.
>
> I would recommend adding configuration to maven-bundle-plugin to not
> put this requirement in your bundle MANIFEST.
>
> I already answered similar questions on the Karaf mailing list several times.
>
> By the way, this kind of question should be discussed on the Karaf
> mailing list IMHO.
>
> Regards
> JB
>
> On Tue, Aug 23, 2022 at 10:35 AM Ephemeris Lappis
> <ephemeris.lap...@gmail.com> wrote:
> >
> > Hello again !
> >
> > Well, I'm not sure I understand what you mean about "requirements" in my 
> > bundle. I have no requirement in my manifest. Here the full copy of the 
> > manifest :
> >
> > Manifest-Version: 1.0
> > Bnd-LastModified: 1661240801094
> > Build-Jdk-Spec: 1.8
> > Bundle-Blueprint: OSGI-INF/blueprint/routes.xml
> > Bundle-Description: Fifi-T26 :: Camel routes
> > Bundle-ManifestVersion: 2
> > Bundle-Name: Fifi-T26 :: Camel
> > Bundle-SymbolicName: my-test-26-karaf-2-routes
> > Bundle-Version: 0.0.1.SNAPSHOT
> > Created-By: Apache Maven Bundle Plugin 5.1.8
> > DynamicImport-Package: groovy.*,org.codehaus.groovy.*
> > Import-Package: javax.jms,javax.sql,my.test.t26.helper;version="[0.0,1
> >  )",my.test.t26.uow;version="[0.0,1)",org.osgi.service.blueprint;versi
> >  on="[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,javax.sql.DataSource;multiple:=false;filter=(osgi.
> >  jndi.service.name=jdbc/fifi)
> > Tool: Bnd-6.3.1.202206071316
> >
> > I aim to provide my bundle (and all similar bundles in our projects) as a 
> > feature, with dependencies that pull all the common features. For that I 
> > have created a global common feature, and for  every applicative bundle, 
> > this feature is referenced as a prerequisite. Here are the bundle feature 
> > and the common one :
> >
> > <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> > <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0"; 
> > name="my-test-26-karaf-2-routes">
> >     
> > <repository>mvn:my.tests/my-test-26-karaf-x-feature/0.0.1-SNAPSHOT/xml/features</repository>
> >     <feature name="my-test-26-karaf-2-routes-cfg" description="Fifi-T26 :: 
> > Camel routes - Configuration" version="0.0.1.SNAPSHOT">
> >         <details>Fifi-T26 :: Camel routes - Configuration</details>
> >         <configfile 
> > finalname="/etc/my_test_26_karaf_2_routes.cfg">mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT/cfg/configuration</configfile>
> >     </feature>
> >     <feature name="my-test-26-karaf-2-routes" description="Fifi-T26 :: 
> > Camel" version="0.0.1.SNAPSHOT">
> >         <details>Fifi-T26 :: Camel routes</details>
> >         <feature version="0.0.1-SNAPSHOT" 
> > prerequisite="true">my-test-26-karaf-x-feature</feature>
> >         <feature version="0.0.1-SNAPSHOT" 
> > prerequisite="true">my-test-26-karaf-2-routes-cfg</feature>
> >         
> > <bundle>mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT</bundle>
> >     </feature>
> > </features>
> >
> > <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
> > <features xmlns="http://karaf.apache.org/xmlns/features/v1.6.0"; 
> > name="my-test-26-karaf">
> >     
> > <repository>mvn:org.apache.camel.karaf/apache-camel/2.25.4/xml/features</repository>
> >     <feature name="my-test-26-karaf-x-feature" description="Fifi-T26 :: 
> > Feature" version="0.0.1.SNAPSHOT">
> >         <details>Fifi-T26 :: Feature Definition</details>
> >         <feature>transaction</feature>
> >         <feature version="2.25.4">camel-spring</feature>
> >         <feature version="2.25.4">camel-blueprint</feature>
> >         <feature version="2.25.4">camel-groovy</feature>
> >         <feature version="2.25.4">camel-csv</feature>
> >         <feature version="2.25.4">camel-jms</feature>
> >         <feature version="2.25.4">camel-sql</feature>
> >         
> > <bundle>mvn:my.tests/my-test-26-karaf-1-service/0.0.1-SNAPSHOT</bundle>
> >         <bundle>mvn:my.tests/my-test-26-karaf-1-api/0.0.1-SNAPSHOT</bundle>
> >     </feature>
> > </features>
> >
> > The error happens when I try to install my bundle as a feature :
> > repo-add mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT/XML/features
> > feature:install my-test-26-karaf-2-routes
> >
> > All the dependent features and their bundles are installed and started as 
> > expected, and when my bundle is deployed, the missing jms service message 
> > appears, and the operation fails.
> >
> > org.apache.felix.resolver.reason.ReasonException: 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)"
> >
> > BUT when I install my bundle manually, it works : no missing service !
> >
> > bundle:install -s mvn:my.tests/my-test-26-karaf-2-routes/0.0.1-SNAPSHOT
> >
> > The referenced services (my custom ones, a data source and the jms 
> > connection factory) are all found without any problem, and my routes are 
> > started, and work as expected, including XA transactions...
> >
> > What's wrong when the bundle is deployed using its feature ? What is the 
> > difference between a raw bundle installing and doing the same using the 
> > feature ?
> >
> > Thanks again for your help.
> >
> > Regards.
> >
> >
> > Le mar. 23 août 2022 à 07:09, Jean-Baptiste Onofré <j...@nanthrax.net> a 
> > écrit :
> >>
> >> 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

Reply via email to