2013-05-09 5 views
2

Привет я пытаюсь использовать источник данных jndi. Ниже приведен кодspring jndi datasource setup

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: Ошибка создание bean с именем 'contactController': не удалось выполнить автоматическое удаление ; вложенное исключение: org.springframework.beans.factory.BeanCreationException: не удалось поле autowire: private app.contact.service.ContactService app.contact.controller.ContactController.contactService; inested exception is org.springframework.beans.factory.BeanCreationException: Ошибка при создании bean-компонента с именем 'contactServiceImpl': инъекция неавторизованных зависимостей; вложенное исключение: org.springframework.beans.factory.BeanCreationException: Не удалось поле autowire: private app.contact.dao.ContactDAOapp.contact.service.ContactServiceImpl.contactDAO; вложенное исключение - org.springframework.beans.factory.BeanCreationException: Ошибка создание bean-компонента с именем «contactDAOImpl»: в результате отказа от автоопределения зависимостей; вложенное исключение: org.springframework.beans.factory.BeanCreationException: не удалось поле autowire: private org.hibernate.SessionFactory app.contact.dao.ContactDAOImpl.sessionFactory; вложенное исключение org.springframework.beans.factory.BeanCreationException: Ошибка создании компонента с именем «SessionFactory» определено в ServletContext ресурс [/WEB-INF/spring-servlet.xml]: Не удается разрешить ссылки на боба «DataSource» при настройке bean-свойства 'dataSource'; inested exception is org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем 'dataSource', определенным в ServletContext ресурс [/WEB-INF/spring-servlet.xml]: значения свойств ошибки; вложенного исключения org.springframework.beans.NotWritablePropertyException: Invalid свойства 'JDBC/Плутон из класса бин [org.springframework.jndi.JndiObjectFactoryBean]: Bean свойства 'JDBC/плутон' не доступен для записи или имеет недопустимый метод сеттера. Указывает ли тип параметра тип сеттера возвращаемого типа получателя? Связанная причина: org.springframework.beans.factory.BeanCreationException: Ошибка создание bean-компонента с именем 'dataSource', определенным в ServletContext ресурс [/WEB-INF/spring-servlet.xml]: Ошибка значения свойств свойства; вложенного исключения org.springframework.beans.NotWritablePropertyException: Invalid свойства 'JDBC/Плутон из класса бин [org.springframework.jndi.JndiObjectFactoryBean]: Bean свойства 'JDBC/плутон' не доступен для записи или имеет недопустимый метод сеттера. Указывает ли тип параметра тип сеттера возвращаемого типа получателя?

+0

поле не может иметь имя 'JDBC/pluto'. –

ответ

9

У вас есть определение бина в качестве такого

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

Имя свойства jdbc/pluto должен соответствовать сеттера, так что весна ожидает что-то вроде setJdbc/Pluto(), но это явно не правильный синтаксис Java.

Посмотрите на JndiObjectFactoryBean похоже, что вы хотите setJndiName() от JndiObjectLocator супер класс.

Таким образом, ваш боб должен выглядеть

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> 
    <property name="jndiName" value="java:comp/env/jdbc/pluto"/> 
</bean> 
Смежные вопросы