引起的:javax.naming.NameNotFoundException - Name [Class / object]在此上下文中未绑定 [英] Caused by: javax.naming.NameNotFoundException - Name [Class/object] is not bound in this Context
问题描述
我正在开发一个使用JSF / Tomcat 7 / Maven的动态Web项目/ Java 7
每当我在服务器上运行项目,我得到这个:
javax.naming.NameNotFoundException:Name [.... ProjectManagement / service]在此上下文中未绑定。无法找到[de.hhn.team3.artzpraxismanagement.ProjectManagement]。
在org.apache.naming.NamingContext.lookup(NamingContext.java:820)
在org.apache.naming.NamingContext.lookup(NamingContext.java:168)
在org.apache .catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:580)
在org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:470)
在org.apache.catalina.core .DefaultInstanceManager.newInstance(DefaultInstanceManager.java:157)
在org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
在org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider .postConstruct(Tomcat7AnnotationLifecycleProvider.java:90)
在org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:213)
在org.apache.myfaces.el.unified.resolver.ManagedBeanResolver .createManagedBean(ManagedBeanResolver.java:333)
在org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBean Resolver.java:296)
在javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
在org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java: 169)
在org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65)
在org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:123)
在javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
在org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:169)
在org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
在org.apache.el.parser.AstValue.getValue(AstValue.java:161)
在org.apache .el.parser.AstEqual.getValue(AstEqual.java:38)
在org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185)
在org.apache.myfaces.view.facelets .el.ContextAwareTagValueExpression.getValue(ContextAwareTagV alueExpression.java:96)
在javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:263)
在javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1089)
在javax.faces.component.UIComponent.encodeAll(UIComponent.java:733)
在javax.faces.component.UIComponent.encodeAll(UIComponent.java:758)
在javax.faces.component .UIComponent.encodeAll(UIComponent.java:758)
在org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1900)
在org.apache.myfaces.application.ViewHandlerImpl .renderView(ViewHandlerImpl.java:285)
在org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115)
在org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl .java:241)
在javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)
在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
在org。 apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
在org.apache.catalina。 core.StandardContextValve.invoke(StandardContextValve.java:123)
在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
在org.apache.catalina.core.StandardHostValve。 invoke(StandardHostValve.java:171)
在org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve。 java:947)
在org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
在org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:589)
在org.apache.tomcat.util.net.JIoEndpoint $ SocketProcessor.run(JIoEndpoint.java:310)
在java.util.concurrent.ThreadPoolExecutor.runWorker(未知源)
在java.util。 concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)
在java.lang.Thread.run(未知来源)
这里是我的Class ProjectManagement
包... artzpraxismanagement;
@Named
@ManagedBean
@SessionScoped
public class ProjectManagement实现Serializable {
private static final long serialVersionUID = 1L;
@EJB私人服务服务;
和我的服务类
@ManagedBean
@SessionScoped
@Local
public class Services implements Serializable {...}
< blockquote>
我已经尝试过不同的解决方案,比如在WebContent / lib中删除Tomcat Jars,但没有帮助。
我猜我的
ProjectManagement
类不在context.xml中。
我该怎么做? >
解决方案默认情况下,EJB和CDI在Tomcat中不起作用,因为Tomcat只是一个Servlet容器。如果要使用它们,则必须将应用程序部署在真正的Java EE应用程序服务器上,例如 JBoss 7 , GlassFish 3 或 TomEE (请注意,这些是免费的,还有其他类似IBM WebSphere和Oracle WebLogic是Java EE 6应用程序服务器,但必须支付才能获取/使用它们)。如果您继续在Tomcat中部署,您将永远不会成功。
如果您仍然只想使用Tomcat,则可以将所有这些
@ EJB
和其他Java EE注释(例如CDI注释,如@Named
)。
顺便说一句,请遵循一个关于JSF或CDI的精通教程。您不能同时以$
@Named
和@ManagedBean
的形式装饰。have a problem that am dealing with since 6 hours but don't get to solve it.
Am developping a Dynamic web project using JSF/Tomcat 7/ Maven/Java 7
Everytime I run the project on the server I get this:
javax.naming.NameNotFoundException: Name [....ProjectManagement/service] is not bound in this Context. Unable to find [de.hhn.team3.artzpraxismanagement.ProjectManagement]. at org.apache.naming.NamingContext.lookup(NamingContext.java:820) at org.apache.naming.NamingContext.lookup(NamingContext.java:168) at org.apache.catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:580) at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:470) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:157) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150) at org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider.postConstruct(Tomcat7AnnotationLifecycleProvider.java:90) at org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:213) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:333) at org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:296) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:169) at org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65) at org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:123) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67) at org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:169) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72) at org.apache.el.parser.AstValue.getValue(AstValue.java:161) at org.apache.el.parser.AstEqual.getValue(AstEqual.java:38) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:263) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1089) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:733) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:758) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:758) at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.renderView(FaceletViewDeclarationLanguage.java:1900) at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:285) at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:115) at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
here is my Class ProjectManagement
package ...artzpraxismanagement; @Named @ManagedBean @SessionScoped public class ProjectManagement implements Serializable { private static final long serialVersionUID = 1L; @EJB private Services service;
and my Service Class
@ManagedBean
@SessionScoped @Local public class Services implements Serializable {...}
I have tried different solution like delete Tomcat Jars in WebContent/lib but it doesn't help.
I guess my
ProjectManagement
class is not bounded in the context.xml.How can I do that please?
解决方案EJBs and CDI don't work in Tomcat by default since Tomcat is just a Servlet Container. If you want to use them you must deploy your application on a real Java EE application server like JBoss 7, GlassFish 3 or TomEE (note that these are free, there are others like IBM WebSphere and Oracle WebLogic that are Java EE 6 application servers but you must pay in order to acquire/use them). If you keep deploying this in Tomcat, you will never succeed.
If you still want to use Tomcat only, then get rid of all those
@EJB
and other Java EE annotations (e.g. CDI annotations like@Named
).By the way, please follow a good sane tutorial on JSF or CDI. You can't have a bean decorated as
@Named
and@ManagedBean
at the same time.这篇关于引起的:javax.naming.NameNotFoundException - Name [Class / object]在此上下文中未绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!