felix-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Justin Edelson <jus...@justinedelson.com>
Subject Re: activator with dependency injection for service
Date Wed, 30 May 2012 10:57:35 GMT
Hi,

On Wed, May 30, 2012 at 12:20 AM, miten mehta <imiten@yahoo.com> wrote:

> Hi,
>
> I modified code as you suggested.  Removed the activator logic and
> converted it into simple bean.  The bundle when starts it does activate the
> spring framework which instantiates the beans and does DI.  The client bean
> is now POJO and its instantiated upon bundle start and destroyed on bundle
> stop.  Also the service reference is being set fine.
>
> Now I have question on usage of osgi container like felix.  can I use it
> as middle tier for ejbs like the service bean made available to tomcat
> instance running outside felix via jndi lookup ?
>

This is possible, although I don't think you can do it with Tomcat. The
steps required are:

1) Have the system bundle export the packages containing any service
interfaces you are going to export via JNDI.
2) Have some bridge code running inside Felix:
  a) obtains an appropriate InitialContext object
  b) finds services from the service registry and binds them in the
InitialContext

Your bridge code will likely need to be a service listener so that it
correctly unbinds services when they go away. I used DS for this; I imagine
there's a way to do it with Spring DM as well.

The problem with Tomcat is that its JNDI context is read-only. The steps
above obviously require a global writeable context.

Regards,
Justin


>
> Regards,
>
> Miten.
>
>
>
> ________________________________
>  From: Chetan Mehrotra <chetan.mehrotra@gmail.com>
> To: miten mehta <imiten@yahoo.com>
> Cc: "users@felix.apache.org" <users@felix.apache.org>
> Sent: Tuesday, May 29, 2012 3:54 PM
> Subject: Re: activator with dependency injection for service
>
>
> Not sure about your usecase here. But as I said you can configure Spring
> call any method of the ActivatorClient class of yours upon bean factory
> initialization which would happen once your bundle is activated. And in
> that call you can perform required invocation
> Chetan Mehrotra
>
>
>
> On Tue, May 29, 2012 at 10:36 AM, miten mehta <imiten@yahoo.com> wrote:
>
> Hi,
> >
> >
> >Then how will I invoke the bean ? I thought that if I start/stop module
> the activator start/stop happens and I can then invoke the remote method
> from service reference in activator.
> >
> >
> >Basically I have trying to write a client bean which can do a call to
> another osgi module service (spring dm bean).
> >
> >
> >Regards,
> >
> >
> >Miten.
> >
> >
> >
> >________________________________
> > From: Chetan Mehrotra <chetan.mehrotra@gmail.com>
> >To: users@felix.apache.org; miten mehta <imiten@yahoo.com>
> >Sent: Tuesday, May 29, 2012 9:22 AM
> >Subject: Re: activator with dependency injection for service
> >
> >
> >
> >The activator instance is created by OSGi framework itself outside of
> Spring. Hence you would not be able to access services via DI. The one
> created through your entry in spring cofig is a different instance. Instead
> you can remove activator entry from your pom.xml and rely on Spring itself
> to call lifecycle methods like init and destroy
> >
> ><bean id="client" class="org.springframework.
> >osgi.samples.ActivatorClient" scope="singleton" init="activate"
> destroy="deactivate">
> >   <property name="service" ref="simpleServiceOsgi"/>
> ></bean>
> >
> >Chetan Mehrotra
> >
> >
> >
> >On Mon, May 28, 2012 at 10:17 PM, miten mehta <imiten@yahoo.com> wrote:
> >
> >Hi,
> >>
> >>I am trying to use spring dm in felix for doing a client module with
> activator in which I wanting to do dependency injection of service.  I am
> not getting the service set.  It gives Null pointer.  could one guide if I
> am doing things right ?
> >>
> >>
> >>spring/bean_config.xml
> >>------------------------
> >>
> >><?xml version="1.0" encoding="UTF-8"?>
> >><beans xmlns="http://www.springframework.org/schema/beans"
> >>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >>  xmlns:osgi="http://www.springframework.org/schema/osgi"
> >>  xsi:schemaLocation="http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
> >>                      http://www.springframework.org/schema/osgi
> http://www.springframework.org/schema/osgi/spring-osgi.xsd">
> >>
> >>
> >>
> >>  <osgi:reference id="simpleServiceOsgi"
> interface="org.springframework.osgi.samples.simpleservice.MyService"></osgi:reference>
> >>
> >><bean id="client"
> class="org.springframework.osgi.samples.ActivatorClient" scope="singleton">
> >>   <property name="service" ref="simpleServiceOsgi"/>
> >></bean>
> >>
> >></beans>
> >>
> >>
> >>pom.xml snippet:
> >>-----------------
> >><plugin>    <!-- (2) START -->
> >>                <groupId>org.apache.felix</groupId>
> >>                <artifactId>maven-bundle-plugin</artifactId>
> >>                <extensions>true</extensions>
> >>                <configuration>
> >>                    <instructions>
> >>                        <!--
> >Export-Package>org.springframework.osgi.samples.simpleservice</Export-Package
> -->
> >>
> >>
> <Private-Package>org.springframework.osgi.samples</Private-Package>
> >>
> <Bundle-Activator>org.springframework.osgi.samples.ActivatorClient</Bundle-Activator>
> >>
> >>                    </instructions>
> >>                </configuration>
> >>            </plugin>
> >
> >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message