By the way, using @Component, you can do: @Component(name = "foo", service = Foo.class, immediate = true, property = { "osgi.jndi.service.name=my/foo" }) public class MyFoo { … }
Regards JB > Le 9 sept. 2020 à 18:39, Jean-Baptiste Onofre <j...@nanthrax.net> a écrit : > > Does your WebApplication use the InitialContextFactory from Karaf ? > > I mean: how do you deploy your WebApplication ? As WebBundle or WAR ? > > About JNDI "name" for service, you just have to add osgi.jndi.service.name > service property. > > For instance, using "pure" Activator, you can do: > > Hashtable<String, String> serviceProperties = new Hashtable(); > serviceProperties.put("osgi.jndi.service.name", "my/foo"); > ref = bundleContext.registerService(Foo.class, foo, serviceProperties); > > Regards > JB > >> Le 9 sept. 2020 à 18:31, Paul Spencer <paulspen...@mindspring.com> a écrit : >> >> JB, >> 1) The feature JNDI feature is install. >> >> 2) I have a OSGi command that has access to the TouchPointManagerWebService >> service via JNDI. It is the Web Application that has no access to the >> TouchPointManagerWebService service. Both the command and the Web >> Application have access to the EwmConfigurationService service. The >> EwmConfigurationService Is defined via Blueprint. >> >> 3) Please provide an example of “You can also add a service property >> osgi.jndi.name to simplify the lookup.” >> >> *** >> * Supporting information >> **** >> karaf@ewm-server()> bundle:services -p ewm-tpm-client ewm-configuration >> >> TouchPoint Manager Web Service Client (186) provides: >> -------------------------------------------------------------- >> component.id = 29 >> component.name = >> com.example.touchPointClient.internal.TouchPointWebServiceImpl >> objectClass = >> [com.example.touchPointWsApi.webServices.TouchPointManagerWebService] >> service.bundleid = 186 >> service.id = 253 >> service.scope = bundle >> >> Configuration (176) provides: >> -------------------------------------- >> objectClass = [com.example.core.services.EwmConfigurationService] >> osgi.service.blueprint.compname = ewmConfigurationService >> service.bundleid = 176 >> service.id = 219 >> service.scope = bundle >> ---- >> objectClass = [org.osgi.service.blueprint.container.BlueprintContainer] >> osgi.blueprint.container.symbolicname = ewm-configuration >> osgi.blueprint.container.version = 2.0.0.SNAPSHOT >> service.bundleid = 176 >> service.id = 250 >> service.scope = singleton >> karaf@root()> >> >> karaf@ root()> feature:list --installed | grep -i jndi >> >> >> jndi │ 4.2.9 │ x │ Started │ >> enterprise-4.2.9 │ OSGi Service Registry JNDI access >> karaf@root()> list -t 0| grep -i jndi >> 84 │ Active │ 30 │ 9.4.28.v20200408 │ Jetty :: JNDI Naming >> 197 │ Active │ 30 │ 1.1.0 │ Apache Aries JNDI API >> 198 │ Active │ 30 │ 1.0.2 │ Apache Aries JNDI Core >> 199 │ Active │ 30 │ 1.0.0 │ Apache Aries JNDI Support for >> Legacy Runtimes >> 200 │ Active │ 30 │ 1.0.0 │ Apache Aries JNDI RMI Handler >> 201 │ Active │ 30 │ 1.1.0 │ Apache Aries JNDI URL Handler >> 202 │ Active │ 30 │ 4.2.9 │ Apache Karaf :: JNDI :: Core >> karaf@root()> jndi:names >> JNDI Name │ Class Name >> ────────────────────────┼─────────────────────────────────────────────── >> osgi:service/jndi │ org.apache.karaf.jndi.internal.JndiServiceImpl >> osgi:service/jdbc/test │ org.postgresql.jdbc2.optional.SimpleDataSource >> karaf@root()> >> >> >> Paul Spencer >> >> >>> On Sep 9, 2020, at 12:07 PM, Jean-Baptiste Onofre <j...@nanthrax.net> wrote: >>> >>> Hi Paul, >>> >>> If your component expose a service (that you can see with bundle:services >>> for instance), and you have also the jndi feature installed, nothing to do: >>> you will have the JNDI name mapped to the OSGi service (it’s not related to >>> blueprint or DS, it’s directly service). You can also add a service >>> property osgi.jndi.name to simplify the lookup. >>> >>> Regards >>> JB >>> >>>> Le 9 sept. 2020 à 18:03, Paul Spencer <paulspen...@mindspring.com> a écrit >>>> : >>>> >>>> Karaf 4.2.9 >>>> PAX-WEB 7.2.16 >>>> >>>> I have a running in a MyFaces web application and I am not getting an OSGi >>>> Service defined via @Component via JNDI? >>>> >>>> I am following the "OSGi Services Registry and JNDI" documentation in >>>> https://karaf.apache.org/manual/latest/#_naming_jndi to access the >>>> service. Services defined via Blueprint are available to the web >>>> application where as services defined via @Component are not. >>>> Specifically the ctx.lookup(“osgi:service/...”) returns null for services >>>> define via @Component. >>>> >>>> What is needed for services defined using @Component >>>> (org.osgi.service.component.annotations.Component) to be available to a >>>> Web Application using PAX-WEB via the JNDI schema >>>> osgi:service/<interface>[/<filter>] ? >>>> >>>> Note: I have defined command in Karaf that is able to access the service >>>> via @Reference (org.apache.karaf.shell.api.action.lifecycle.Reference) and >>>> the JNDI schema osgi:service/<interface>[/<filter>] >>>> >>>> >>>> *** >>>> * Environment information >>>> *** >>>> karaf@root()> feature:list --installed | grep -i pax >>>> >>>> >>>> >>>> pax-http-service │ 7.2.16 │ │ Started │ >>>> standard-4.2.9 │ Pax-Web OSGi HTTP Service >>>> pax-web-core │ 7.2.16 │ │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ Provide Core pax-web bundles >>>> pax-jetty │ 9.4.28.v20200408 │ │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ Provide Jetty engine support >>>> pax-http-jetty │ 7.2.16 │ │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ >>>> pax-http │ 7.2.16 │ │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ Implementation of the OSGI HTTP Service >>>> pax-http-whiteboard │ 7.2.16 │ │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ Provide HTTP Whiteboard pattern support >>>> pax-war │ 7.2.16 │ x │ Started │ >>>> org.ops4j.pax.web-7.2.16 │ Provide support of a full WebContainer >>>> pax-transx-tm-api │ 0.4.4 │ │ Started │ >>>> pax-transx-0.4.4 │ >>>> pax-transx-tm-geronimo │ 0.4.4 │ │ Started │ >>>> pax-transx-0.4.4 │ >>>> pax-jdbc-spec │ 1.4.4 │ │ Started │ >>>> org.ops4j.pax.jdbc-1.4.4 │ Provides OSGi JDBC Service spec >>>> pax-jdbc │ 1.4.4 │ │ Started │ >>>> org.ops4j.pax.jdbc-1.4.4 │ Provides JDBC Service support >>>> pax-jdbc-config │ 1.4.4 │ │ Started │ >>>> org.ops4j.pax.jdbc-1.4.4 │ Provides JDBC Config support >>>> pax-jdbc-postgresql │ 1.4.4 │ x │ Started │ >>>> org.ops4j.pax.jdbc-1.4.4 │ Provides JDBC PostgreSQL DataSourceFactory >>>> pax-cdi │ 1.1.3 │ x │ Started │ >>>> org.ops4j.pax.cdi-1.1.3 │ Provide CDI support >>>> pax-cdi-weld │ 1.1.3 │ │ Started │ >>>> org.ops4j.pax.cdi-1.1.3 │ Weld CDI 1.2 support >>>> karaf@root()> list | grep -i pax >>>> 133 │ Active │ 80 │ 1.4.4 │ OPS4J Pax JDBC Generic >>>> Driver Extender >>>> 134 │ Active │ 80 │ 1.4.4 │ OPS4J Pax JDBC Config >>>> 135 │ Active │ 80 │ 1.4.4 │ OPS4J Pax JDBC Pooling >>>> Support Base >>>> 143 │ Active │ 80 │ 0.4.4 │ pax-transx-tm-api >>>> 144 │ Active │ 80 │ 0.4.4 │ pax-transx-tm-geronimo >>>> 233 │ Active │ 80 │ 1.1.3 │ OPS4J Pax CDI Bean Bundle API >>>> 234 │ Active │ 80 │ 1.1.3 │ OPS4J Pax CDI Extender for >>>> Bean Bundles >>>> 235 │ Active │ 80 │ 1.1.3 │ OPS4J Pax CDI Portable >>>> Extension for OSGi >>>> 236 │ Active │ 80 │ 1.1.3 │ OPS4J Pax CDI Service >>>> Provider Interface >>>> 237 │ Active │ 80 │ 1.1.3 │ OPS4J Pax CDI Weld Adapter >>>> karaf@root()> >>>> karaf@root()> list | grep -i faces >>>> 230 │ Resolved │ 80 │ 5.1.0 │ primefaces >>>> 240 │ Resolved │ 80 │ 2.2.12 │ Apache MyFaces JSF-2.2 Core >>>> API >>>> 242 │ Resolved │ 80 │ 2.2.12 │ Apache MyFaces JSF-2.2 Core >>>> Impl >>>> >>>> Paul Spencer >>>> >>>> >>> >> >