当前位置: 首页 > 知识库问答 >
问题:

javax。命名。NameNotFoundException:名称[comp/env]在此上下文中未绑定

柴高岑
2023-03-14

我正在开发一个使用tomcat服务器管理的连接池的spring应用程序。

我在上下文中的标记中定义了数据源。tomcat的xml:(我在上下文中使用Spring2.0.7)。xml:

<context>
    <Resource name="jdbc/irb_prod"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    username="xxx"
     password="xxx"
     driverClassName="oracle.jdbc.driver.OracleDriver"
     url="jdbc:oracle:thin:@xxx:1521:xxx"
     maxWait="1000"
     removeAbandoned="true"
     maxActive="5"
     maxIdle="5"
     removeAbandonedTimeout="60"
     logAbandoned="true"/>
</context>

在我的应用程序上下文中。xml(即在spring配置文件中),代码为:

     <bean id="dataSource" 
     class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
    <value>java:comp/env/jdbc/irb_prod</value>
    </property>
    </bean>


 <!-- Transaction manager for a single JDBC DataSource -->
    <bean id="transactionManager" 
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource"><ref local="dataSource"/></property>
    </bean>

当应用程序启动时,出现以下错误:

javax.naming.NameNotFoundException: Name java:/comp/env/mypool is not bound in this              Context
org.apache.naming.NamingContext.lookup(NamingContext.java:803)
org.apache.naming.NamingContext.lookup(NamingContext.java:159)
org.apache.naming.SelectorContext.lookup(SelectorContext.java:158)
javax.naming.InitialContext.lookup(Unknown Source)
org.springframework.jndi.JndiTemplate$1.doInContext(JndiTemplate.java:132)
org.springframework.jndi.JndiTemplate.execute(JndiTemplate.java:88)
org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:130)
org.springframework.jndi.JndiTemplate.lookup(JndiTemplate.java:155)
org.springframework.jndi.JndiLocatorSupport.lookup(JndiLocatorSupport.java:93)
org.springframework.jndi.JndiObjectLocator.lookup(JndiObjectLocator.java:105)
org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback(JndiObjectFactoryBean.java :197)
org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet(JndiObjectFactoryBean.java:184)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInit         ialization(AbstractApplicationContext.java:736)
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractAppli  cationContext.java:369)
org.springframework.context.support.ClassPathXmlApplicationContext.<init> (ClassPathXmlApplicationContext.java:123)
org.springframework.context.support.ClassPathXmlApplicationContext.<init>  (ClassPathXmlApplicationContext.java:66)
MainServlet.init(MainServlet.java:21)
javax.servlet.GenericServlet.init(GenericServlet.java:160)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:541)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:383)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java :188)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)
java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.lang.Thread.run(Unknown Source)

请帮我解决这个问题。

共有3个答案

范高刚
2023-03-14

在Tomcat的情况下,当您出于某种原因删除了任意servletcontainer特定的JAR(如jsp api)时,就会发生这种情况。jar,servlet api。加泰琳娜。webapp的/WEB-INF/lib中的jar等。您应该从那里删除所有特定于servletcontainer的JAR,因为它们不属于那里。

尉迟鸿熙
2023-03-14

请更新您的网站。xml,具有类似于以下标记的内容

<resource-env-ref>
  <description>DataSource
  </description>
  <resource-env-ref-name>
    dbc/irb_prod
  </resource-env-ref-name>
  <resource-env-ref-type>
    javax.sql.DataSource
  </resource-env-ref-type>
</resource-env-ref>

有关更多信息,您也需要参考此链接

祝灼光
2023-03-14

我在tomcat中遇到了类似的问题,并在eclipse中执行了以下操作来解决它:

  1. 在服务器的上下文中。xml,包括jdbc连接详细信息
  2. 停止服务器
  3. 清理项目(project--

即使在上下文中维护了细节。xml,有时它可能无法得到反映。在这种情况下,请遵循步骤3,并希望它能有所帮助。

 类似资料:
  • 问题内容: 我试图找出为什么我的Web应用程序抛出一个 当我从中复制配置的一个姐妹悄悄地运行时。 我有: 通过右键单击并选择“新的持久性”从netbeans创建一个新的持久性,我不在乎我提供的实际值,但只需要在正确的目录中创建persistence.xml文件即可。 如下编辑我的context.xml,以匹配工作姐妹项目中的那个 编辑了我的web.xml以包含资源DataSource,如下所示 如

  • 我是EJB 3.1的初学者,并试图运行我的第一个Hello World程序并获得NameNotFoundException。 这是我的课 本地接口: 远程接口: 豆类: 客户: } 有人能对此提出建议吗?提前谢谢

  • 我尝试在远程环境中调用EJB,并使用Wildfly作为容器。 很抱歉,但这是我第一次尝试以远程方式调用EJB。 我使用下面的说明在Wildfly中调用EJB。使用JNDI从远程客户端https://docs.jboss.org/author/display/WFLY8/EJB调用 但是,我调用这些EJB时出错,我不知道我的配置出了什么问题。 请参阅下面的错误堆栈跟踪: 远程服务器和客户端中的我的界

  • 我有一个由许多模块组成的JavaEE应用程序。我试图能够进行间接的JNDI查找。 我遵循以下步骤: ejb jar。xml:在每个模块中。我定义了一个企业bean。模块中的所有DAO都继承自此DAO(MyDataAccessObject) persistence.xml:我在每persistence.xml中定义(在每个模块中) ibm应用程序bnd。xml 我应该在WebSphere知道的jav

  • 我正在尝试在eclipse中创建jms发布者/订户聊天应用程序。 尝试运行程序时,控制台中出现以下错误

  • 我对一个问题感到沮丧,我花了几个小时试图解决它!问题是。我试图查找一个已经在我的jboss服务器中声明的主题(MyBestTopic ),但是我有这个异常 在我的java代码中,我试图像这样检索主题: 查看jboss server的启动,我可以看到主题与正确的名称绑定得很好: 最后,当我在jmx控制台上看到jndiView树时,该主题也得到了很好的部署: 相同的java在具有相同部署主题和数据源的