Мы используем конфигурацию источника данных JNDI на основе WAS8.5. Во время запуска сервера этот источник данных не создается. Отсюда метание
org.springframework.beans.factory.BeanCreationException, говоря "Ошибка установки значений свойств; вложенное исключение - org.springframework.beans.NotWritablePropertyException: недопустимое свойство 'lazyInit' класса бина [org.springframework.jndi .JndiObjectFactoryBean]: Свойство бина 'lazyInit' недоступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра метода установки типу возврата метода получения? "
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' недоступно для записи или имеет недопустимый метод установки. Соответствует ли тип параметра установщика возвращаемому типу получателя?
sqlSessionFactory
ds_app1
dataSource