복붙노트

[SPRING] javax.naming.NameNotFoundException : 이름 [comp / env]가이 Context에 바인드되어 있지 않다

SPRING

javax.naming.NameNotFoundException : 이름 [comp / env]가이 Context에 바인드되어 있지 않다

내가 tomcat 서버 관리 연결 풀을 사용하여 봄 응용 프로그램을 개발하고있어.

나는 context.xml에서 context.xml의 tag 안에 datasource를 정의했다. (spring 2.0.7을 사용하고있다.) 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>

응용 프로그램이 시작되면 다음과 같은 오류가 발생합니다.

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)

이 문제를 해결하도록 도와주세요.

해결법

  1. ==============================

    1.내가 바람둥이와 비슷한 문제에 직면하고 그것을 해결하기 위해 일식에 다음 않았다 :

    내가 바람둥이와 비슷한 문제에 직면하고 그것을 해결하기 위해 일식에 다음 않았다 :

    context.xml에서 세부 사항을 유지 한 후에도 때로는 반영되지 않을 수도 있습니다. 그런 경우 3 단계를 따르고 도움이되기를 바랍니다.

  2. ==============================

    2.web.xml을 다음 태그와 비슷한 것으로 업데이트하십시오

    web.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>
    

    자세한 내용은이 링크를 참조해야합니다.

  3. ==============================

    3.웹 애플리케이션 / WEB-INF / lib에서 jsp-api.jar, servlet-api.jar, catalina.jar 등과 같은 임의의 servletcontainer 특정 JAR을 삭제했을 때 Tomcat이 발생합니다. 거기에서 모든 servletcontainer 특정 JAR을 제거해야하며 거기에 속하지 않습니다.

    웹 애플리케이션 / WEB-INF / lib에서 jsp-api.jar, servlet-api.jar, catalina.jar 등과 같은 임의의 servletcontainer 특정 JAR을 삭제했을 때 Tomcat이 발생합니다. 거기에서 모든 servletcontainer 특정 JAR을 제거해야하며 거기에 속하지 않습니다.

  4. ==============================

    4.내 경우에는 먼저 파일 탐색기 (FreeCommander XE)를 닫은 다음 일식 정리 (프로젝트 및 서버)를 수행하고, 파일이 없더라도 배포 된 파일을 처리 할 수있는 다른 프로그램을 닫아야합니다. 더 이상 그 프로그램에서 열리지 않는다.

    내 경우에는 먼저 파일 탐색기 (FreeCommander XE)를 닫은 다음 일식 정리 (프로젝트 및 서버)를 수행하고, 파일이 없더라도 배포 된 파일을 처리 할 수있는 다른 프로그램을 닫아야합니다. 더 이상 그 프로그램에서 열리지 않는다.

  5. ==============================

    5.Eclipse에서는 올바른 context.xml 파일이 있는지 확인하십시오. 이는 특히 여러 서버를 설치 한 경우에 유효합니다.

    Eclipse에서는 올바른 context.xml 파일이 있는지 확인하십시오. 이는 특히 여러 서버를 설치 한 경우에 유효합니다.

    서버 탭에서 배포 된 웹 모듈을 마우스 오른쪽 버튼으로 클릭하고 배포 위치 찾아보기 -> ../conf/context.xml을 선택합니다. 이 파일이 사용하고자하는 파일인지 확인하십시오.

    시간 낭비로 시간을 절약 해주기를 바랍니다.

  6. from https://stackoverflow.com/questions/21527714/javax-naming-namenotfoundexception-name-comp-env-is-not-bound-in-this-context by cc-by-sa and MIT license