2013-05-09 3 views
2

안녕하세요 jndi 데이터 소스를 사용하려고합니다. 아래에 스프링 서블릿 설정 콩의 코드spring jndi 데이터 소스 설정

의 context.xml

<Context antiJARLocking="true" path="/SpringMVCTest"> 
    <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" 
      maxActive="20" maxIdle="10" maxWait="10000" 
      name="jdbc/pluto" password="" 
      type="javax.sql.DataSource" 
      url="jdbc:mysql://localhost:3306/spring?zeroDateTimeBehavior=convertToNull" 
      username="pluto"/> 
</Context> 

입니다 :

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

내가이 오류를

org.springframework을 얻고있다. beans.factory.BeanCreationException : 오류 이름이있는 빈 작성 'contactController': autowired 종속성 주입에 실패했습니다. 중첩 예외는 입니다. org.springframework.beans.factory.BeanCreationException : 할 수 없습니다 autowire 필드 : private app.contact.service.ContactService app.contact.controller.ContactController.contactService; 예외는 org.springframework.beans.factory.BeanCreationException : 이름 'contactServiceImpl'로 bean 작성 중 오류 발생 : autowired dependencies의 삽입에 실패했습니다. 중첩 예외는 입니다. org.springframework.beans.factory.BeanCreationException : 할 수 없습니다 autowire 필드 : private app.contact.dao.ContactDAO app.contact.service.ContactServiceImpl.contactDAO; 중첩 예외는 org.springframework.beans.factory.BeanCreationException : 오류 이름이 'contactDAOImpl'인 빈을 작성 중입니다. autowired 종속성에 실패했습니다. 중첩 예외는 org.springframework.beans.factory.BeanCreationException : 할 수 없습니다 autowire 필드 : private org.hibernate.SessionFactory app.contact.dao.ContactDAOImpl.sessionFactory; 중첩 예외는 org.springframework.beans.factory.BeanCreationException : 오류 ServletContext에 정의 된 'sessionFactory'라는 이름의 bean을 생성합니다. 리소스 [/WEB-INF/spring-servlet.xml] : bean 'dataSource'에 대한 참조를 확인할 수 없습니다. 빈 속성 'dataSource'를 설정하는 중입니다. 예외는 org.springframework.beans.factory.BeanCreationException : ServletContext에 정의 된 'dataSource'라는 이름의 bean을 생성하는 중 오류가 발생했습니다. 리소스 [/WEB-INF/spring-servlet.xml] : 속성 값 설정 중 오류가 발생했습니다. 콩 속성 'JDBC/명왕성은'쓸 수 없습니다 또는 잘못된 있습니다 [org.springframework.jndi.JndiObjectFactoryBean] 빈 클래스의 잘못된 재산 'JDBC/명왕성' 상자의 예외는 org.springframework.beans.NotWritablePropertyException입니다 setter 메서드입니다. setter의 매개 변수 유형이 getter의 반환 유형과 일치합니까? 관련 원인 : org.springframework.beans.factory.BeanCreationException : 오류 ServletContext에 'dataSource'라는 이름의 bean을 생성 중입니다. 리소스 [/WEB-INF/spring-servlet.xml] : 속성 값 설정 중 오류가 발생했습니다. 콩 속성 'JDBC/명왕성은'쓸 수 없습니다 또는 잘못된 있습니다 [org.springframework.jndi.JndiObjectFactoryBean] 빈 클래스의 잘못된 재산 'JDBC/명왕성' 상자의 예외는 org.springframework.beans.NotWritablePropertyException입니다 setter 메서드입니다. setter의 매개 변수 유형이 getter의 반환 유형과 일치합니까?봄이 setJdbc/Pluto() 같은 것을 기대하지만 분명히 올바른 자바 문법되지 않도록

+0

필드처럼 보일 것입니다. –

답변

9

당신은, 같은

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

속성 이름 jdbc/pluto은 세터와 일치하도록되어 같은 bean 정의를 가지고있다.

JndiObjectFactoryBean에서 보면 setJndiName() 메소드가 JndiObjectLocator 수퍼 클래스에서 필요합니다.

그래서 빈은 이름`JDBC/pluto`을 가질 수 없습니다

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/pluto"/> 
</bean> 
관련 문제