2014-05-16 8 views
2

Spring applicationContext.xml 파일에서 JNDI를 사용하여 dataSource 빈을 설정하는 데 문제가있다. 톰캣에서JNDI를 사용하는 Spring DataSource 설정

<resource-env-ref> 
    <resource-env-ref-name>jdbc/myApp</resource-env-ref-name> 
    <resource-env-ref-type>javax.sql.DataSource</resource-env-ref-type> 
<resource-env-ref> 

의 context.xml 파일 :

<Resource 
    auth="Container" 
    factory="bitronix.tm.resource.ResourceObjectFactory" 
    name="jdbc/myApp" type="javax.sql.DataSource" 
    uniqueName="jdbc/myApp" /> 
내가 web.xml에 항목을 만들었습니다

<jee:jndi-lookup id="dataSource" jndi-name="jdbc/myApp" expected-type="javax.sql.DataSource"/> 

:

이처럼 내 applicationContext.xml 항목 모습입니다

이러한 구성으로 Tomcat 콘솔에서이 오류가 계속 발생합니다 :

발생 원인 : javax.naming.NameNotFoundException : 이름 [jdbc/myApp]이이 컨텍스트에 바인딩되지 않았습니다. [jdbc]을 (를) 찾을 수 없습니다. at org.apache.naming.NamingContext.lookup (NamingContext.java:819) at org.apache.naming.NamingContext.lookup (NamingContext.java:167) at org.apache.naming.SelectorContext.lookup (SelectorContext. java : 156) at javax.naming.InitialContext.lookup (InitialContext.java:392) at org.springframework.jndi.JndiTemplate $ 1.doInContext (JndiTemplate.java:155) at org.springframework.jndi.JndiTemplate.execute org.springframework.jndi에서 org.springframework.jndi.JndiTemplate.lookup (JndiTemplate.java:179)에서 org.springframework.jndi.JndiTemplate.lookup (JndiTemplate.java:152)에서 (JndiTemplate.java:87) .JndiLocatorSupport.lookup (JndiLocatorSupport.java:104) at org.springframework.jndi.Jnd iObjectLocator.lookup (JndiObjectLocator.java:106) org.springframework.jndi.JndiObjectFactoryBean.lookupWithFallback (JndiObjectFactoryBean.java:231)에서 org.springframework.jndi.JndiObjectFactoryBean.afterPropertiesSet (JndiObjectFactoryBean.java:217)에서 조직에서 . org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean에서 springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods (AbstractAutowireCapableBeanFactory.java:1612) (AbstractAutowireCapableBeanFactory.java:1549)

나를 해결 도와주세요 이 문제. Context.xml의 bitronix 트랜잭션 팩토리가 문제를 일으키는 것으로 보입니다. 톰캣의 모든 구성 항목과 자원이 JNDI 네임 스페이스의 java:comp/env 부분에 배치되어 있기 때문에

+0

어떻게하면 어떻게 ''jee : jndi-lookup' 대신에 ' ? – geoand

답변

1

당신은, 다른 JNDI 이름을 사용해야하고 당신은뿐만 아니라, 그 지정해야합니다

<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/myApp" expected-type="javax.sql.DataSource"/> 
관련 문제