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 > ]]
