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 ; 17 18 import java.rmi.RemoteException ; 19 20 import java.util.Properties ; 21 22 import javax.servlet.ServletConfig ; 23 import javax.servlet.ServletException ; 24 import javax.servlet.http.HttpServlet ; 25 import javax.servlet.http.HttpServletRequest ; 26 import javax.servlet.http.HttpServletResponse ; 27 28 29 38 public class HttpFooServlet extends HttpServlet { 39 static final String SERVLET_URL = "http://localhost:8080/ubik"; 42 private Foo _foo; 43 private ServletTransportProvider _provider; 44 45 public void init(ServletConfig conf) throws ServletException { 46 _provider = new ServletTransportProvider(); 47 TransportManager.registerProvider(_provider); 48 49 Properties props = new Properties (); 50 51 props.setProperty(ServletConsts.SERVLET_URL_KEY, SERVLET_URL); 53 54 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 e) { 62 throw new ServletException ("Could not export Foo", e); 63 } 64 } 65 66 protected void service(HttpServletRequest req, HttpServletResponse res) 67 throws ServletException , IOException { 68 _provider.handleRequest(req, res); 69 } 70 71 74 public void destroy() { 75 try { 76 Hub.shutdown(30000); 77 } catch (Exception e) { 78 getServletContext().log("Exception caught performing Hub shutdown", e); 79 } 80 } 81 82 public static void main(String [] 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 e) { 99 e.printStackTrace(); 100 } 101 } 102 } 103 | Popular Tags |