1 package com.icesoft.faces.webapp.http.servlet; 2 3 import com.icesoft.faces.webapp.http.common.Configuration; 4 import com.icesoft.faces.webapp.http.core.ResourceServer; 5 import com.icesoft.faces.webapp.xmlhttp.PersistentFacesCommonlet; 6 import com.icesoft.util.IdGenerator; 7 import com.icesoft.jasper.Constants; 8 9 import javax.servlet.ServletConfig ; 10 import javax.servlet.ServletContext ; 11 import javax.servlet.ServletException ; 12 import javax.servlet.http.HttpServlet ; 13 import javax.servlet.http.HttpServletRequest ; 14 import javax.servlet.http.HttpServletResponse ; 15 import javax.servlet.http.HttpSession ; 16 import java.io.IOException ; 17 import java.util.Enumeration ; 18 import java.net.URL ; 19 import java.net.MalformedURLException ; 20 21 import org.apache.commons.logging.Log; 22 import org.apache.commons.logging.LogFactory; 23 24 public class MainServlet extends HttpServlet { 25 26 private static Log log = LogFactory.getLog(MainServlet.class); 27 28 private PathDispatcher dispatcher = new PathDispatcher(); 29 private static final String AWT_HEADLESS = "java.awt.headless"; 30 31 public void init(ServletConfig servletConfig) throws ServletException { 32 super.init(servletConfig); 33 try { 34 ServletContext servletContext = servletConfig.getServletContext(); 35 String awtHeadless = System.getProperty(AWT_HEADLESS); 36 if (null == awtHeadless) { 37 System.setProperty(AWT_HEADLESS, "true"); 38 } 39 final Configuration configuration = new ServletContextConfiguration("com.icesoft.faces", servletContext); 40 final IdGenerator idGenerator = getIdGenerator(servletContext); 41 42 PseudoServlet sessionServer = new SessionDispatcher() { 43 protected PseudoServlet newServlet(HttpSession session, Listener.Monitor sessionMonitor) { 44 return new MainSessionBoundServlet(session, sessionMonitor, idGenerator, configuration); 45 } 46 }; 47 PseudoServlet resourceServer = new BasicAdaptingServlet(new ResourceServer(configuration)); 48 49 dispatcher.dispatchOn(".*xmlhttp\\/.*", resourceServer); 50 dispatcher.dispatchOn(".*", sessionServer); 51 } catch (Exception e) { 52 throw new ServletException (e); 53 } 54 } 55 56 private IdGenerator getIdGenerator(ServletContext servletContext) 57 throws MalformedURLException { 58 URL res = servletContext.getResource("/"); 59 if( res == null ){ 63 res = servletContext.getResource("/WEB-INF/web.xml"); 64 if( res == null ){ 65 if( log.isErrorEnabled() ){ 66 log.error( "invalid resource path" ); 67 } 68 throw new NullPointerException ("invalid resource path"); 69 } 70 } 71 return new IdGenerator(res.getPath()); 72 } 73 74 public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException , IOException { 75 if( log.isTraceEnabled() ){ 76 log.trace(getIncludeInfo(request,"entering main servlet")); 77 } 78 79 request.setAttribute(PersistentFacesCommonlet.SERVLET_KEY, 82 PersistentFacesCommonlet.PERSISTENT); 83 84 try { 85 dispatcher.service(request, response); 86 } catch (RuntimeException e) { 87 throw e; 88 } catch (Exception e) { 89 throw new ServletException (e); 90 } 91 } 92 93 private String getIncludeInfo(HttpServletRequest req, String header) { 94 StringBuffer buff = new StringBuffer (header); 95 buff.append("\nvia Attributes - via Methods"); 96 97 buff.append("\n"); 98 buff.append(Constants.INC_CONTEXT_PATH); 99 buff.append(": "); 100 buff.append(req.getAttribute(Constants.INC_CONTEXT_PATH)); 101 buff.append(" - "); 102 buff.append(req.getContextPath()); 103 104 buff.append("\n"); 105 buff.append(Constants.INC_PATH_INFO); 106 buff.append(": "); 107 buff.append(req.getAttribute(Constants.INC_PATH_INFO)); 108 buff.append(" - "); 109 buff.append(req.getPathInfo()); 110 111 buff.append("\n"); 112 buff.append(Constants.INC_QUERY_STRING); 113 buff.append(": "); 114 buff.append(req.getAttribute(Constants.INC_QUERY_STRING)); 115 buff.append(" - "); 116 buff.append(req.getQueryString()); 117 118 buff.append("\n"); 119 buff.append(Constants.INC_REQUEST_URI); 120 buff.append(": "); 121 buff.append(req.getAttribute(Constants.INC_REQUEST_URI)); 122 buff.append(" - "); 123 buff.append(req.getRequestURI()); 124 125 buff.append("\n"); 126 buff.append(Constants.INC_SERVLET_PATH); 127 buff.append(": "); 128 buff.append(req.getAttribute(Constants.INC_SERVLET_PATH)); 129 buff.append(" - "); 130 buff.append(req.getServletPath()); 131 132 buff.append("\n\n"); 133 buff.append("via getAttributeNames():\n"); 134 Enumeration attrNames = req.getAttributeNames(); 135 while (attrNames.hasMoreElements()) { 136 String key = (String )attrNames.nextElement(); 137 Object val = req.getAttribute(key); 138 buff.append("\t"); 139 buff.append(key); 140 buff.append(": "); 141 buff.append(val.toString()); 142 buff.append("\n"); 143 } 144 145 return buff.toString(); 146 } 147 148 public void destroy() { 149 dispatcher.shutdown(); 150 } 151 } 152 | Popular Tags |