2013-09-16 2 views
0

У меня есть приложение в JSF, Spring, Hibernate и Spring безопасности, взаимодействие между спящим уровнем и базой данных идет хорошо, после того, как весенний уровень безопасности запросы ничего не отображают ,Фильтр защиты от дождя блокирует все запросы на гибернацию

Любое решение?

Я создаю мой SessionFactory из спящего режима конфигурационного файла

фильтры в web.xml: ....................

!-- Spring Security --> 
    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

.................

зимуют сессия класса создание завода:

............... ............

package Util; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.cfg.AnnotationConfiguration; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 
import org.hibernate.service.ServiceRegistryBuilder; 


public class HibernateUtil { 

    private static SessionFactory sessionFactory; 

    static { 
     try { 

      Configuration configuration = new AnnotationConfiguration();; 
      configuration.configure(); 
      ServiceRegistry sr = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry(); 
      sessionFactory = configuration.buildSessionFactory(sr); 
     } catch (Throwable ex) { 
      // Log the exception. 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

} 

@Transactional 

public class stufImp implements stufDAO , Serializable { 


      private SessionFactory sf = HibernateUtil.getSessionFactory(); 
      Session session ; 

      public stufImp() { 

    } 


    @Override 
    public List<Stuf> getAllstufs() { 

       session=sf.getCurrentSession(); 
     session.beginTransaction(); 
     List<Stuf> stufs= session.createQuery("from Stuf").list(); 
     session.getTransaction().commit(); 
     System.out.println("getting All Stufs"); 

     return stufs; 
    } 

....................

+0

См. Ответ Можете ли вы опубликовать конфигурацию спячки и весной. –

ответ

1

Для начала, сначала удалите HibernateUtil используется для настройки спящего режима, рядом исправлений ваше дао. Вы должны никогда не хранить Session в переменной экземпляра, по крайней мере, не тогда, когда ваш dao является синглом. (представьте, что произойдет, если придут 2 одновременных запроса, что произойдет с сеансом!).

Для настройки спящего режима SessionFactory используйте пружину LocalSessionFactoryBean. (Дополнительная информация в the reference guide и javadoc).

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" > 
</bean> 

И вам также нужен диспетчер транзакций и разрешить транзакции с аннотацией. (reference guide).

@Transactional 
public class stufImp implements stufDAO , Serializable { 

    @Autowired 
    private SessionFactory sf; 

    @Override 
    public List<Stuf> getAllstufs() { 
     return sf.getCurrentSession().createQuery("from Stuf").list(); 
    } 
} 

Ссылки

  1. Setup SessionFactory весной reference guide
  2. Реализация DAOS reference guide
Смежные вопросы