Hi Scott,

If you're using Karaf then I'm afraid that you can't expect IBM's JNDI 
extensions to work. There's a non-standard custom namespace being added by 
WebSphere that may or may not exist in Karaf. 

In any case the IBM example shows a lookup of a blueprint bean using its ID. 
The bean being looked up is the reference. In your snippet you are trying to 
look up the impl bean.

Tim

Sent from my iPhone

> On 5 Sep 2014, at 21:18, "Leschke, Scott" <[email protected]> wrote:
> 
> I came to this from looking at the following couple of pages and the fact 
> that when I look at my Karaf installation, service property 
> osgi.service.blueprint.compname references a bean. I’ve tried a few different 
> things but thus far haven’t been able to get anything bound under 
> blueprint:comp.  osgi:service isn’t a problem.
>  
> In Karaf, I have blueprint, and I have JNDI installed, is that what you’re 
> referring to by the “blueprint JNDI bundle”?
>  
> http://www-01.ibm.com/support/knowledgecenter/SSCKBL_8.5.5/com.ibm.websphere.osgi.nd.doc/ae/ca_blueprint_jndi.html
>  
> It contains the following:
>  
>  
> A WAB can contain blueprint XML. This can be used to declare and configure 
> any number of components, which can then be looked up from servlets that are 
> not themselves blueprint-managed. One particular use of this is shown in the 
> OSGi blog sample application, in which the web bundle contains the following 
> blueprint code:
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
>   <reference id="blogService"
>              
> interface="com.ibm.samples.websphere.osgi.blog.api.BloggingService"/>
> </blueprint>
>  
> The JNDIHelper.getBloggingService() method call includes this code fragment:
>  
>   try {
>     InitialContext ic = new InitialContext();
>     return (BloggingService) ic.lookup("blueprint:comp/blogService");
>   } catch (NamingException e) {
>  
> This code looks up a blueprint-managed reference to an OSGi service. This is 
> useful because blueprint-managed services are damped as described in section 
> 121.10.1 of the OSGi Service Platform Release 4 Version 4.2 Enterprise 
> Specification. If the BloggingService object is not available when the 
> application code tries to use the reference, the application code waits until 
> the service becomes available again.
> Previous versions of the getBloggingService method used a lookup of the 
> following form:
>  
> ic.lookup("osgi:service/com.ibm.samples.websphere.osgi.blog.api.BloggingService");
>  
> This is not so useful, because the application code can receive a 
> ServiceUnavailableException exception if the service is not available when 
> the application code tries to use the BloggingService object. For example: If 
> theBloggingService object is temporarily unavailable because an in-place 
> update is in progress, the user of the Blog web application can get an HTTP 
> 500 (Internal Error) message in their web browser. With the new form of 
> lookup, web requests wait for a short time (a second or two) until the update 
> completes. Therefore it is easier to write a web application that remains 
> continuously available, from a user perspective, even while the application 
> is being updated in place.
>  
> Also, from  http://www.ibm.com/developerworks/library/os-osgiblueprint/
>  
> Service selection and proxies
> The reference and reference-list managers share several attributes. Three 
> shared attributes are used for service selection: interface,component-name 
> and a filter.
> You can use the interface attribute to specify an interface class. The 
> interface class is used for two purposes: for service selection and for 
> service proxies. The interface attribute is optional, but if set, it must 
> specify an interface class. For service selection, the interface class is 
> used to select services from the service registry registered with that 
> interface name. For service proxies, the proxies returned by service 
> reference managers must implement all the methods defined by that interface 
> class. If the interface attribute is not specified, the proxy behaves as if 
> it implements an interface without any methods.
> You can also use the component-name and filter attributes for service 
> selection. The component-name attribute is just a convenient way of adding an 
> osgi.service.blueprint.compname=<component-name> expression to the selection 
> filter. Similarly, the filter attribute specifies the raw OSGi filter 
> expression to be added to the selection filter. The interface, 
> component-name, and filter attributes are combined to create one main OSGi 
> filter expression used for the service selection.
> For example, the selection filter for the reference in Listing 7 is 
> (&(objectClass=java.io.Serializable)), while the selection filter for the 
> reference in Listing 9 is 
> (&(objectClass=java.io.Serializable)(osgi.service.blueprint.compname=myAccount)(mode=shared)).
> Listing 9. Service selection example
>    <reference id=”serviceReferenceTwo”             
>               interface=”java.io.Serializable”
>               component-name=”myAccount”
>               filter=”(mode=shared)”/>
>  
>  
> From: [email protected] [mailto:[email protected]] 
> On Behalf Of Tim Ward
> Sent: Friday, September 05, 2014 1:46 PM
> To: OSGi Developer Mail List
> Subject: Re: [osgi-dev] blueprint:comp JNDI namespace
>  
> Assuming that you have the blueprint JNDI bundle installed then what you need 
> is:
>  
> blueprint:comp/my-xface-impl
>  
> The id of the bean is "my-xface-impl"
>  
> The reference that you have declared in the XML creates a mandatory OSGi 
> service dependency. This will prevent your blueprint container from starting 
> unless someone else is providing an Xface service. You almost certainly don't 
> want this, so I would suggest removing it.
>  
> Regards,
>  
> Tim
> 
> Sent from my iPhone
> 
> On 5 Sep 2014, at 16:33, "Leschke, Scott" <[email protected]> wrote:
> 
> Question.  I think I need help with the use of the blueprint:comp JNDI 
> namespace.
>  
> If I have something like the following in a blueprint.xml, should I expect 
> that there be a JNDI name of the form:
> blueprint:comp/my-xface  ?
>  
>        <bean id="my-xface-impl"
>               class="com.my.xface.impl.XfaceImpl"/>
>  
>        <reference id="my-xface"
>                   component-name=" my-xface-impl "
>                   interface=" com.my.xface.Xface"/>
>  
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
> _______________________________________________
> OSGi Developer Mail List
> [email protected]
> https://mail.osgi.org/mailman/listinfo/osgi-dev
_______________________________________________
OSGi Developer Mail List
[email protected]
https://mail.osgi.org/mailman/listinfo/osgi-dev

Reply via email to