2013-07-01 4 views
0

я получаю ниже ошибки, когда я отрываясь соединение JNDI для JDBC DataSource:Websphere JNDI поиск неудачен

javax.naming.ConfigurationException: операция по JNDI на «Java:» Имя не может быть завершена, поскольку сервер runtime не может связать поток операции с любым компонентом приложения J2EE. Это условие может возникнуть, когда клиент JNDI, использующий имя «java:», не выполняется в потоке запроса на серверный запрос. Убедитесь, что приложение J2EE не выполняет JNDI-операции с именами «java:» в статических блоках кода или в потоках, созданных этим приложением J2EE. Такой код не обязательно запускается в потоке запроса на серверный запрос и поэтому не поддерживается операциями JNDI в именах «java:». [Исключение корня javax.naming.NameNotFoundException: Имя не найдено в контексте «java:».]

Мой код поиска находится внутри статического метода. Это причина этой ошибки. Я не создавая никаких потоков

Он работает в коте без выпуска

Спасибо за вашу помощь

кода я использую что-то вроде ниже:

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's 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

В контексте того, какой компонент Java EE выполняется, поиск выполняется? – fnt

+0

Его источник данных jdbc, который я смотрю – sab

+0

Покажите нам весь путь кода – Jukka

ответ

2

Предполагая, что источник данных настроен в WAS, у вас есть два варианта:

a. Во время развертывания свяжите источник данных в пространстве имен вызывающего компонента и используйте имя, начинающееся с «java: comp/env /» для поиска. Например, чтобы связать источник данных для всего веб-приложения, вы должны добавить следующие строки в 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 должен быть без «Java: комп/ENV /» части.

b. Посмотрите источник данных непосредственно по имени JNDI без использования «java: comp/env /»

+0

Можете ли вы мне помочь с первым вариантом. Как связать его в websphere. Могу ли я его настроить где-то в консоли администратора – sab

+0

@sab Я обновил ответ – fnt

+0

Спасибо, что вам кажется, что работает – sab

Смежные вопросы