diff options
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusParser.java')
-rw-r--r-- | rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusParser.java | 228 |
1 files changed, 228 insertions, 0 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusParser.java b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusParser.java new file mode 100644 index 00000000..87595d99 --- /dev/null +++ b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusParser.java @@ -0,0 +1,228 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.jk.status; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.tomcat.util.digester.Digester; + +/** + * mod_jk 1.2.19 document:<br/> + * <code> + * + * <?xml version="1.0" encoding="UTF-8" ?> + * <jk:status xmlns:jk="http://tomcat.apache.org"> + * <jk:server name="localhost" port="2010" software="Apache/2.0.58 (Unix) mod_jk/1.2.19-dev" version="1.2.19" /> + * <jk:balancers> + * <jk:balancer id="0" name="loadbalancer" type="lb" sticky="True" stickyforce="False" retries="2" recover="60" > + * <jk:member id="0" name="node01" type="ajp13" host="localhost" port="20012" address="127.0.0.1:20012" activation="ACT" state="N/A" distance="0" lbfactor="1" lbmult="1" lbvalue="0" elected="0" errors="0" transferred="0" readed="0" busy="0" maxbusy="0" jvm_route="node01" /> + * <jk:member id="1" name="node02" type="ajp13" host="localhost" port="20022" address="127.0.0.1:20022" activation="ACT" state="N/A" distance="0" lbfactor="1" lbmult="1" lbvalue="0" elected="0" errors="0" transferred="0" readed="0" busy="0" maxbusy="0" jvm_route="node02" /> + * <jk:map type="Wildchar" uri="/ClusterSession*" context="/ClusterSession*" /> + * <jk:map type="Wildchar" uri="/ClusterTest*" context="/ClusterTest*" /> + * <jk:map type="Wildchar" uri="/test*" context="/test*" /> + * </jk:balancer> + * </jk:balancers> + * </jk:status> + * </code> + * <br/> + * mod_jk 1.2.20 document:<br/> + * <code> + * <?xml version="1.0" encoding="UTF-8" ?> + * <jk:status xmlns:jk="http://tomcat.apache.org"> + * <jk:server + * name="127.0.0.1" + * port="2080" + * software="Apache/2.0.59 (Unix) mod_jk/1.2.20-dev" + * version="1.2.20"/> + * <jk:balancers> + * <jk:balancer + * name="loadbalancer" + * type="lb" + * sticky="True" + * stickyforce="False" + * retries="2" + * recover="60" + * method="Request" + * lock="Optimistic" + * good="2" + * degraded="0" + * bad="0" + * busy="0" + * max_busy="0"> + * <jk:member + * name="node01" + * type="ajp13" + * host="localhost" + * port="7309" + * address="127.0.0.1:7309" + * activation="ACT" + * lbfactor="1" + * jvm_route="node01" + * redirect="" + * domain="" + * distance="0" + * state="N/A" + * lbmult="1" + * lbvalue="0" + * elected="0" + * errors="0" + * clienterrors="0" + * transferred="0" + * readed="0" + * busy="0" + * maxbusy="0" + * time-to-recover="0"/> + * <jk:member + * name="node02" + * type="ajp13" + * host="localhost" + * port="7409" + * address="127.0.0.1:7409" + * activation="ACT" + * lbfactor="1" + * jvm_route="node02" + * redirect="" + * domain="" + * distance="0" + * state="N/A" + * lbmult="1" + * lbvalue="0" + * elected="0" + * errors="0" + * clienterrors="0" + * transferred="0" + * readed="0" + * busy="0" + * maxbusy="0" + * time-to-recover="0"/> + * <jk:map + * type="Wildchar" + * uri="/ClusterTest*" + * source="JkMount"/> + * <jk:map + * type="Wildchar" + * uri="/myapps*" + * source="JkMount"/> + * <jk:map + * type="Wildchar" + * uri="/last*" + * source="JkMount"/> + * </jk:balancer> + * </jk:balancers> + * </jk:status> + * + * + * </code> + * <br/> + * mod_jk 1.2.24 runtime state N/A changed to OK/IDLE:<br/> + * <code> + * state="OK/IDLE" + * </code> + * @author Peter Rossbach + * @version $Revision: 753168 $ $Date: 2009-03-13 09:46:29 +0100 (Fri, 13 Mar 2009) $ + * @since 5.5.10 + */ +public class JkStatusParser { + private static Log log = LogFactory.getLog(JkStatusParser.class); + + /** + * The descriptive information about this implementation. + */ + private static final String info = "org.apache.jk.status.JkStatusParser/1.1"; + + /** + * Return descriptive information about this implementation and the + * corresponding version number, in the format + * <code><description>/<version></code>. + */ + public String getInfo() { + + return (info); + + } + + /** + * The <code>Digester</code> instance used to parse registry descriptors. + */ + public static final Digester digester = createDigester(); + + public static Digester getDigester() { + return digester; + } + + /** + * Create and configure the Digester we will be using for setup mod_jk jk status page. + */ + public static Digester createDigester() { + long t1 = System.currentTimeMillis(); + // Initialize the digester + Digester digester = new Digester(); + digester.setValidating(false); + digester.setClassLoader(JkStatus.class.getClassLoader()); + + // parse status + digester.addObjectCreate("jk:status", "org.apache.jk.status.JkStatus", + "className"); + digester.addSetProperties("jk:status"); + + digester.addObjectCreate("jk:status/jk:server", + "org.apache.jk.status.JkServer", "className"); + digester.addSetProperties("jk:status/jk:server"); + digester.addSetNext("jk:status/jk:server", "setServer", + "org.apache.jk.status.JkServer"); + + digester.addObjectCreate("jk:status/jk:software", + "org.apache.jk.status.JkSoftware", "className"); + digester.addSetProperties("jk:status/jk:software"); + digester.addSetNext("jk:status/jk:software", "setSoftware", + "org.apache.jk.status.JkSoftware"); + + digester.addObjectCreate("jk:status/jk:result", + "org.apache.jk.status.JkResult", "className"); + digester.addSetProperties("jk:status/jk:result"); + digester.addSetNext("jk:status/jk:result", "setResult", + "org.apache.jk.status.JkResult"); + + digester.addObjectCreate("jk:status/jk:balancers/jk:balancer", + "org.apache.jk.status.JkBalancer", "className"); + digester.addSetProperties("jk:status/jk:balancers/jk:balancer"); + digester.addSetNext("jk:status/jk:balancers/jk:balancer", + "addBalancer", "org.apache.jk.status.JkBalancer"); + + digester.addObjectCreate( + "jk:status/jk:balancers/jk:balancer/jk:member", + "org.apache.jk.status.JkBalancerMember", "className"); + digester + .addSetProperties("jk:status/jk:balancers/jk:balancer/jk:member"); + digester.addSetNext("jk:status/jk:balancers/jk:balancer/jk:member", + "addBalancerMember", "org.apache.jk.status.JkBalancerMember"); + + digester.addObjectCreate("jk:status/jk:balancers/jk:balancer/jk:map", + "org.apache.jk.status.JkBalancerMapping", "className"); + digester.addSetProperties("jk:status/jk:balancers/jk:balancer/jk:map"); + digester.addSetNext("jk:status/jk:balancers/jk:balancer/jk:map", + "addBalancerMapping", "org.apache.jk.status.JkBalancerMapping"); + + long t2 = System.currentTimeMillis(); + if (log.isDebugEnabled()) + log.debug("Digester for apache mod_jk jkstatus page is created " + + (t2 - t1)); + return (digester); + + } + +} |