remm 2005/01/12 09:45:05 Modified: catalina/src/share/org/apache/catalina/core StandardServer.java Log: - Remove all of the dead code (it can be retrieved easily from CVS). Revision Changes Path 1.41 +1 -1356 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardServer.java Index: StandardServer.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardServer.java,v retrieving revision 1.40 retrieving revision 1.41 diff -u -r1.40 -r1.41 --- StandardServer.java 11 Jan 2005 20:02:13 -0000 1.40 +++ StandardServer.java 12 Jan 2005 17:45:03 -0000 1.41 @@ -18,66 +18,33 @@ package org.apache.catalina.core; -import java.beans.IndexedPropertyDescriptor; -import java.beans.Introspector; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; -import java.beans.PropertyDescriptor; -import java.io.File; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.security.AccessControlException; -import java.sql.Timestamp; -import java.util.Iterator; import java.util.Random; import javax.management.MBeanRegistration; import javax.management.MBeanServer; import javax.management.ObjectName; -import javax.naming.directory.DirContext; -import javax.servlet.http.HttpServletResponse; -import org.apache.catalina.Container; import org.apache.catalina.Context; -import org.apache.catalina.Engine; -import org.apache.catalina.Host; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; -import org.apache.catalina.Loader; -import org.apache.catalina.Manager; -import org.apache.catalina.Pipeline; -import org.apache.catalina.Realm; import org.apache.catalina.Server; import org.apache.catalina.ServerFactory; import org.apache.catalina.Service; -import org.apache.catalina.Store; -import org.apache.catalina.Valve; -import org.apache.catalina.connector.Connector; -import org.apache.catalina.deploy.ApplicationParameter; -import org.apache.catalina.deploy.ContextEjb; -import org.apache.catalina.deploy.ContextEnvironment; -import org.apache.catalina.deploy.ContextLocalEjb; -import org.apache.catalina.deploy.ContextResource; -import org.apache.catalina.deploy.ContextResourceEnvRef; -import org.apache.catalina.deploy.ContextResourceLink; import org.apache.catalina.deploy.NamingResources; -import org.apache.catalina.loader.WebappLoader; -import org.apache.catalina.session.PersistentManager; -import org.apache.catalina.session.StandardManager; import org.apache.catalina.util.LifecycleSupport; import org.apache.catalina.util.StringManager; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.modeler.Registry; -import org.apache.coyote.ProtocolHandler; -import org.apache.tomcat.util.IntrospectionUtils; import org.apache.tomcat.util.buf.StringCache; @@ -102,94 +69,6 @@ /** - * The set of class/property combinations that should <strong>NOT</strong> - * be persisted because they are automatically calculated. - */ - private static String exceptions[][] = { - { "org.apache.catalina.core.StandardEngine", "domain" }, - { "org.apache.catalina.core.StandardHost", "domain" }, - { "org.apache.catalina.core.StandardContext", "available" }, - { "org.apache.catalina.core.StandardContext", "configFile" }, - { "org.apache.catalina.core.StandardContext", "configured" }, - { "org.apache.catalina.core.StandardContext", "distributable" }, - { "org.apache.catalina.core.StandardContext", "domain" }, - { "org.apache.catalina.core.StandardContext", "engineName" }, - { "org.apache.catalina.core.StandardContext", "name" }, - { "org.apache.catalina.core.StandardContext", "override" }, - { "org.apache.catalina.core.StandardContext", "publicId" }, - { "org.apache.catalina.core.StandardContext", "replaceWelcomeFiles" }, - { "org.apache.catalina.core.StandardContext", "sessionTimeout" }, - { "org.apache.catalina.core.StandardContext", "startupTime" }, - { "org.apache.catalina.core.StandardContext", "tldScanTime" }, - //{ "org.apache.catalina.core.StandardContext", "workDir" }, - { "org.apache.catalina.session.StandardManager", "distributable" }, - { "org.apache.catalina.session.StandardManager", "entropy" }, - { "org.apache.coyote.http11.Http11Protocol", "port"}, - { "org.apache.coyote.http11.Http11Protocol", "soTimeout"}, - { "org.apache.jk.server.JkCoyoteHandler", "name"}, - - }; - - - /** - * The set of classes that represent persistable properties. - */ - private static Class persistables[] = { - String.class, - Integer.class, Integer.TYPE, - Boolean.class, Boolean.TYPE, - Byte.class, Byte.TYPE, - Character.class, Character.TYPE, - Double.class, Double.TYPE, - Float.class, Float.TYPE, - Long.class, Long.TYPE, - Short.class, Short.TYPE, - }; - - - /** - * The set of class names that should be skipped when persisting state, - * because the corresponding listeners, valves, etc. are configured - * automatically at startup time. - */ - private static String skippables[] = { - "org.apache.catalina.authenticator.BasicAuthenticator", - "org.apache.catalina.authenticator.DigestAuthenticator", - "org.apache.catalina.authenticator.FormAuthenticator", - "org.apache.catalina.authenticator.NonLoginAuthenticator", - "org.apache.catalina.authenticator.SSLAuthenticator", - "org.apache.catalina.core.NamingContextListener", - "org.apache.catalina.core.StandardContextValve", - "org.apache.catalina.core.StandardDefaultContext", - "org.apache.catalina.core.StandardEngineValve", - "org.apache.catalina.core.StandardHostValve", - "org.apache.catalina.startup.ContextConfig", - "org.apache.catalina.startup.EngineConfig", - "org.apache.catalina.startup.HostConfig", - "org.apache.catalina.valves.CertificatesValve", - "org.apache.catalina.valves.ErrorReportValve", - "org.apache.catalina.valves.RequestListenerValve", - }; - - - /** - * The set of class names that are the standard implementations of - * components, and hence should not be persisted. - */ - private static String standardImplementations[] = { - "org.apache.catalina.connector.Connector", - "org.apache.catalina.core.StandardServer", - "org.apache.catalina.core.StandardService", - "org.apache.catalina.core.StandardEngine", - "org.apache.catalina.core.StandardHost", - "org.apache.catalina.core.StandardContext", - "org.apache.coyote.http11.Http11Protocol", - "org.apache.jk.server.JkCoyoteHandler" - - }; - - - /** * ServerLifecycleListener classname. */ private static String SERVER_LISTENER_CLASS_NAME = @@ -688,94 +567,7 @@ } catch (Throwable t) { log.error(t); } -/* - // Calculate file objects for the old and new configuration files. - String configFile = "conf/server.xml"; // FIXME - configurable? - File configOld = new File(configFile); - if (!configOld.isAbsolute()) { - configOld = new File(System.getProperty("catalina.base"), - configFile); - } - File configNew = new File(configFile + ".new"); - if (!configNew.isAbsolute()) { - configNew = new File(System.getProperty("catalina.base"), - configFile + ".new"); - } - String ts = (new Timestamp(System.currentTimeMillis())).toString(); - // yyyy-mm-dd hh:mm:ss - // 0123456789012345678 - StringBuffer sb = new StringBuffer("."); - sb.append(ts.substring(0, 10)); - sb.append('.'); - sb.append(ts.substring(11, 13)); - sb.append('-'); - sb.append(ts.substring(14, 16)); - sb.append('-'); - sb.append(ts.substring(17, 19)); - File configSave = new File(configFile + sb.toString()); - if (!configSave.isAbsolute()) { - configSave = new File(System.getProperty("catalina.base"), - configFile + sb.toString()); - } - - // Open an output writer for the new configuration file - PrintWriter writer = null; - try { - writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(configNew), "UTF8")); - } catch (IOException e) { - if (writer != null) { - try { - writer.close(); - } catch (Throwable t) { - ; - } - } - throw (e); - } - // Store the state of this Server MBean - // (which will recursively store everything - try { - storeServer(writer, 0, this); - } catch (Exception e) { - if (writer != null) { - try { - writer.close(); - } catch (Throwable t) { - ; - } - } - throw (e); - } - - // Flush and close the output file - try { - writer.flush(); - } catch (Exception e) { - throw (e); - } - try { - writer.close(); - } catch (Exception e) { - throw (e); - } - - // Shuffle old->save and new->old - if (configOld.renameTo(configSave)) { - if (configNew.renameTo(configOld)) { - return; - } else { - configSave.renameTo(configOld); - throw new IOException("Cannot rename " + - configNew.getAbsolutePath() + " to " + - configOld.getAbsolutePath()); - } - } else { - throw new IOException("Cannot rename " + - configOld.getAbsolutePath() + " to " + - configSave.getAbsolutePath()); - } -*/ } @@ -805,1153 +597,6 @@ log.error(t); } - /* - String configFile = context.getConfigFile(); - - if (configFile != null) { - File config = new File(configFile); - if (!config.isAbsolute()) { - config = new File(System.getProperty("catalina.base"), - configFile); - } - - // Open an output writer for the new configuration file - PrintWriter writer = null; - try { - writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(config), "UTF8")); - } catch (IOException e) { - if (writer != null) { - try { - writer.close(); - } catch (Throwable t) { - ; - } - } - throw (e); - } - - writer.println("<?xml version='1.0' encoding='utf-8'?>"); - writer.print("<Context"); - storeAttributes(writer, context); - writer.println(">"); - writer.println("</Context>"); - - // Flush and close the output file - try { - writer.flush(); - } catch (Exception e) { - throw (e); - } - try { - writer.close(); - } catch (Exception e) { - throw (e); - } - } -*/ - } - - - // -------------------------------------------------------- Private Methods - - - /** Given a string, this method replaces all occurrences of - * '<', '>', '&', and '"'. - */ - - private String convertStr(String input) { - - StringBuffer filtered = new StringBuffer(input.length()); - char c; - for(int i=0; i<input.length(); i++) { - c = input.charAt(i); - if (c == '<') { - filtered.append("<"); - } else if (c == '>') { - filtered.append(">"); - } else if (c == '\'') { - filtered.append("'"); - } else if (c == '"') { - filtered.append("""); - } else if (c == '&') { - filtered.append("&"); - } else { - filtered.append(c); - } - } - return(filtered.toString()); - } - - - /** - * Is this an instance of the default <code>Loader</code> configuration, - * with all-default properties? - * - * @param loader Loader to be tested - */ - private boolean isDefaultLoader(Loader loader) { - - if (!(loader instanceof WebappLoader)) { - return (false); - } - WebappLoader wloader = (WebappLoader) loader; - if ((wloader.getDelegate() != false) || - !wloader.getLoaderClass().equals - ("org.apache.catalina.loader.WebappClassLoader")) { - return (false); - } - return (true); - - } - - - /** - * Is this an instance of the default <code>Manager</code> configuration, - * with all-default properties? - * - * @param manager Manager to be tested - */ - private boolean isDefaultManager(Manager manager) { - - if (!(manager instanceof StandardManager)) { - return (false); - } - StandardManager smanager = (StandardManager) manager; - if (!smanager.getPathname().equals("SESSIONS.ser") || - !smanager.getRandomClass().equals("java.security.SecureRandom") || - (smanager.getMaxActiveSessions() != -1) || - !smanager.getAlgorithm().equals("MD5")) { - return (false); - } - return (true); - - } - - - /** - * Is the specified class name + property name combination an - * exception that should not be persisted? - * - * @param className The class name to check - * @param property The property name to check - */ - private boolean isException(String className, String property) { - - for (int i = 0; i < exceptions.length; i++) { - if (className.equals(exceptions[i][0]) && - property.equals(exceptions[i][1])) { - return (true); - } - } - return (false); - - } - - - /** - * Is the specified property type one for which we should generate - * a persistence attribute? - * - * @param clazz Java class to be tested - */ - private boolean isPersistable(Class clazz) { - - for (int i = 0; i < persistables.length; i++) { - if (persistables[i] == clazz) { - return (true); - } - } - return (false); - - } - - - /** - * Is the specified class name one that should be skipped because - * the corresponding component is configured automatically at - * startup time? - * - * @param className Class name to be tested - */ - private boolean isSkippable(String className) { - - for (int i = 0; i < skippables.length; i++) { - if (skippables[i].equals(className)) { - return (true); - } - } - return (false); - - } - - - /** - * Store the relevant attributes of the specified JavaBean, plus a - * <code>className</code> attribute defining the fully qualified - * Java class name of the bean. - * - * @param writer PrintWriter to which we are storing - * @param bean Bean whose properties are to be rendered as attributes, - * - * @exception Exception if an exception occurs while storing - */ - private void storeAttributes(PrintWriter writer, - Object bean) throws Exception { - - storeAttributes(writer, true, bean); - - } - - - /** - * Store the relevant attributes of the specified JavaBean. - * - * @param writer PrintWriter to which we are storing - * @param include Should we include a <code>className</code> attribute? - * @param bean Bean whose properties are to be rendered as attributes, - * - * @exception Exception if an exception occurs while storing - */ - private void storeAttributes(PrintWriter writer, boolean include, - Object bean) throws Exception { - - // FIXME: Add support for storing all attributes - - // Render the relevant properties of this bean - String className = bean.getClass().getName(); - // Render a className attribute if requested - if (include) { - for (int i = 0; i < standardImplementations.length; i++) { - if (className.equals(standardImplementations[i])) { - include = false; - } - } - if (include) { - writer.print(" className=\""); - writer.print(bean.getClass().getName()); - writer.print("\""); - } - } - - // Acquire the list of properties for this bean - PropertyDescriptor descriptors[] = - Introspector.getBeanInfo(bean.getClass()).getPropertyDescriptors(); - if (descriptors == null) { - descriptors = new PropertyDescriptor[0]; - } - - // Create blank instance - Object bean2 = bean.getClass().newInstance(); - for (int i = 0; i < descriptors.length; i++) { - if (descriptors[i] instanceof IndexedPropertyDescriptor) { - continue; // Indexed properties are not persisted - } - if (!isPersistable(descriptors[i].getPropertyType()) || - (descriptors[i].getReadMethod() == null) || - (descriptors[i].getWriteMethod() == null)) { - continue; // Must be a read-write primitive or String - } - Object value = - IntrospectionUtils.getProperty(bean, - descriptors[i].getName()); - Object value2 = - IntrospectionUtils.getProperty(bean2, - descriptors[i].getName()); - if (value == null) { - continue; // Null values are not persisted - } - if (isException(className, descriptors[i].getName())) { - continue; // Skip the specified exceptions - } - if (value.equals(value2)) { - // The property has its default value - continue; - } - if (!(value instanceof String)) { - value = value.toString(); - } - writer.print(' '); - writer.print(descriptors[i].getName()); - writer.print("=\""); - String strValue = convertStr((String) value); - writer.print(strValue); - writer.print("\""); - } - - } - - - /** - * Store the specified Connector properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param connector Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeConnector(PrintWriter writer, int indent, - Connector connector) throws Exception { - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Connector"); - storeAttributes(writer, connector); - - if (connector instanceof Connector) { - ProtocolHandler protocolHandler = - ((Connector)connector).getProtocolHandler(); - storeAttributes(writer, protocolHandler); - } - - writer.println(">"); - - // Store nested <Listener> elements - if (connector instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) connector).findLifecycleListeners(); - if (listeners == null) { - listeners = new LifecycleListener[0]; - } - for (int i = 0; i < listeners.length; i++) { - if (listeners[i].getClass().getName().equals - (SERVER_LISTENER_CLASS_NAME)) { - continue; - } - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Connector>"); - - } - - - /** - * Store the specified Context properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param context Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeContext(PrintWriter writer, int indent, - Context context) throws Exception { - - String configFile = context.getConfigFile(); - - if (configFile != null) { - - File config = new File(configFile); - if (!config.isAbsolute()) { - config = new File(System.getProperty("catalina.base"), - configFile); - } - - // Open an output writer for the new configuration file - writer = null; - try { - File parent = config.getParentFile(); - if ((parent != null) && (!parent.exists())) { - parent.mkdirs(); - } - writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(config), "UTF8")); - } catch (Exception e) { - if (writer != null) { - try { - writer.close(); - } catch (Throwable t) { - ; - } - } - throw (e); - } - - writer.println("<?xml version='1.0' encoding='utf-8'?>"); - indent = 0; - - } - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - - writer.print("<Context"); - storeAttributes(writer, context); - writer.println(">"); - - // Store nested <InstanceListener> elements - String iListeners[] = context.findInstanceListeners(); - for (int i = 0; i < iListeners.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<InstanceListener>"); - writer.print(iListeners[i]); - writer.println("</InstanceListener>"); - } - - // Store nested <Listener> elements - if (context instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) context).findLifecycleListeners(); - for (int i = 0; i < listeners.length; i++) { - if (listeners[i].getClass().getName().equals - (SERVER_LISTENER_CLASS_NAME)) { - continue; - } - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store nested <Loader> element - Loader loader = context.getLoader(); - if (loader != null) { - storeLoader(writer, indent + 2, loader); - } - - // Store nested <Manager> element - Manager manager = context.getManager(); - if (manager != null) { - storeManager(writer, indent + 2, manager); - } - - // Store nested <Parameter> elements - ApplicationParameter[] appParams = context.findApplicationParameters(); - for (int i = 0; i < appParams.length; i++) { - for (int j = 0; j < indent + 2; j++) { - writer.print(' '); - } - writer.print("<Parameter"); - storeAttributes(writer, false, appParams[i]); - writer.println("/>"); - } - - // Store nested <Realm> element - Realm realm = context.getRealm(); - if (realm != null) { - Realm parentRealm = null; - if (context.getParent() != null) { - parentRealm = context.getParent().getRealm(); - } - if (realm != parentRealm) { - storeRealm(writer, indent + 2, realm); - } - } - - // Store nested <Resources> element - DirContext resources = context.getResources(); - if (resources != null) { - storeResources(writer, indent + 2, resources); - } - - // Store nested <Valve> elements - if (context instanceof Pipeline) { - Valve valves[] = ((Pipeline) context).getValves(); - for (int i = 0; i < valves.length; i++) { - storeValve(writer, indent + 2, valves[i]); - } - } - - // Store nested <WrapperLifecycle> elements - String wLifecycles[] = context.findWrapperLifecycles(); - for (int i = 0; i < wLifecycles.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<WrapperLifecycle>"); - writer.print(wLifecycles[i]); - writer.println("</WrapperLifecycle>"); - } - - // Store nested <WrapperListener> elements - String wListeners[] = context.findWrapperListeners(); - for (int i = 0; i < wListeners.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<WrapperListener>"); - writer.print(wListeners[i]); - writer.println("</WrapperListener>"); - } - - // Store nested naming resources elements - NamingResources nresources = context.getNamingResources(); - if (nresources != null) { - storeNamingResources(writer, indent + 2, nresources); - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Context>"); - - if (configFile != null) { - - // Flush and close the output file - try { - writer.flush(); - } catch (Exception e) { - throw (e); - } - try { - writer.close(); - } catch (Exception e) { - throw (e); - } - } - - } - - - /** - * Store the specified Engine properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param engine Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeEngine(PrintWriter writer, int indent, - Engine engine) throws Exception { - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Engine"); - storeAttributes(writer, engine); - writer.println(">"); - - // Store nested <Host> elements (or other relevant containers) - Container children[] = engine.findChildren(); - for (int i = 0; i < children.length; i++) { - if (children[i] instanceof Context) { - storeContext(writer, indent + 2, (Context) children[i]); - } else if (children[i] instanceof Engine) { - storeEngine(writer, indent + 2, (Engine) children[i]); - } else if (children[i] instanceof Host) { - storeHost(writer, indent + 2, (Host) children[i]); - } - } - - // Store nested <Listener> elements - if (engine instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) engine).findLifecycleListeners(); - for (int i = 0; i < listeners.length; i++) { - if (listeners[i].getClass().getName().equals - (SERVER_LISTENER_CLASS_NAME)) { - continue; - } - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store nested <Realm> element - Realm realm = engine.getRealm(); - if (realm != null) { - Realm parentRealm = null; - if (engine.getParent() != null) { - parentRealm = engine.getParent().getRealm(); - } - if (realm != parentRealm) { - storeRealm(writer, indent + 2, realm); - } - } - - // Store nested <Valve> elements - if (engine instanceof Pipeline) { - Valve valves[] = ((Pipeline) engine).getValves(); - for (int i = 0; i < valves.length; i++) { - storeValve(writer, indent + 2, valves[i]); - } - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Engine>"); - - } - - - /** - * Store the specified Host properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param host Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeHost(PrintWriter writer, int indent, - Host host) throws Exception { - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Host"); - storeAttributes(writer, host); - writer.println(">"); - - // Store nested <Alias> elements - String aliases[] = host.findAliases(); - for (int i = 0; i < aliases.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<Alias>"); - writer.print(aliases[i]); - writer.println("</Alias>"); - } - - // Store nested <Cluster> elements - ; // FIXME - But it's not supported by any standard Host implementation - - // Store nested <Context> elements (or other relevant containers) - Container children[] = host.findChildren(); - for (int i = 0; i < children.length; i++) { - if (children[i] instanceof Context) { - storeContext(writer, indent + 2, (Context) children[i]); - } else if (children[i] instanceof Engine) { - storeEngine(writer, indent + 2, (Engine) children[i]); - } else if (children[i] instanceof Host) { - storeHost(writer, indent + 2, (Host) children[i]); - } - } - - // Store nested <Listener> elements - if (host instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) host).findLifecycleListeners(); - for (int i = 0; i < listeners.length; i++) { - if (listeners[i].getClass().getName().equals - (SERVER_LISTENER_CLASS_NAME)) { - continue; - } - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store nested <Realm> element - Realm realm = host.getRealm(); - if (realm != null) { - Realm parentRealm = null; - if (host.getParent() != null) { - parentRealm = host.getParent().getRealm(); - } - if (realm != parentRealm) { - storeRealm(writer, indent + 2, realm); - } - } - - // Store nested <Valve> elements - if (host instanceof Pipeline) { - Valve valves[] = ((Pipeline) host).getValves(); - for (int i = 0; i < valves.length; i++) { - storeValve(writer, indent + 2, valves[i]); - } - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Host>"); - - } - - - /** - * Store the specified Listener properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param listener Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeListener(PrintWriter writer, int indent, - LifecycleListener listener) throws Exception { - - if (isSkippable(listener.getClass().getName())) { - return; - } - - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Listener"); - storeAttributes(writer, listener); - writer.println("/>"); - - } - - - /** - * Store the specified Loader properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param loader Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeLoader(PrintWriter writer, int indent, - Loader loader) throws Exception { - - if (isDefaultLoader(loader)) { - return; - } - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Loader"); - storeAttributes(writer, loader); - writer.println("/>"); - - } - - - /** - * Store the specified Manager properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param manager Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeManager(PrintWriter writer, int indent, - Manager manager) throws Exception { - - if (isDefaultManager(manager)) { - return; - } - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Manager"); - storeAttributes(writer, manager); - writer.println(">"); - - // Store nested <Store> element - if (manager instanceof PersistentManager) { - Store store = ((PersistentManager) manager).getStore(); - if (store != null) { - storeStore(writer, indent + 2, store); - } - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Manager>"); - - } - - - /** - * Store the specified NamingResources properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param resources Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeNamingResources(PrintWriter writer, int indent, - NamingResources resources) - throws Exception { - - // FIXME: Store extra attributes for some of these - - // Store nested <Ejb> elements - ContextEjb[] ejbs = resources.findEjbs(); - if (ejbs.length > 0) { - for (int i = 0; i < ejbs.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<Ejb"); - storeAttributes(writer, false, ejbs[i]); - Iterator properties = ejbs[i].listProperties(); - while (properties.hasNext()) { - String name = (String) properties.next(); - writer.print(' '); - writer.print(name); - writer.print("=\""); - String strValue = convertStr((String) ejbs[i].getProperty(name)); - writer.print(strValue); - writer.print("\""); - } - writer.println("/>"); - } - } - - // Store nested <Environment> elements - ContextEnvironment[] envs = resources.findEnvironments(); - if (envs.length > 0) { - for (int i = 0; i < envs.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<Environment"); - storeAttributes(writer, false, envs[i]); - writer.println("/>"); - } - } - - // Store nested <LocalEjb> elements - ContextLocalEjb[] lejbs = resources.findLocalEjbs(); - if (lejbs.length > 0) { - for (int i = 0; i < lejbs.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<LocalEjb"); - storeAttributes(writer, false, lejbs[i]); - Iterator properties = lejbs[i].listProperties(); - while (properties.hasNext()) { - String name = (String) properties.next(); - writer.print(' '); - writer.print(name); - writer.print("=\""); - String strValue = convertStr((String) lejbs[i].getProperty(name)); - writer.print(strValue); - writer.print("\""); - } - writer.println("/>"); - } - } - - // Store nested <Resource> elements - ContextResource[] dresources = resources.findResources(); - for (int i = 0; i < dresources.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<Resource"); - storeAttributes(writer, false, dresources[i]); - Iterator properties = dresources[i].listProperties(); - while (properties.hasNext()) { - String name = (String) properties.next(); - writer.print(' '); - writer.print(name); - writer.print("=\""); - String strValue = convertStr((String) dresources[i].getProperty(name)); - writer.print(strValue); - writer.print("\""); - } - writer.println("/>"); - } - - // Store nested <ResourceEnvRef> elements - ContextResourceEnvRef[] eresources = resources.findResourceEnvRefs(); - for (int i = 0; i < eresources.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.println("<ResourceEnvRef"); - storeAttributes(writer, false, eresources[i]); - Iterator properties = eresources[i].listProperties(); - while (properties.hasNext()) { - String name = (String) properties.next(); - writer.print(' '); - writer.print(name); - writer.print("=\""); - String strValue = convertStr((String) eresources[i].getProperty(name)); - writer.print(strValue); - writer.print("\""); - } - writer.println("/>"); - } - - // Store nested <ResourceLink> elements - ContextResourceLink[] resourceLinks = resources.findResourceLinks(); - for (int i = 0; i < resourceLinks.length; i++) { - for (int j = 0; j < indent; j++) { - writer.print(' '); - } - writer.print("<ResourceLink"); - storeAttributes(writer, false, resourceLinks[i]); - writer.println("/>"); - } - - } - - - /** - * Store the specified Realm properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param realm Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeRealm(PrintWriter writer, int indent, - Realm realm) throws Exception { - - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Realm"); - storeAttributes(writer, realm); - writer.println("/>"); - - } - - - /** - * Store the specified Resources properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param resources Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeResources(PrintWriter writer, int indent, - DirContext resources) throws Exception { - - if (resources instanceof org.apache.naming.resources.FileDirContext) { - return; - } - if (resources instanceof org.apache.naming.resources.ProxyDirContext) { - return; - } - if (resources instanceof org.apache.naming.resources.WARDirContext) { - return; - } - - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Resources"); - storeAttributes(writer, resources); - writer.println("/>"); - - } - - - /** - * Store the specified Server properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param server Object to be stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeServer(PrintWriter writer, int indent, - Server server) throws Exception { - - // Store the beginning of this element - writer.println("<?xml version='1.0' encoding='utf-8'?>"); - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Server"); - storeAttributes(writer, server); - writer.println(">"); - - // Store nested <Listener> elements - if (server instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) server).findLifecycleListeners(); - for (int i = 0; i < listeners.length; i++) { - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store nested <GlobalNamingResources> element - NamingResources globalNamingResources = - server.getGlobalNamingResources(); - if (globalNamingResources != null) { - for (int i = 0; i < indent + 2; i++) { - writer.print(' '); - } - writer.println("<GlobalNamingResources>"); - storeNamingResources(writer, indent + 4, globalNamingResources); - for (int i = 0; i < indent + 2; i++) { - writer.print(' '); - } - writer.println("</GlobalNamingResources>"); - } - - // Store nested <Service> elements - Service services[] = server.findServices(); - for (int i = 0; i < services.length; i++) { - storeService(writer, indent + 2, services[i]); - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Server>"); - - } - - - /** - * Store the specified Service properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param service Object to be stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeService(PrintWriter writer, int indent, - Service service) throws Exception { - - // Store the beginning of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Service"); - storeAttributes(writer, service); - writer.println(">"); - - // Store nested <Connector> elements - Connector connectors[] = service.findConnectors(); - for (int i = 0; i < connectors.length; i++) { - storeConnector(writer, indent + 2, connectors[i]); - } - - // Store nested <Engine> element (or other appropriate container) - Container container = service.getContainer(); - if (container != null) { - if (container instanceof Context) { - storeContext(writer, indent + 2, (Context) container); - } else if (container instanceof Engine) { - storeEngine(writer, indent + 2, (Engine) container); - } else if (container instanceof Host) { - storeHost(writer, indent + 2, (Host) container); - } - } - - // Store nested <Listener> elements - if (service instanceof Lifecycle) { - LifecycleListener listeners[] = - ((Lifecycle) service).findLifecycleListeners(); - for (int i = 0; i < listeners.length; i++) { - if (listeners[i].getClass().getName().equals - (SERVER_LISTENER_CLASS_NAME)) { - continue; - } - storeListener(writer, indent + 2, listeners[i]); - } - } - - // Store the ending of this element - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.println("</Service>"); - - } - - - /** - * Store the specified Store properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param store Object whose properties are being stored - * - * @exception Exception if an exception occurs while storing - */ - private void storeStore(PrintWriter writer, int indent, - Store store) throws Exception { - - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Store"); - storeAttributes(writer, store); - writer.println("/>"); - - } - - - /** - * Store the specified Valve properties. - * - * @param writer PrintWriter to which we are storing - * @param indent Number of spaces to indent this element - * @param valve Object whose properties are being valved - * - * @exception Exception if an exception occurs while storing - */ - private void storeValve(PrintWriter writer, int indent, - Valve valve) throws Exception { - - if (isSkippable(valve.getClass().getName())) { - return; - } - - for (int i = 0; i < indent; i++) { - writer.print(' '); - } - writer.print("<Valve"); - storeAttributes(writer, valve); - writer.println("/>"); - - } - - - /** - * Return <code>true</code> if the specified client and server addresses - * are the same. This method works around a bug in the IBM 1.1.8 JVM on - * Linux, where the address bytes are returned reversed in some - * circumstances. - * - * @param server The server's InetAddress - * @param client The client's InetAddress - */ - private boolean isSameAddress(InetAddress server, InetAddress client) { - - // Compare the byte array versions of the two addresses - byte serverAddr[] = server.getAddress(); - byte clientAddr[] = client.getAddress(); - if (serverAddr.length != clientAddr.length) - return (false); - boolean match = true; - for (int i = 0; i < serverAddr.length; i++) { - if (serverAddr[i] != clientAddr[i]) { - match = false; - break; - } - } - if (match) - return (true); - - // Compare the reversed form of the two addresses - for (int i = 0; i < serverAddr.length; i++) { - if (serverAddr[i] != clientAddr[(serverAddr.length-1)-i]) - return (false); - } - return (true); - }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]