java 错误 javax.naming.NamingException
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/5242423/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Error javax.naming.NamingException
提问by BoloBolo
i new using j2ee, when i running this project using netbean 6.9 . I got this problem
我新使用 j2ee,当我使用 netbean 6.9 运行这个项目时。我遇到了这个问题
javax.naming.NamingException: Lookup failed for 'java:comp/env' in SerialContext [Root exception is javax.naming.NamingException: Invocation exception: Got null ComponentInvocation ]
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:442)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.askad.ap.util.ListReader.readPath(ListReader.java:34)
at com.askad.ap.util.ListReader.<init>(ListReader.java:29)
at com.askad.ap.facade.UserTransactionFacade.<init>(UserTransactionFacade.java:44)
at com.askad.ap.facade.__EJB31_Generated__UserTransactionFacade__Intf____Bean__.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.ejb.containers.BaseContainer.instantiateOptionalEJBLocalBusinessObjectImpl(BaseContainer.java:3801)
at com.sun.ejb.containers.StatelessSessionContainer.initializeHome(StatelessSessionContainer.java:248)
at com.sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.java:161)
at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.java:207)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:197)
at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.java:63)
at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.java:175)
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:216)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.execute(CommandRunnerImpl.java:305)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access0(CommandRunnerImpl.java:83)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.naming.NamingException: Invocation exception: Got null ComponentInvocation
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.getComponentId(GlassfishNamingManagerImpl.java:773)
at com.sun.enterprise.naming.impl.GlassfishNamingManagerImpl.lookup(GlassfishNamingManagerImpl.java:655)
at com.sun.enterprise.naming.impl.JavaURLContext.lookup(JavaURLContext.java:156)
at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:428)
... 48 more
when i click
当我点击
com.askad.ap.util.ListReader.readPath(ListReader.java:34)
NetBean give highlight to this line
NetBean 突出显示这一行
Context env = (Context) new InitialContext().lookup("java:comp/env");
Anyone know how to resolve this problem?And what cause this problem? Thx b4
有谁知道如何解决这个问题?导致这个问题的原因是什么?thx b4
回答by Vanessa Williams
From the stack trace, it looks like you're using Glassfish as your container. In the context.xml you should have one or more resources defined. Let's say you have one called jdbc/msql. Then you would refer to it using java:comp/env/jdbc/msql. It looks like you're referring to some null resource in that questionable line of code. Hth.
从堆栈跟踪来看,您似乎在使用 Glassfish 作为容器。在 context.xml 中,您应该定义了一个或多个资源。假设您有一个名为 jdbc/msql 的程序。然后您将使用 java:comp/env/jdbc/msql 引用它。看起来您指的是那行有问题的代码中的一些空资源。嗯。
回答by David
I have seen that exception when trying to access the java:comp/env namespace from a thread on which it was not accessible. I solved it by using a global identifier (e.g., just "jdbc/msql" instead of "java:comp/env/jdbc/msql").
我在尝试从无法访问的线程访问 java:comp/env 命名空间时看到了该异常。我通过使用全局标识符解决了它(例如,只是“jdbc/msql”而不是“java:comp/env/jdbc/msql”)。
You could also probably get the object once where you can (e.g., via @Resource injection) and then reference it from any thread.
您也可以在可能的地方(例如,通过@Resource 注入)获取一次对象,然后从任何线程引用它。
回答by user2091414
If you are getting this error in glassfish, try to look for the file sun-web.xml
.
It may happen if this file is missing.
如果您在 glassfish 中遇到此错误,请尝试查找文件sun-web.xml
. 如果缺少此文件,则可能会发生这种情况。