javax.naming.NameNotFoundException:名称[comp/env]在此上下文中未绑定 [英] javax.naming.NameNotFoundException: Name [comp/env] is not bound in this Context

查看:256
本文介绍了javax.naming.NameNotFoundException:名称[comp/env]在此上下文中未绑定的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm developing a spring application which uses tomcat server managed connection pool.

我在tomcat的context.xml中的tag中定义了数据源:(我正在使用spring 2.0.7)在context.xml中:

I defined datasource in tag in context.xml of tomcat: (i am using spring 2.0.7) in context.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>

在我的 ApplicationContext.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>

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

When the application starts, I get the following errors:

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)

请帮助我解决这个问题.

please help me to solve this problem.

推荐答案

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

I faced similar problem with tomcat and did the following in eclipse to solve it:

  1. 在服务器的context.xml中,包含了jdbc连接的详细信息.
  2. 停止服务器
  3. 清理项目(Project --> Clean),tomcat服务器(Server--> Right Click --> Clean)和Tomcat工作目录(Server--> Right Click--> Clean Tomcat Work Directory).
  4. 启动服务器并运行.
  1. In the server's context.xml, included the jdbc connection details.
  2. Stop the server
  3. Clean the project(Project --> Clean) , the tomcat server (Server--> Right Click --> Clean) and Tomcat work directory (Server--> Right Click--> Clean Tomcat Work Directory).
  4. Start the server and run.

即使在context.xml中维护了详细信息之后,有时也可能无法反映出来. 在这种情况下,请按照步骤3进行操作,希望对您有所帮助.

Even after maintaining the details in context.xml, sometimes it might not get reflected. In such cases follow step#3 and hope it helps.

这篇关于javax.naming.NameNotFoundException:名称[comp/env]在此上下文中未绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