2017-12-19 23 views
-1

최대 절전 모드와 struts2를 통합하려고합니다. 오류가 없습니다. 하지만 세션이 전혀 생성되지 않습니다. 다음은 내 코드입니다. CustomerAction.java세션 세션 = sessionFactory.openSession(); 최대 절전 모드에서 작동하지 않습니다.

public String addCustomer(Customer customer) throws Exception{ 

     //get hibernate session from the servlet context 
     SessionFactory sessionFactory = 
      (SessionFactory) ServletActionContext.getServletContext() 
        .getAttribute(HibernateListener.KEY_NAME); 
     System.out.println("session factory accessed"); 
     Session session = sessionFactory.openSession(); 
     System.out.println("session created"); 

     //save it 


     session.beginTransaction(); 
     System.out.println("Transaction begin"); 
     session.save(customer); 
     session.getTransaction().commit(); 
} 

HibernateListener.java

public class HibernateListener implements ServletContextListener{ 

    private Configuration config; 
    private SessionFactory factory; 
    private String path = "/hibernate.cfg.xml"; 
    private static Class clazz = HibernateListener.class; 

    public static final String KEY_NAME = clazz.getName(); 

    public void contextDestroyed(ServletContextEvent event) { 
     // 
    } 

    public void contextInitialized(ServletContextEvent event) { 

    try { 
     SessionFactory sessionFactory = 
        new Configuration().configure("hibernate.cfg.xml").buildSessionFactory(); 
      System.out.println("session factory created"); 

      //save the Hibernate session factory into serlvet context 
      event.getServletContext().setAttribute(KEY_NAME, factory); 
     } catch (Exception e) { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

struts.xml

<struts> 
    <constant name="struts.devMode" value="false" /> 

    <package name="default" namespace="/" extends="struts-default"> 

    <action name="addCustomer" 
    class="com.mkyong.customer.action.CustomerAction"> 
     <result name="success">WEB-INF/pages/customer.jsp</result> 
    </action> 

     </package> 
</struts> 

이 코드는 오류를주는 것이 아니라, 데이터가 데이터베이스에 삽입되지 않습니다.

답변

0

최대 절전 모드로 Struts2를 수동으로 통합하는 데 시간이 낭비됩니다. 세션 팩토리를 구성하는 방법이나 컨텍스트 리스너에서 잘못 수행하는 방법을 정확히 알지 못할 수도 있습니다. 다른 경우에는 코드가 작동하지 않습니다.

그러나 Struts2를 통합하고 플러그인을 통해 직접 최대 절전 모드를 만드는 방법이 있습니다. 당신은 this 대답에 의해 제공되는 예제를 볼 수 있습니다. Struts2에서

Struts2 전체 최대 절전 모드라는 비공식 플러그인이있다 최대 절전 모드와의 통합을 제공 플러그인 또는 . 거기 예 :

+0

감사합니다. 그러나 나는 http://www.mkyong.com/struts2/struts-2-hibernate-integration-example/의 도움을 받았다. 위의 코드는 이와 같습니다. –

+0

이 답변으로 투표에 도움이되고 동의하는 경우. –