Ошибка поиска JNDI в потоке, созданном приложением J2EE/JCR в WAS 8.0.0.4, работающем на Red Hat Enterprise Server 5.8 (2.6.18-308.e15)

Сбой поиска JNDI в потоке, созданном приложением J2EE/JCR в WAS 8.0.0.4, работающем на Red Hat Enterprise Server 5.8 (2.6.18-308.e15).

Я использую репозиторий Jackrabbit (реализация jcr) в качестве серверной части в своем веб-приложении. Чьи данные сохраняются в базе данных Oracle. Чтобы установить соединение с базой данных Oracle, jackrabbit предоставит JNDI Lookup для чтения источника данных, определенного в WAS (используя WAS 8.0.0.4 в качестве сервера приложений). Я могу выполнять поиск JNDI везде в своем приложении, но в потоке, где я создаю поток с использованием Java Concurrent Api и внутри метода call() потока, когда я пытаюсь использовать JNDI Look, возникает следующее исключение —

Контекст java:comp/env доступен только внутри вашего приложения Java EE, где вы определили свои ресурсы в файле web.xml.


person ZeeshanKhan    schedule 08.09.2013    source источник


Ответы (1)


Если вы создаете отдельный поток, который пытается найти тот же ресурс, в вашем случае источник данных, поток запускается вне контекста Java EE вашего приложения и определений ресурсов в нем.

Вы можете решить это либо с помощью

