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.

Reply via email to