diff options
author | hongbotian <hongbo.tianhongbo@huawei.com> | 2015-11-30 02:41:33 -0500 |
---|---|---|
committer | hongbotian <hongbo.tianhongbo@huawei.com> | 2015-11-30 02:43:36 -0500 |
commit | 9401f816dd0d9d550fe98a8507224bde51c4b847 (patch) | |
tree | 94f2d7a7893a787bafdca8b5ef063ea316938874 /rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java | |
parent | e8ec7aa8e38a93f5b034ac74cebce5de23710317 (diff) |
upload tomcat
JIRA: BOTTLENECK-7
Change-Id: I875d474869efd76ca203c30b60ebc0c3ee606d0e
Signed-off-by: hongbotian <hongbo.tianhongbo@huawei.com>
Diffstat (limited to 'rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java')
-rw-r--r-- | rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java new file mode 100644 index 00000000..e884f542 --- /dev/null +++ b/rubbos/app/tomcat-connectors-1.2.32-src/jkstatus/src/share/org/apache/jk/status/JkStatusAccessor.java @@ -0,0 +1,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); + } + +}
\ No newline at end of file |