Hi rakesh,

You really want to make the integration two-way. You want the Aries
JNDI code to use the underlying glassfish JNDI implementation, and
similarly you want the underlying glassfish implementation to see the
services/objects added by Aries JNDI (which start with the
osgi:service prefix).

You can do that as follows (it's a while since I did this, so I might
have forgotten a thing or two):
* You need to tell Aries about the underlying JNDI implementation by
registering its implementation of the
javax.naming.spi.InitialContextFactoryBuilder interface an OSGi
service. See section 126.5.1 of the OSGi/JNDI spec [1].
* You need to write some glue code that listens to OSGi services
registered under the javax.naming.spi.ObjectFactory objectClass. You
then need to add these ObjectFactories to your JNDI implementation to
make it aware of the osgi: naming scheme. I'm not sure whether there
is a standard API for this, in JBoss I think we used an internal JBoss
method to achieve this...

The above can be done in a separate bundle with a little bit of glue code.

Hope this helps,

David

[1] http://www.osgi.org/Download/Release5

On 17 October 2013 19:55, rakesh goyal <[email protected]> wrote:
> Since Glassfish has got its own osgi jndi, I am not sure how to make apache
> aries JNDI work in glassfish server.
>
> I am trying to deploy apache aries blog example with Glassfish v4 but
> getting following exception:
>
> [2013-10-18T00:03:59.949+0530] [glassfish 4.0] [SEVERE] [] [] [tid:
> _ThreadID=27 _ThreadName=Thread-5] [timeMillis: 1382034839949] [levelValue:
> 1000] [[
>   javax.naming.NamingException: Lookup failed for
> 'osgi:service/org.apache.aries.samples.blog.api.BloggingService' in
> SerialContext[myEnv={java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,
> java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is
> javax.naming.NameNotFoundException: osgi:service]
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
>     at javax.naming.InitialContext.lookup(InitialContext.java:411)
>     at javax.naming.InitialContext.lookup(InitialContext.java:411)
>     at
> org.apache.aries.samples.blog.web.util.JNDIHelper.getBloggingService(JNDIHelper.java:33)
>     at org.apache.aries.samples.blog.web.ViewBlog.doGet(ViewBlog.java:53)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>     at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
>     at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
>     at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
>     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
>     at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
>     at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
>     at
> org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
>     at
> org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
>     at
> org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
>     at
> org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
>     at
> org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
>     at
> org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
>     at
> org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
>     at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
>     at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
>     at java.lang.Thread.run(Thread.java:744)
> Caused by: javax.naming.NameNotFoundException: osgi:service
>     at
> com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:299)
>     at
> com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:207)
>     at
> com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:66)
>     at
> com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:114)
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:478)
>     ... 34 more]]
>
> [2013-10-18T00:03:59.958+0530] [glassfish 4.0] [WARNING] []
> [javax.enterprise.web] [tid: _ThreadID=27 _ThreadName=http-listener-1(4)]
> [timeMillis: 1382034839958] [levelValue: 900] [[
>   StandardWrapperValve[View Blog]: Servlet.service() for servlet View Blog
> threw exception
> java.io.IOException: Blogging service resolution failed
>     at
> org.apache.aries.samples.blog.web.util.JNDIHelper.getBloggingService(JNDIHelper.java:37)
>     at org.apache.aries.samples.blog.web.ViewBlog.doGet(ViewBlog.java:53)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
>     at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
>     at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
>     at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
>     at
> org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
>     at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
>     at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
>     at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
>     at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
>     at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
>     at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
>     at
> org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
>     at
> org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
>     at
> org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
>     at
> org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
>     at
> org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
>     at
> org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
>     at
> org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
>     at
> org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
>     at
> org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
>     at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
>     at
> org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
>     at java.lang.Thread.run(Thread.java:744)
> Caused by: javax.naming.NamingException: Lookup failed for
> 'osgi:service/org.apache.aries.samples.blog.api.BloggingService' in
> SerialContext[myEnv={java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl,
> java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is
> javax.naming.NameNotFoundException: osgi:service]
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:491)
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:438)
>     at javax.naming.InitialContext.lookup(InitialContext.java:411)
>     at javax.naming.InitialContext.lookup(InitialContext.java:411)
>     at
> org.apache.aries.samples.blog.web.util.JNDIHelper.getBloggingService(JNDIHelper.java:33)
>     ... 30 more
> Caused by: javax.naming.NameNotFoundException: osgi:service
>     at
> com.sun.enterprise.naming.impl.TransientContext.resolveContext(TransientContext.java:299)
>     at
> com.sun.enterprise.naming.impl.TransientContext.lookup(TransientContext.java:207)
>     at
> com.sun.enterprise.naming.impl.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:66)
>     at
> com.sun.enterprise.naming.impl.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:114)
>     at
> com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:478)
>     ... 34 more
> ]]

Reply via email to