On Mon, Mar 30, 2015 at 2:41 PM, BJ Hargrave <hargr...@us.ibm.com> wrote:

> > From: Raymond Auge <raymond.a...@liferay.com>
>
> > K, so it can't handled Object (or the anything case)?
>
> DS can handle any type a service is registered under including
> java.lang.Object. But it does require you tell DS the service type (either
> in the interface element if you write the XML or in the service element of
> the Reference annotation which can be inferred from the first argument of
> the annotated bind method) and for the service to be registered under that
> type.
>
> What DS cannot handle is a reference to a service with an unspecified
> name. You seem to want to bind to any service whose name endsWith MBean
> (except for DynamicMBean). And DS is not designed to do that. That is
> better for a ServiceTracker.
>

It was my _hope_ that most things you could do with a service tracker you
could do with a DS's bind method.

ultimately doesn't a DS component use a service tracker?

Anyway.. not arguing.. moving on...

Thx everyone,
- Ray


>
> > ok! not a problem.
>
> > - Ray
> >
> > On Mon, Mar 30, 2015 at 2:11 PM, BJ Hargrave <hargr...@us.ibm.com>
> wrote:
> > > From: Raymond Auge <raymond.a...@liferay.com>
> > >
> > > Does anyone see why this would not be working?
> > >
> > >
> > > @Reference(
> >
> > I'll assume this is the OSGi annotation.
> >
> > >     cardinality = ReferenceCardinality.MULTIPLE,
> > >     name = "MBean",
> > >     policy = ReferencePolicy.DYNAMIC,
> > >     policyOption = ReferencePolicyOption.GREEDY,
> > >     target = "(&(jmx.objectname=*)(objectClass=*MBean)(!
> > > (objectClass=javax.management.DynamicMBean)))"
> > > )
> > > protected void addMBean(ServiceReference<?> serviceReference) { .. }
> >
> > > The XML generated is:
> > >
> > > <reference
> > >     name="MBean"
> > >     cardinality="0..n"
> > >     policy="dynamic"
> > >     interface="org.osgi.framework.ServiceReference"
> >
> > The generated XML shows that the assumed serivce type is
> > ServiceReference. You probably need to set the service element in
> > the annotation to set the actual type of the service. This will set
> > the interface XML attribute properly. The interface attribute is the
> > objectClass of the referenced service.
> >
> > interface: "Fully qualified name of the class that is used by the
> > component to access the service. The service provided to the
> > component must be type compatible with this class. That is, the
> > component must be able to cast the service object to this class. A
> > service must be registered under this name to be considered for the
> > set of target services.
> >
> > The Reference annotation will use the type of the first argument of the
> anno-
> > tated method or the type of the annotated field to determine the
> > service value."
> >
> > >     target="(&amp;(jmx.objectname=*)(objectClass=*MBean)(!
> > > (objectClass=javax.management.DynamicMBean)))"
> >
> > Putting objectClass in the target does not override the objectClass
> > stated by the interface attribute and can be in conflict.
> >
> > >     bind="addMBean"
> > >     unbind="removeMBean"
> > >     policy-option="greedy"
> > > />
> > >
> >
> > > Shouldn't this work?
> >
> > DS is not set up for this. It expects you to name a specific service
> > type. Not any type whose registered service name ends with something.
> >
> --
>
>  *BJ Hargrave*
> Senior Technical Staff Member, IBM
> OSGi Fellow and CTO of the *OSGi Alliance* <http://www.osgi.org/>
> *hargr...@us.ibm.com* <hargr...@us.ibm.com>
>
> office: +1 386 848 1781
> mobile: +1 386 848 3788
>
>
> _______________________________________________
> OSGi Developer Mail List
> osgi-dev@mail.osgi.org
> https://mail.osgi.org/mailman/listinfo/osgi-dev
>



-- 
*Raymond Augé* <http://www.liferay.com/web/raymond.auge/profile>
 (@rotty3000)
Senior Software Architect *Liferay, Inc.* <http://www.liferay.com>
 (@Liferay)
Board Member & EEG Co-Chair, OSGi Alliance <http://osgi.org> (@OSGiAlliance)
_______________________________________________
OSGi Developer Mail List
osgi-dev@mail.osgi.org
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to