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.