KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > sapia > ubik > rmi > examples > http > HttpFooServlet


1 package org.sapia.ubik.rmi.examples.http;
2
3 import org.mortbay.http.HttpContext;
4 import org.mortbay.http.HttpServer;
5
6 import org.mortbay.jetty.servlet.ServletHandler;
7
8 import org.sapia.ubik.rmi.Consts;
9 import org.sapia.ubik.rmi.examples.Foo;
10 import org.sapia.ubik.rmi.examples.UbikFoo;
11 import org.sapia.ubik.rmi.server.Hub;
12 import org.sapia.ubik.rmi.server.transport.TransportManager;
13 import org.sapia.ubik.rmi.server.transport.http.servlet.ServletConsts;
14 import org.sapia.ubik.rmi.server.transport.http.servlet.ServletTransportProvider;
15
16 import java.io.IOException JavaDoc;
17
18 import java.rmi.RemoteException JavaDoc;
19
20 import java.util.Properties JavaDoc;
21
22 import javax.servlet.ServletConfig JavaDoc;
23 import javax.servlet.ServletException JavaDoc;
24 import javax.servlet.http.HttpServlet JavaDoc;
25 import javax.servlet.http.HttpServletRequest JavaDoc;
26 import javax.servlet.http.HttpServletResponse JavaDoc;
27
28
29 /**
30  * @author Yanick Duchesne
31  *
32  * <dl>
33  * <dt><b>Copyright:</b><dd>Copyright &#169; 2002-2004 <a HREF="http://www.sapia-oss.org">Sapia Open Source Software</a>. All Rights Reserved.</dd></dt>
34  * <dt><b>License:</b><dd>Read the license.txt file of the jar or visit the
35  * <a HREF="http://www.sapia-oss.org/license.html">license page</a> at the Sapia OSS web site</dd></dt>
36  * </dl>
37  */

38 public class HttpFooServlet extends HttpServlet JavaDoc {
39   // this would not be hard-coded like this normally - but
40
// rather configured in servlet init parameters.
41
static final String JavaDoc SERVLET_URL = "http://localhost:8080/ubik";
42   private Foo _foo;
43   private ServletTransportProvider _provider;
44
45   public void init(ServletConfig JavaDoc conf) throws ServletException JavaDoc {
46     _provider = new ServletTransportProvider();
47     TransportManager.registerProvider(_provider);
48
49     Properties JavaDoc props = new Properties JavaDoc();
50
51     // we would normally get value for this property from init parameters...
52
props.setProperty(ServletConsts.SERVLET_URL_KEY, SERVLET_URL);
53
54     // this tells ubik "under" which transport our object will be exported
55
props.setProperty(Consts.TRANSPORT_TYPE,
56       ServletConsts.DEFAULT_SERVLET_TRANSPORT_TYPE);
57
58     try {
59       _foo = new UbikFoo();
60       Hub.exportObject(_foo, props);
61     } catch (RemoteException JavaDoc e) {
62       throw new ServletException JavaDoc("Could not export Foo", e);
63     }
64   }
65
66   protected void service(HttpServletRequest JavaDoc req, HttpServletResponse JavaDoc res)
67     throws ServletException JavaDoc, IOException JavaDoc {
68     _provider.handleRequest(req, res);
69   }
70
71   /**
72    * @see javax.servlet.GenericServlet#destroy()
73    */

74   public void destroy() {
75     try {
76       Hub.shutdown(30000);
77     } catch (Exception JavaDoc e) {
78       getServletContext().log("Exception caught performing Hub shutdown", e);
79     }
80   }
81
82   public static void main(String JavaDoc[] args) {
83     try {
84       HttpServer server = new HttpServer();
85       server.addListener(":8080");
86
87       HttpContext context = server.getContext("/");
88       ServletHandler handler = new ServletHandler();
89       handler.addServlet("Ubik", "/ubik/*",
90         "org.sapia.ubik.rmi.examples.http.HttpFooServlet");
91       context.addHandler(handler);
92
93       server.start();
94
95       while (true) {
96         Thread.sleep(100000);
97       }
98     } catch (Exception JavaDoc e) {
99       e.printStackTrace();
100     }
101   }
102 }
103
Popular Tags