Hi Chandler,
The mystery is not why this fails when the server is restarted but
rather why it works when deployed from the console :-)
GBeans are not javaee components and so they don't have java:comp jndi
contexts available to them. If you do something with a gbean such as
starting it from a javaee app such as the console, the gbean will see
the java:comp context of the calling app, not the java:comp context of
the (possibly javaee) app in which the gbean is deployed.
Do you have control over what oracle is trying to look up in jndi?
Ideally Oracle should supply a j2ca resource adapter for their
messaging stuff. Do you know what they actually do supply? jms? Do
you need to use mdbs or just "plain" jms connections? I think I
recall comments in the activemq j2ca adapter that it was pretty much
jms implementation neutral, you might be able to modify it to wrap the
oracle jms implementation without much work.
thanks
david jencks
On Jun 25, 2009, at 2:44 AM, chander_bawa wrote:
>
> Hi,
> I have deployed an ear application on geronimo server and am facing a
> strange issue. After starting the server, i deploy the ear and it
> works
> perfectly. Its a messaging application with oracle queues
> integrated with
> JMS broker using Gbeans and listener classes.
>
> When the server is restarted, the application gets deployed but it
> is not
> able to establish connection with the oracle queue which it could do
> so when
> the application was deployed for the first time.
>
> The error that i get is -
> java.lang.NullPointerException: You have accessed the java:comp jndi
> context
> on a thread that has not initialized it
>
> Strangely, when i restart the application from admin console,
> everything
> works!
>
> I want to know what is the difference in container's behaviour when
> server
> is restarted and when an application is restarted. It will be great
> if you
> find a flaw in code written or in case you anticipate one, please do
> let me
> know.
> Expecting a prompt response...
>
>
> Following is the piece of code which fails when the server is
> started again
> -
>
> i_recvrQueueConn =
> oracle
> .jms.AQjmsQueueConnectionFactory.createQueueConnection( i_dbConnection
> );
> i_recvrQueueConn.start();
> i_recvrQueueSession = i_recvrQueueConn.createSession(false,
> Session.AUTO_ACKNOWLEDGE);
>
> In the createSession statement, i get the following error -
>
> java.lang.NullPointerException: You have accessed the java:comp jndi
> context
> on a thread that has not initialized it
> at
> org
> .apache
> .geronimo
> .gjndi.JavaCompContextGBean.getContext(JavaCompContextGBean.java:34)
> at
> org
> .apache
> .xbean.naming.context.ContextFlyweight.lookup(ContextFlyweight.java:
> 47)
> at
> org
> .apache
> .xbean
> .naming
> .context
> .ContextFederation.getFederatedBinding(ContextFederation.java:69)
> at
> org
> .apache
> .xbean
> .naming
> .context
> .AbstractFederatedContext.getBinding(AbstractFederatedContext.java:63)
> at
> org
> .apache
> .xbean.naming.context.AbstractContext.lookup(AbstractContext.java:139)
> at
> org
> .apache
> .xbean.naming.context.AbstractContext.lookup(AbstractContext.java:625)
> at
> org
> .apache
> .xbean.naming.context.AbstractContext.lookup(AbstractContext.java:162)
> at
> org
> .apache
> .xbean.naming.context.AbstractContext.lookup(AbstractContext.java:611)
> at javax.naming.InitialContext.lookup(InitialContext.java:392)
> at oracle.jms.EmulatedXAHandler.<init>(EmulatedXAHandler.java:69)
> at oracle.jms.AQjmsSession.<init>(AQjmsSession.java:378)
> at oracle.jms.AQjmsConnection.createSession(AQjmsConnection.java:
> 1132)
> at ltc.vise.hl7.gbean.OracleAQListener.<init>(OracleAQListener.java:
> 101)
> at ltc.vise.hl7.gbean.OracleAQProxy.doStart(OracleAQProxy.java:103)
> at
> org
> .apache
> .geronimo
> .gbean.runtime.GBeanInstance.createInstance(GBeanInstance.java:998)
> at
> org
> .apache
> .geronimo
> .gbean
> .runtime.GBeanInstanceState.attemptFullStart(GBeanInstanceState.java:
> 268)
> at
> org
> .apache
> .geronimo
> .gbean.runtime.GBeanInstanceState.start(GBeanInstanceState.java:102)
> at
> org
> .apache
> .geronimo
> .gbean
> .runtime.GBeanInstanceState.startRecursive(GBeanInstanceState.java:
> 124)
> at
> org
> .apache
> .geronimo
> .gbean.runtime.GBeanInstance.startRecursive(GBeanInstance.java:555)
> at
> org
> .apache
> .geronimo
> .kernel.basic.BasicKernel.startRecursiveGBean(BasicKernel.java:379)
> at
> org
> .apache
> .geronimo
> .kernel
> .config
> .ConfigurationUtil.startConfigurationGBeans(ConfigurationUtil.java:
> 456)
> at
> org
> .apache
> .geronimo
> .kernel
> .config
> .KernelConfigurationManager.start(KernelConfigurationManager.java:188)
> at
> org
> .apache
> .geronimo
> .kernel
> .config
> .SimpleConfigurationManager
> .startConfiguration(SimpleConfigurationManager.java:563)
> at sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
> at
> sun
> .reflect
> .DelegatingMethodAccessorImpl
> .invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org
> .apache
> .geronimo
> .gbean
> .runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:
> 34)
> at
> org
> .apache
> .geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
> at
> org
> .apache
> .geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:832)
> at
> org.apache.geronimo.gbean.runtime.RawInvoker.invoke(RawInvoker.java:
> 57)
> at
> org
> .apache
> .geronimo
> .kernel.basic.RawOperationInvoker.invoke(RawOperationInvoker.java:35)
> at
> org
> .apache
> .geronimo
> .kernel
> .basic.ProxyMethodInterceptor.intercept(ProxyMethodInterceptor.java:
> 96)
> at
> org.apache.geronimo.gbean.GBeanLifecycle$$EnhancerByCGLIB$
> $36339902.startConfiguration(<generated>)
> at
> org
> .apache
> .geronimo.system.main.EmbeddedDaemon.doStartup(EmbeddedDaemon.java:
> 162)
> at
> org
> .apache
> .geronimo.system.main.EmbeddedDaemon.execute(EmbeddedDaemon.java:79)
> at
> org
> .apache
> .geronimo
> .kernel
> .util
> .MainConfigurationBootstrapper
> .main(MainConfigurationBootstrapper.java:45)
> at org.apache.geronimo.cli.AbstractCLI.executeMain(AbstractCLI.java:
> 67)
> at org.apache.geronimo.cli.daemon.DaemonCLI.main(DaemonCLI.java:30)
>
>
>
> Thanks,
> Chander
> --
> View this message in context:
http://www.nabble.com/Difference-between-server-restart-and-application-restart-tp24200158s134p24200158.html> Sent from the Apache Geronimo - Users mailing list archive at
> Nabble.com.
>