Spring NotWritablePropertyException и недопустимое свойство 'lazyInit' компонента JndiObjectFactoryBean - PullRequest
1 голос
/ 03 апреля 2019

Мы используем конфигурацию источника данных JNDI на основе WAS8.5. Во время запуска сервера этот источник данных не создается. Отсюда метание

org.springframework.beans.factory.BeanCreationException, говоря
"Ошибка установки значений свойств; вложенное исключение - org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'lazyInit' класса бина [org.springframework.jndi .JndiObjectFactoryBean]: Свойство бина 'lazyInit' недоступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра метода установки типу возврата метода получения? "

Мы не пытаемся установить свойство lazyInit в нашем приложении. В чем может быть проблема здесь? Здесь что-то пропущено?

Spring-context.xml :

<beans
  xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-4.3.xsd
  http://www.springframework.org/schema/jee
  http://www.springframework.org/schema/jee/spring-jee-4.3.xsd
  http://www.springframework.org/schema/aop
  http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
  http://www.springframework.org/schema/tx
  http://www.springframework.org/schema/tx/spring-tx-4.3.xsd"
  xmlns:tx="http://www.springframework.org/schema/tx"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:jee="http://www.springframework.org/schema/jee"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns="http://www.springframework.org/schema/beans">

  <context:annotation-config/>

  <jee:jndi-lookup id="ds_app1" jndi-name="java:comp/env/jdbc/ds_app1" />

  <!-- SQL Session factories -->
  <bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean">
    <property ref="ds_app1" name="dataSource"/> 
    <property name="configLocation" value="classpath:/conf/xml/mybatis-config.xml" />
    <property name="mapperLocations" value="classpath:/conf/xml/mapper/*.xml"/> 
  </bean> 

</beans>

Тот же фрагмент кода работает в другой среде с тем же сервером WAS8.5 с тем же набором конфигураций источника данных. В нашем приложении мы используем spring4.3.8, mybatis3.x и java8. Здесь мы вводим компоненты источника данных, используя конфигурацию xml (dao-spring-context.xml)

Ожидаемый вывод - источник данных должен быть введен в фабрику сеансов sql. Но фактическим результатом является исключение, приведенное ниже.

org.springframework.beans.factory.BeanCreationException:
Ошибка при создании bean-компонента с именем 'sqlSessionFactory', определенного в ресурсе пути к классу [conf / xml / dao-spring-context.xml]: не удается разрешить ссылку на bean-компонент 'ds_app1' при установке свойства bean-компонента 'dataSource'; вложенное исключение: org.springframework.beans.factory.BeanCreationException: ошибка при создании компонента с именем 'ds_app1': ошибка при установке значений свойства; вложенное исключение: org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'lazyInit' класса компонента [org.springframework.jndi.JndiObjectFactoryBean]: свойство компонента 'lazyInit' недоступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя?

...