KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > example > SwapServlet


1 package example;
2
3 import java.io.PrintWriter JavaDoc;
4 import java.io.IOException JavaDoc;
5
6 import javax.servlet.ServletException JavaDoc;
7
8 import javax.servlet.http.HttpServlet JavaDoc;
9 import javax.servlet.http.HttpServletRequest JavaDoc;
10 import javax.servlet.http.HttpServletResponse JavaDoc;
11
12 import javax.ejb.EntityManager;
13 import javax.ejb.Inject;
14 import javax.ejb.EJB JavaDoc;
15
16 import javax.transaction.UserTransaction JavaDoc;
17
18 /**
19  * The SwapServlet swaps cources.
20  */

21 public class SwapServlet extends HttpServlet JavaDoc {
22   @Inject
23   private EntityManager _manager;
24   
25   @Inject
26   private UserTransaction JavaDoc _uTrans;
27   
28   @EJB JavaDoc(jndiName="swap")
29   private Swap _swap;
30
31   /**
32    * Initializes the database for the demo.
33    */

34   public void init()
35     throws ServletException JavaDoc
36   {
37     Course course = null;
38     
39     try {
40       course = (Course) _manager.find("Course", new Integer JavaDoc(1));
41       if (course != null)
42     return;
43     } catch (Exception JavaDoc e) {
44     }
45
46     Course potions = new Course();
47     potions.setCourse("Potions");
48     potions.setTeacher("Severus Snape");
49
50     _manager.create(potions);
51
52     Course xfig = new Course();
53     xfig.setCourse("Transfiguration");
54     xfig.setTeacher("Minerva McGonagall");
55
56     _manager.create(xfig);
57   }
58
59   /**
60    * Illustrates how to swap with a transaction.
61    */

62   public void service(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res)
63     throws java.io.IOException JavaDoc, ServletException JavaDoc
64   {
65     PrintWriter JavaDoc out = res.getWriter();
66
67     res.setContentType("text/html");
68
69     Course []courses = new Course[2];
70
71     courses[0] = (Course) _manager.find("Course", new Integer JavaDoc(1));
72     courses[1] = (Course) _manager.find("Course", new Integer JavaDoc(2));
73
74     printCourses(out, "Initial Teachers", courses);
75
76     // Swaps the courses using a session bean to handle the transaction.
77
_swap.swap(courses[0], courses[1]);
78
79     printCourses(out, "Swapped Teachers", courses);
80
81     // Swaps the courses inside a transaction. The swap will be atomic,
82
// i.e. either the swap will succeed or fail. It will not end up
83
// in an intermediate state.
84
try {
85       _uTrans.begin();
86       try {
87     String JavaDoc teacher = courses[0].getTeacher();
88     courses[0].setTeacher(courses[1].getTeacher());
89     courses[1].setTeacher(teacher);
90       } finally {
91     _uTrans.commit();
92       }
93     } catch (Exception JavaDoc e) {
94       throw new ServletException JavaDoc(e);
95     }
96   }
97
98   private void printCourses(PrintWriter JavaDoc out, String JavaDoc title, Course []courses)
99     throws IOException JavaDoc
100   {
101     out.println("<h3>" + title + "</h3>");
102
103     for (Course course : courses) {
104       out.println("course: " + course.getCourse() + "<br>");
105       out.println("teacher: " + course.getTeacher() + "<br>");
106       out.println("<br>");
107     }
108   }
109 }
110
Popular Tags