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 19:19:29 +0530

OK, thanks for clarifying about the deployment part.

You should be able to do this in your code:

org.jvnet.hk2.component.Habitat = org.jvnet.hk2.component.Habitat.class.cast(sCtx.getAttribute("org.glassfish.servlet.habitat"));


org.jvnet.hk2.component package is part of HK2 project, so you can set
up your maven dependency like this:

<dependency>
<groupId>com.sun.enterprise</groupId>
<artifactId>hk2</artifactId>
<version>RELEASE</version>
<scope>provided</scope>
<dependency>

Ensure that you have added http://download.java.net/maven/2 and
http://download.java.net/maven/1 as additional maven 2 and maven 1
repositories either in your pom.xml or in your maven settings.xml.

Thanks,
Sahoo

paulbrickell wrote:
> Sahoo,
>
> Sorry. You are of course right about the web service deployment. It's just a
> war file deployed in glassfish (atually I am debugging in Eclipse).
>
> I did try just dropping the bundle in the autodeploy-bundles dir, but it did
> not seem to start (I saw none of the logging from my BundleActivator.start
> method) . I suspect I might be behind on the build. I will pick up the
> latest nightly today.
>
> As described in my original post I have pulled the Habitat object from the
> app context. But I cannot cast it to the right type. I still do not know an
> appropriate maven dependency I can add to get it.
>
> Thanks for your help.
>
>
>
> Sahoo wrote:
>
>> 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.
>>>
>>>
>>>
>>>
>>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_glassfish.dev.java.net
>> For additional commands, e-mail: users-help_at_glassfish.dev.java.net
>>
>>
>>
>>
>
>