найдите источник данных, пока вы находитесь в контексте приложения Java EE, а затем сохраните ссылку на него, к которой может получить доступ ваш поток, поэтому потоку не нужно его искать.

  1. найдите источник данных без использования контекста java:comp/env
  2. [8/20/13 10:57:35:163 IST] 000000dd System Out O ОШИБКА 20-08 10:57:35,163 (DatabaseFileSystem.java:init:209) не удалось инициализировать файловую систему javax.jcr.RepositoryException: имя JNDI не найдено: java:comp/env/jdbc/ofsds в org.apache.jackrabbit.core.util.db.ConnectionFactory.getJndiDataSource(ConnectionFactory.java:295) в org.apache.jackrabbit.core.util.db.ConnectionFactory. createDataSource(ConnectionFactory.java:233) в org.apache.jackrabbit.core.util.db.ConnectionFactory.getDataSource(ConnectionFactory.java:166) в org.apache.jackrabbit.core.fs.db.DbFileSystem.getDataSource(DbFileSystem. java:226) в org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:190) в org.apache.jackrabbit.core.config.RepositoryConfigurationParser$6.getFileSystem(RepositoryConfigurationParser.java:1057) в org.apache.jackrabbit.core.config.RepositoryConfig. getFileSystem(RepositoryConfig.java:911) по адресу org.apache.jackrabbit.core.RepositoryImpl.(RepositoryImpl.java:285) по адресу org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:605) по адресу org.apache. jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:232) в org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:280) в org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java :376) в com.mmpnc.icm.server.repository.RepositoryStartupService.newSession(RepositoryStartupService.java:408) в com.mmpnc.icm.server.repository.RepositoryStartupService.newSession(RepositoryStartupService.java:355) в sun.reflect. NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) в sun.reflect.De legatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) в java.lang.reflect.Method.invoke(Method.java:611) в org.jboss.seam.util.Reflections.invoke(Reflections.java:22) в org.jboss .seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) в org.jboss.seam.transaction. RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) в org .jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) в org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor .java:166) в org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102) в com.mmpnc.icm.server.repository.RepositoryStartupService_$$_javassist_1.newSession(RepositoryStartupService_$$_javassist_1.java) в com.mmpnc.icm.server.repository.ICMHouseKeepingSessionManager.create(ICMHouseKeepingSessionManager.java:37) в sun.reflect.Nat iveMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) в java.lang.reflect.Method.invoke(Method. java:611) в org.jboss.seam.util.Reflections.invoke(Reflections.java:22) в org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31) в org.jboss.seam.intercept .SeamInvocationContext.proceed(SeamInvocationContext.java:56) в org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamIn vocationContext.java:68) в org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam .intercept.RootInterceptor.invoke(RootInterceptor.java:107) в org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166) в org.jboss.seam.intercept. JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102) в com.mmpnc.icm.server.repository.ICMHouseKeepingSessionManager_$$_javassist_8.create(ICMHouseKeepingSessionManager_$$_javassist_8.java) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) на солнце. Reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) в java.lang.reflect.Method.invoke(Method.java:611) в org.jboss.seam .util.Reflections.invoke(Reflections.java:22) в org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:138) в org.jboss.seam.Component.callComponentMethod(Component.java:2171) в org.jboss.seam.Component.callCreateMethod(Component.java:2094) в org.jboss.seam.Component.newInstance(Component.java:2054) в org.jboss.s eam.Component.getInstance(Component.java:1948) в org.jboss.seam.Component.getInstance(Component.java:1910) в org.jboss.seam.Component.getInstance(Component.java:1904) в org.jboss .seam.Component.getInstanceInAllNamespaces(Component.java:2271) в org.jboss.seam.Component.getValueToInject(Component.java:2223) в org.jboss.seam.Component.injectAttributes(Component.java:1663) в org. jboss.seam.Component.inject(Component.java:1481) в org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java: 68) на org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) на org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) на org.jboss.seam.intercept.Roo tInterceptor.invoke(RootInterceptor.java:107) в org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166) в org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102) в com .mmpnc.icm.server.repository.ICMHouseKeepingRepository_$$_javassist_7.create(ICMHouseKeepingRepository_$$_javassist_7.java) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37) в java.lang.reflect.Method.invoke(Method.java:611) в org.jboss.seam.util .Reflections.invoke(Reflections.java:22) в org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:138) в org.jboss.seam.Component.callComponentMethod(Component.java:2171) в org. jboss.seam.Component.callCreateMethod(Component.java:2094) в org.jboss.seam.Component.newInstance(Component.java:2054) в org.jboss.seam.Component.getInstance(Component.java:1948) в org. .jboss.seam.Component.getInstance(Component.java:1910) в org.jboss.seam.Component.getInstance(Component.java:1904) в org.jboss.seam.Component.getInstanceInAllNamespaces(Component.java:2271) в орг.jboss .seam.Component.getValueToInject(Component.java:2223) в org.jboss.seam.Component.injectAttributes(Component.java:1663) в org.jboss.seam.Component.inject(Component.java:1481) в org. jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor. java:44) в org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) в org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) в org.jboss.seam.intercept .JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166) в org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102) в com.mmpnc.icm.server.repository.ICMHouseK eepingManager_$$_javassist_6.create(ICMHouseKeepingManager_$$_javassist_6.java) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) в sun.reflect.DelegatingMethodAccessorImpl.invoke0 ДелегированиеMethodAccessorImpl.java:37) в java.lang.reflect.Method.invoke(Method.java:611) в org.jboss.seam.util.Reflections.invoke(Reflections.java:22) в org.jboss.seam.util . Reflections.invokeAndWrap(Reflections.java:138) в org.jboss.seam.Component.callComponentMethod(Component.java:2171) в org.jboss.seam.Component.callCreateMethod(Component.java:2094) в org.jboss.seam .Component.newInstance(Component.java:2054) в org.jboss.seam.Component.getInstance(Component.java:1948) в org.jboss.seam.Component.getInstance(Component.java:1910) в org.jboss. seam.Component.getInstance(Component.java:1904) в org.jboss.seam.Component.getInstance(Component.java:1899) в com.mmpnc.icm.server.concurrent.PerformCloseTask.call(PerformCloseTask.java:136) в com.mmpnc.icm.server.concurrent.PerformCloseTask.call(PerformCloseTask.java:1) в java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:314) в java.util.concurrent.FutureTask.run (FutureTask.java:149) на java.util.concurrent. ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:897) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:919) в java.lang.Thread.run(Thread.java:770) Вызвано: javax .naming.ConfigurationException: операция JNDI с именем "java:" не может быть завершена, поскольку среда выполнения сервера не может связать поток операции с каким-либо компонентом приложения J2EE. Это условие может возникнуть, когда клиент JNDI, использующий имя «java:», не выполняется в потоке запроса серверного приложения. Убедитесь, что приложение J2EE не выполняет операции JNDI с именами "java:" в статических блоках кода или в потоках, созданных этим приложением J2EE. Такой код не обязательно выполняется в потоке запроса серверного приложения и, следовательно, не поддерживается операциями JNDI с именами "java:". [Корневое исключение — javax.naming.NameNotFoundException: имя comp/env/jdbc не найдено в контексте "java:".] в com.ibm.ws.naming.java.javaURLContextImpl.throwExceptionIfDefaultJavaNS(javaURLContextImpl.java:522) в com. ibm.ws.naming.java.javaURLContextImpl.throwConfigurationExceptionWithDefaultJavaNS(javaURLContextImpl.java:552) по адресу com.ibm.ws.naming.java.javaURLContextImpl.lookupExt(javaURLContextImpl.java:481) по адресу com.ibm.ws.naming.java. javaURLContextRoot.lookupExt(javaURLContextRoot.java:485) по адресу com.ibm.ws.naming.java.javaURLContextRoot.lookup(javaURLContextRoot.java:370) по адресу org.apache.aries.jndi. DelegateContext.lookup(DelegateContext.java:161) в javax.naming.InitialContext.lookup(InitialContext.java:436) в org.apache.jackrabbit.core.util.db.ConnectionFactory.getJndiDataSource(ConnectionFactory.java:280) .. Еще 114 Причина: javax.naming.NameNotFoundException: Имя comp/env/jdbc не найдено в контексте "java:". в com.ibm.ws.naming.ipbase.NameSpace.getParentCtxInternal(NameSpace.java:1969) в com.ibm.ws.naming.ipbase.NameSpace.retrieveBinding(NameSpace.java:1376) в com.ibm.ws.naming .ipbase.NameSpace.lookupInternal(NameSpace.java:1219) по адресу com.ibm.ws.naming.ipbase.NameSpace.lookup(NameSpace.java:1141) по адресу com.ibm.ws.naming.urlbase.UrlContextImpl.lookupExt(UrlContextImpl .java:1436) по адресу com.ibm.ws.naming.java.javaURLContextImpl.lookupExt(javaURLContextImpl.java:477) ... еще 119
person DanielBarbarian    schedule 09.09.2013