posts - 1,  comments - 3,  trackbacks - 0
          I am a freshman of hibernate. Today I configured the tutorial hibernate application following the hibernate reference(3.2). By the way, the refenrence is rather excellent. Everything went well until I came to the first Servlet Page. Error printed as followed:

          hibernate Transaction not successfully started


          I then checked the codes and configurations. The former program ran well on console, but when it came to Servlet it failed. Refering to some articles found, I refactoried the code. The diffrence is that I stated a Transaction variable tx. It then works. The file EventManagerServlet.java is as below:


          package com.CarlElit.HelloWorld.events;

          import java.util.Date;
          import com.CarlElit.HelloWorld.util.HibernateUtil;
          import org.hibernate.Session;
          import org.hibernate.Transaction;
          import java.util.List;
          import java.text.SimpleDateFormat;
          import java.util.Iterator;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.ServletException;
          import java.io.IOException;
          import java.io.PrintWriter; 

          public class EventManagerServlet extends HttpServlet {
              
          static final private String CONTENT_TYPE = "text/html,charset=utf-8";
              
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
              
          throws ServletException, IOException {
                  SimpleDateFormat dateFormatter 
          = new SimpleDateFormat("yyyy-MM-dd");
                  Transaction tx 
          = null;
                  
          try
                  {
                      PrintWriter out 
          = response.getWriter();
                      Session session 
          = HibernateUtil.getSessionFactory().getCurrentSession();
                      tx 
          = session.beginTransaction();

                      response.setContentType(CONTENT_TYPE);  
                      out.println(
          "<html><head><title>Event Manager</title></head><body>");

                      
          if ("store".equals(request.getParameter("action")))
                      {
                          String eventTitle 
          = request.getParameter("eventTitle");
                          String eventDate 
          = request.getParameter("eventDate");
                          
          if ("".equals(eventTitle) || "".equals(eventDate))
                          {
                              out.println(
          "<b><i>Please enter event title and date.</i></b>");
                          }
          else 
                          {
                              createAndStoreEvent(eventTitle, dateFormatter.parse(eventDate));
                              out.println(
          "<b><i>Added event.</i></b>");
                          }
                      }
                      printEventForm(out);
                      listEvents(out, dateFormatter);

                      out.println(
          "</body></html>");
                      out.flush();
                      out.close();

                      tx.commit();
                  }
                  
          catch (Exception ex)
                  {
                      
          if (tx != null)
                      {
                          tx.rollback();
                      }
                      
          throw new ServletException(ex);
                  }
              }

              
          private void printEventForm(PrintWriter out) {
                  out.println(
          "<h2>Add new event:</h2>");
                  out.println(
          "<form>");
                  out.println(
          "Title: <input name='eventTitle' length='50'/><br/>");
                  out.println(
          "Date (e.g. 2008-11-18): <input name='eventDate' length='10'/><br/>");
                  out.println(
          "<input type='submit' name='action' value='store'/>");
                  out.println(
          "</form>");
              }

              
          private void listEvents(PrintWriter out, SimpleDateFormat dateFormatter) {
                  List result 
          = HibernateUtil.getSessionFactory().getCurrentSession().createCriteria(Event.class).list();
                  
          if (result.size() > 0)
                  {
                      out.println(
          "<h2>Events in database:</h2>");
                      out.println(
          "<table border='1'>");
                      out.println(
          "<tr>");
                      out.println(
          "<th>Event Title</th>");
                      out.println(
          "<th>Event Date</th>");
                      out.println(
          "</tr>");
                      
          for (Iterator it = result.iterator(); it.hasNext(); )
                      {
                          Event event 
          = (Event) it.next();
                          out.println(
          "<tr>");
                          out.println(
          "<td>" + event.getTitle() + "</td>");
                          out.println(
          "<td>" + dateFormatter.format(event.getDate()) + "</td>");
                          out.println(
          "</tr>");
                      }
                      out.println(
          "</table>");
                  }
              }

              
          protected void createAndStoreEvent(String title, Date theDate) {
                  Event theEvent 
          = new Event();
                  theEvent.setTitle(title);
                  theEvent.setDate(theDate);
                  HibernateUtil.getSessionFactory().getCurrentSession().save(theEvent);
              }
          }



          For all code please email to : caishaojiang@gmail.com
          posted on 2008-03-05 18:13 Carl 閱讀(3546) 評論(1)  編輯  收藏


          FeedBack:
          # re: Fix Hibernate ERROR: hibernate Transaction not successfully started
          2008-04-09 08:57 | calven
          Session session = HibernateUtil.getSessionFactory().getCurrentSession();


          modify "getCurrentSession() " to openSession()  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2008年4月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 临洮县| 望奎县| 晋江市| 克拉玛依市| 财经| 沙河市| 武功县| 枣庄市| 江永县| 武定县| 兴城市| 虞城县| 白朗县| 石棉县| 武威市| 治多县| 西贡区| 三台县| 新邵县| 长乐市| 多伦县| 河北省| 咸阳市| 泸溪县| 通州区| 英吉沙县| 竹山县| 嘉荫县| 黑水县| 兴和县| 城口县| 北辰区| 漳浦县| 万宁市| 乌拉特后旗| 乌兰浩特市| 余姚市| 滨州市| 岐山县| 自贡市| 金阳县|