Мы недавно перенесли наше приложение из Spring в JSF2. Теперь мы хотим заменить ManagedBeans компонентами CDI. SessionFactory, которая работала нормально с JSF2, становится пустой после изменения его на CDI.
<bean id="dsBSA" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver" />
<property name="url" value="*******" />
<property name="username" value="********" />
<property name="password" value="*******" />
</bean>
<bean id="sfBSA" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dsBSA" />
<property name="packagesToScan" value="com.nbs.bma.model" /><!-- where to find the ORM classes -
</bean>
<!-- Transaction Manager (BMA) -->
<tx:annotation-driven transaction-manager="txnManagerBSA" />
<bean id="txnManagerBSA" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sfBSA" />
</bean>
<bean id="userDao" class="com.nbs.bma.dao.UserDaoImpl">
<property name="sessionFactory" ref="sfBSA" />
</bean>
//In DAO class
@Transactional
public class UserDaoImpl implements UserDao, Serializable {
private static final long serialVersionUID = -1890813081994721050L;
private SessionFactory sessionFactory;
public void setSessionFactory(SessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@SuppressWarnings("unchecked")
public List<User> getUserList() {
Query query = sessionFactory.getCurrentSession().createQuery("FROM User");
return query.list();
}
}
sessionFactory имеет значение null. Отсюда и бросает NPE.