remoteservletwrapper.java

来自「很棒的web服务器源代码」· Java 代码 · 共 154 行

JAVA
154
字号
// RemoteServletWrapper.java// $Id: RemoteServletWrapper.java,v 1.13 2001/11/12 14:02:05 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1997.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.jigsaw.servlet;import javax.servlet.ServletException;import org.w3c.tools.resources.Attribute;import org.w3c.tools.resources.AttributeHolder;import org.w3c.tools.resources.AttributeRegistry;import org.w3c.tools.resources.Resource;import org.w3c.tools.resources.ServerInterface;import org.w3c.tools.resources.StringAttribute;/** *  @author Alexandre Rafalovitch <alex@access.com.au> *  @author Anselm Baird-Smith <abaird@w3.org> */public class RemoteServletWrapper extends ServletWrapper {    private static final boolean debug = false;    /**     * Attribute index - The servlet content base.     */    protected static int ATTR_SERVLET_BASE = -1;    static {	Class     c = null;	Attribute a = null;	try {	    c = Class.forName("org.w3c.jigsaw.servlet.RemoteServletWrapper");	} catch (Exception ex) {	    ex.printStackTrace();	    System.exit(1);	}	// Register the servlet base URL:	a = new StringAttribute("servlet-base"				, null				, Attribute.EDITABLE|Attribute.MANDATORY);	ATTR_SERVLET_BASE = AttributeRegistry.registerAttribute(c, a);    }        /**     * The ServletLoader instance for loading that servlet.     */    protected ServletLoader loader = null;    /**     * Check the servlet class, ans try to initialize it.     * @exception ClassNotFoundException if servlet class can't be found.     * @exception ServletException if servlet can't be initialized.     */    protected void checkServlet() 	throws ClassNotFoundException, ServletException    {        synchronized(servletPool) {             // synchronization for pool access added, tk, 21.10.2001  	    if (! inited) {		inited = launchServlet();            }        }    }    /**      * Get or create a suitable ServletLoader instance to load that servlet.     * @return A ServletLoader instance.     */    protected synchronized ServletLoader getServletLoader() {	if ( loader == null ) {	    loader = new ServletLoader(this);	}	return loader;    }    /**     * Get the remote servlet URL base.     * @return The String encoded base URL for that servlet, or <strong>null     * </strong> if undefined.     */    public String getServletBase() {	return getString(ATTR_SERVLET_BASE, null);    }    public void setValue(int idx, Object value) {	super.setValueOfSuperClass(idx, value);	try {	    // synchronization for pool access added, tk, 21.10.2001	    synchronized(servletPool) {  	        if ((idx == ATTR_SERVLET_CLASS) && (value != null)) {		    inited = launchServlet();		}	        if ((idx == ATTR_SERVLET_BASE) && (value != null)) {		    inited = launchServlet();		}            }	} catch (Exception ex) {	    String msg = ("unable to set servlet class \""+			  getServletClass()+			  "\" : "+			  ex.getMessage());	    getServer().errlog(msg);	}    }    /**     * Initialize the servlet.     * @exception ClassNotFoundException if servlet class can't be found.     * @exception ServletException if servlet can't be initialized.     */    protected boolean launchServlet() 	throws ClassNotFoundException, ServletException    {	if ( debug ) {	    System.out.println("Launching servlet: "+getServletClass());	}	// Get and check the servlet class:	// if ( servlet != null )	destroyServlet();        if (inited) { 	    String msg = "relaunching servlet failed due to incomplete \""		+ getServletClass() + "\" cleanup.";	    getServer().errlog(this, msg); 	    return false;        } else {	    // Load appropriate servlet class:	    Class c = null;	    try {		// Load the servlet class through the loader:		c = getServletLoader().loadClass(getServletClass(), true);	    } catch (ClassFormatError er) {		String msg = ("class \""+getServletClass()+"\" loaded from "			      + getServletBase() + ", invalid format.");		if ( debug ) {		    er.printStackTrace();		}		getServer().errlog(this, msg);	    } catch (ClassNotFoundException ex) {		String msg = ("class \""+getServletClass()+"\" loaded from "			      + getServletBase() + ", not found.");		if ( debug ) {		    ex.printStackTrace();		}		getServer().errlog(this, msg);	    } 	    return (c != null) ? launchServlet(c) : false;        }    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?