users@glassfish.java.net

Re: Can a web service deployed in Grizzly access Felix

From: Sahoo <Sahoo_at_Sun.COM>
Date: Wed, 20 May 2009 18:32:30 +0530

Paul,

1. You don't have to modify Felix config file. You can drop your OSGi
bundle in domain1/autodeploy-bundles dir and it will be automatically
started when server starts. Please use the latest nightly build as I
fixed an important bug around this.

2. What do you mean by deploying a web service in Grizzly? Can you tell
us how you packaged your web service and how you deployed such a thing?
Did you really mean GlassFish or Grizzly?

3. All the registered OSGi services can be accessed via Habitat object.
The OSGi service interface names are mapped to contract names in Habitat.
e.g., if you have an OSGi service Foo.class which implements I1 and I2,
then you can access it via Habitat.getByContract(I1 or I2.class)

Thanks,
Sahoo

paulbrickell wrote:
> I don't know if this is a silly question, but I am having some fundamental
> issues understanding the Glassfish v3 architecture and could use a pointer.
>
> I have created a bundle and added an entry in the glassfish/felix.conf e.g.
>
> file:///home/me/myworkspace/my-bundle/target/my-bundle-1.0-SNAPSHOT.jar
>
> I see this bundle starting and all is well. It opens a socket to which I can
> connect and exchange data, which is nice. The reason I created a bundle and
> not a H2K module is that I want it to be activated at server start-up time.
> I could not see a way of doing this with H2K. Maybe I missed something.
>
>
> Now I want to reference this service from a web service that I have deployed
> in Grizzly. I simply cannot figure out how to do this. The docs do not
> really cover this, which leads me to believe I am doing something
> fundamentally wrong.
>
> Do Felix and Grizzly share any kind of context or is there a static way to
> access the Felix services from a web application deployed in Grizzly?
>
> I have tried this....
>
> wsContext.getMessageContext();
> ServletContext sCtx = (ServletContext)
> mc.get(MessageContext.SERVLET_CONTEXT);
> Object habitat = sCtx.getAttribute("org.glassfish.servlet.habitat");
>
> This, I believe, gets me a reference to the H2K habitat, but my bundle is an
> OSGi bundle deployed in Felix, not an H2K service. Can I navigate to my
> bundle through this habitat? Is it right to try? If so is there a maven
> dependency I need to pick up the Habitat class as I cannot seem to find it
> anywhere.
>
> I would appreciate any pointers. TIA.
> Paul B.
>
>
>
>