jkstatusaccessor.java

来自「以便Apache与其他服务进行整合 Mod_JK安装」· Java 代码 · 共 133 行

JAVA
133
字号
/* *  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 java.io.IOException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.ProtocolException;import java.net.URL;import java.net.URLConnection;import org.apache.catalina.util.Base64;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.tomcat.util.digester.Digester;/** * Create connection to mod_jk jkstatus page. * Optional you can use Http basic auth user and password. * @author Peter Rossbach * @version $Revision: 485242 $ $Date: 2006-12-10 20:45:39 +0100 (Sun, 10 Dec 2006) $ * @see org.apache.jk.status.JkStatusParser * @since 5.5.10 */public class JkStatusAccessor {        private static Log log = LogFactory.getLog(JkStatusAccessor.class);    /**     * The descriptive information about this implementation.     */    protected static final String info = "org.apache.jk.status.JkStatusAccessor/1.0";    /**     * Parse Apache mod_jk Status  from base url http://host:port/jkstatus)     * @param url     * @param username     * @param password     *       */    public JkStatus status(String url, String username, String password)            throws Exception {        if(url == null || "".equals(url))            return null ;        HttpURLConnection hconn = null;        JkStatus status = null;        try {        	// FIXME: use cmd show for older mod_jk versions            hconn = openConnection(url + "?cmd=list&mime=xml", username, password);            Digester digester = JkStatusParser.getDigester();            synchronized (digester) {                status = (JkStatus) digester.parse(hconn.getInputStream());            }        } catch (Throwable t) {            throw new Exception(t);        } finally {            if (hconn != null) {                try {                    hconn.disconnect();                } catch (Throwable u) {                    ;                }                hconn = null;            }        }        return status;    }    /**     * Create a auth http connection for this url     *      * @param url     * @param username     * @param password     * @return HttpConnection     * @throws IOException     * @throws MalformedURLException     * @throws ProtocolException     */    protected HttpURLConnection openConnection(String url, String username,            String password) throws IOException, MalformedURLException,            ProtocolException {        URLConnection conn;        conn = (new URL(url)).openConnection();        HttpURLConnection hconn = (HttpURLConnection) conn;        // Set up standard connection characteristics        hconn.setAllowUserInteraction(false);        hconn.setDoInput(true);        hconn.setUseCaches(false);        hconn.setDoOutput(false);        hconn.setRequestMethod("GET");        hconn.setRequestProperty("User-Agent", "JkStatus-Client/1.0");        if(username != null && password != null ) {             setAuthHeader(hconn, username, password);        }        // Establish the connection with the server        hconn.connect();        return hconn;    }    /**     * Set Basic Auth Header     *      * @param hconn     * @param username     * @param password     */    protected void setAuthHeader(HttpURLConnection hconn, String username,            String password) {        // Set up an authorization header with our credentials        String input = username + ":" + password;        String output = new String(Base64.encode(input.getBytes()));        hconn.setRequestProperty("Authorization", "Basic " + output);    }}

⌨️ 快捷键说明

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