KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > xpetstore > web > servlet > ActionServlet


1 /*
2  * Created on Feb 23, 2003
3  */

4 package xpetstore.web.servlet;
5
6 import java.io.IOException JavaDoc;
7 import java.io.InputStream JavaDoc;
8
9 import java.util.Properties JavaDoc;
10
11 import javax.servlet.ServletConfig JavaDoc;
12 import javax.servlet.ServletException JavaDoc;
13
14 import org.apache.log4j.Logger;
15
16 import cirrus.hibernate.Datastore;
17 import cirrus.hibernate.Hibernate;
18 import cirrus.hibernate.HibernateException;
19 import cirrus.hibernate.SessionFactory;
20
21 import webwork.dispatcher.ServletDispatcher;
22
23 import xpetstore.domain.Account;
24 import xpetstore.domain.Category;
25 import xpetstore.domain.Customer;
26 import xpetstore.domain.Item;
27 import xpetstore.domain.Order;
28 import xpetstore.domain.OrderItem;
29 import xpetstore.domain.Product;
30
31
32 /**
33  * @author <a HREF="mailto:tchbansi@sourceforge.net">Herve Tchepannou</a>
34  *
35  * @web.servlet
36  * name="action"
37  * display-name="xPetstore WebWork Action Servlet"
38  * load-on-startup="1"
39  *
40  * @web.servlet-mapping
41  * url-pattern="*.action"
42  *
43  * @web.resource-ref
44  * name="${jndi.mail.session}"
45  * type="javax.mail.Session"
46  * auth="Container"
47  *
48  * @jboss.resource-ref
49  * res-ref-name="${jndi.mail.session}"
50  * jndi-name="${jboss.mail.session}"
51  *
52  * @weblogic.resource-description
53  * res-ref-name="${jndi.mail.session}"
54  * jndi-name="${weblogic.mail.session}"
55  */

56 public class ActionServlet
57     extends ServletDispatcher
58 {
59     //~ Static fields/initializers ---------------------------------------------
60

61     private static final Logger __logger = Logger.getLogger( ActionServlet.class );
62     public static final String JavaDoc SESSION_FACTORY_KEY = "cirrus.hibernate.SessionFactory";
63
64     //~ Methods ----------------------------------------------------------------
65

66     /**
67      * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
68      */

69     public void init( ServletConfig JavaDoc config )
70         throws ServletException JavaDoc
71     {
72         super.init( config );
73
74         __logger.info( "Initializing" );
75
76         try
77         {
78             Datastore ds = Hibernate.createDatastore( );
79
80             /* Classes */
81             load( Account.class, ds );
82             load( Category.class, ds );
83             load( Customer.class, ds );
84             load( Item.class, ds );
85             load( Order.class, ds );
86             load( OrderItem.class, ds );
87             load( Product.class, ds );
88
89             /* Hibernate properties */
90             __logger.info( "...loading: hibernate.properties" );
91
92             InputStream JavaDoc in = getClass( ).getClassLoader( ).getResourceAsStream( "hibernate.properties" );
93             Properties JavaDoc props = new Properties JavaDoc( );
94             props.load( in );
95
96             /* Session Factory */
97             __logger.info( "...initializing the Hibernate SessionFactory" );
98
99             SessionFactory sessionFactory = ds.buildSessionFactory( props );
100             config.getServletContext( ).setAttribute( SESSION_FACTORY_KEY, sessionFactory );
101
102             __logger.info( "Initialized" );
103         }
104         catch ( HibernateException h )
105         {
106             throw new ServletException JavaDoc( h );
107         }
108         catch ( IOException JavaDoc io )
109         {
110             throw new ServletException JavaDoc( "Unable to load: hibernate.properties", io );
111         }
112     }
113
114     private void load( Class JavaDoc type,
115                        Datastore ds )
116         throws ServletException JavaDoc
117     {
118         try
119         {
120             __logger.info( "... loading mapping for: " + type );
121             ds.storeClass( type );
122         }
123         catch ( Exception JavaDoc e )
124         {
125             throw new ServletException JavaDoc( "Unable to load Hibernate mapping:" + type, e );
126         }
127     }
128
129     /**
130      * @see javax.servlet.Servlet#destroy()
131      */

132     public void destroy( )
133     {
134         getServletContext( ).removeAttribute( SESSION_FACTORY_KEY );
135
136         super.destroy( );
137     }
138 }
139
Popular Tags