WebSphere JNDI search fails

I get below errors when I look up JNDI connection for jdbc data source:

javax.naming.ConfigurationException: The JNDI operation in the name "java:" cannot be completed because server runtime cannot associate the workflow with any component of the J2EE application. This condition may occur when a JNDI client using the name "java:" is not executed in the request flow for a server request. Make sure that the J2EE application does not perform JNDI operations with the names "java:" in the static blocks of code or in the threads created by this J2EE application. Such code does not necessarily run in the request stream for a server request and therefore is not supported by JNDI operations in the names "java:". [Javax.naming.NameNotFoundException root exception: Name not found in context "java:".]

My search code is inside a static method. This is the reason for this error. I do not create threads

It works in tomcat without any problems

thanks for the help

The code I use is as follows:

javax.naming.InitialContext ctx = new javax.naming.InitialContext(); Context cxt = (Context) ctx.lookup("java:/comp/env/"); 

Stacktrace:

 C1APP522 2 2013-07-01 21:57:18,332 ERROR DBUtil get EnvContext failed javax.naming.ConfigurationException: A JNDI operation on a "java:" name cannot be completed because the server runtime is not able to associate the operation thread with any J2EE application component. This condition can occur when the JNDI client using the "java:" name is not executed on the thread of a server application request. Make sure that a J2EE application does not execute JNDI operations on "java:" names within static code blocks or in threads created by that J2EE application. Such code does not necessarily run on the thread of a server application request and therefore is not supported by JNDI operations on "java:" names. [Root exception is javax.naming.NameNotFoundException: Name not found in context "java:".] at com.ibm.ws.naming.java.javaURLContextImpl.throwConfigurationExceptionWithDefaultJavaNS(javaURLContextImpl.java:428) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:399) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:220) at com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:160) at javax.naming.InitialContext.lookup(InitialContext.java:436) at com.test.integration.database.DBUtil_Ext.getEnvContext(DBUtil_Ext.java:121) at com.test.integration.database.DBUtil_Ext.getDataSource(DBUtil_Ext.java:102) at com.test.integration.database.DBUtil_Ext.getConnection(DBUtil_Ext.java:70) at com.test.integration.IntegrationTransportPlugin_Ext.send(IntegrationTransportPlugin_Ext.java:107) at com.test.integration.IntegrationTransportPlugin_Ext.send(IntegrationTransportPlugin_Ext.gs) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.test.system.integration.plugins.PluginProxy.invoke(PluginProxy.java:66) at $Proxy58.send(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.test.system.integration.plugins.PluginCallTraceImpl$PluginCallTraceHandler.invoke(PluginCallTraceImpl.java:61) at $Proxy58.send(Unknown Source) at com.test.system.integration.messaging.dispatch.MessageWriter$2.run(MessageWriter.java:347) at com.test.system.transaction.ScopedUserTransaction.run(ScopedUserTransaction.java:54) at com.test.system.transaction.TransactionManagerImpl.execute(TransactionManagerImpl.java:111) at com.test.system.integration.messaging.dispatch.AckHelper.executeMessageOperation(AckHelper.java:137) at com.test.system.integration.messaging.dispatch.AckHelper.executeMessageOperation(AckHelper.java:121) at com.test.system.integration.messaging.dispatch.MessageWriter.executeSendAndAfterSendInTxn(MessageWriter.java:332) at com.test.system.integration.messaging.dispatch.MessageWriter.sendNextMessage(MessageWriter.java:272) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.trySendMessage(MessageSenderRunnable.java:52) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.send(MessageSenderRunnable.java:42) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.run(MessageSenderRunnable.java:30) at com.test.system.integration.messaging.dispatch.MessageWriter$CatchesExceptionRunnable.run(MessageWriter.java:603) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:452) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314) at java.util.concurrent.FutureTask.run(FutureTask.java:149) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) at java.lang.Thread.run(Thread.java:736) Caused by: javax.naming.NameNotFoundException: Name not found in context "java:". at com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1837) at com.ibm.ws.naming.ipbase.NameSpace.lookupInternal(NameSpace.java:1166) at com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1095) at com.ibm.ws.naming.urlbase.UrlContextImpl.lookup(UrlContextImpl.java:1233) at com.ibm.ws.naming.java.javaURLContextImpl.lookup(javaURLContextImpl.java:395) ... 37 more C1APP522 2013-07-01 21:57:18,332 ERROR Messaging Exception in MessageSenderRunnable java.lang.RuntimeException: get EnvContext failed at com.test.integration.database.DBUtil_Ext.getEnvContext(DBUtil_Ext.java:125) at com.test.integration.database.DBUtil_Ext.getDataSource(DBUtil_Ext.java:102) at com.test.integration.database.DBUtil_Ext.getConnection(DBUtil_Ext.java:70) at com.test.integration.IntegrationTransportPlugin_Ext.send(IntegrationTransportPlugin_Ext.java:107) at com.test.integration.IntegrationTransportPlugin_Ext.send(IntegrationTransportPlugin_Ext.java) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.test.system.integration.plugins.PluginProxy.invoke(PluginProxy.java:66) at $Proxy58.send(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) at java.lang.reflect.Method.invoke(Method.java:611) at com.test.system.integration.plugins.PluginCallTraceImpl$PluginCallTraceHandler.invoke(PluginCallTraceImpl.java:61) at $Proxy58.send(Unknown Source) at com.test.system.integration.messaging.dispatch.MessageWriter$2.run(MessageWriter.java:347) at com.test.system.transaction.ScopedUserTransaction.run(ScopedUserTransaction.java:54) at com.test.system.transaction.TransactionManagerImpl.execute(TransactionManagerImpl.java:111) at com.test.system.integration.messaging.dispatch.AckHelper.executeMessageOperation(AckHelper.java:137) at com.test.system.integration.messaging.dispatch.AckHelper.executeMessageOperation(AckHelper.java:121) at com.test.system.integration.messaging.dispatch.MessageWriter.executeSendAndAfterSendInTxn(MessageWriter.java:332) at com.test.system.integration.messaging.dispatch.MessageWriter.sendNextMessage(MessageWriter.java:272) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.trySendMessage(MessageSenderRunnable.java:52) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.send(MessageSenderRunnable.java:42) at com.test.system.integration.messaging.dispatch.MessageSenderRunnable.run(MessageSenderRunnable.java:30) at com.test.system.integration.messaging.dispatch.MessageWriter$CatchesExceptionRunnable.run(MessageWriter.java:603) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:452) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314) at java.util.concurrent.FutureTask.run(FutureTask.java:149) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) at java.lang.Thread.run(Thread.java:736) 
0
source share
1 answer

Assuming you have a data source configured in WAS, you have two options:

a. During deployment, bind the data source in the namespace of the calling component and use the name starting with "java: comp / env /" to search. For example, to bind a data source for an entire web application, you would add the following to web.xml:

 <resource-ref> <res-ref-name>name_used_in_lookup</res-ref-name> <jndi-name>data_source_jndi_name</jndi-name> </resource-ref> 

name_used_in_lookup should be without the java part: comp / env /.

b. View the data source directly by JNDI name without using 'java: comp / env /'

+2
source

Source: https://habr.com/ru/post/948632/


All Articles