init
This commit is contained in:
221
java/org/apache/catalina/manager/Constants.java
Normal file
221
java/org/apache/catalina/manager/Constants.java
Normal file
@@ -0,0 +1,221 @@
|
||||
/*
|
||||
* 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.catalina.manager;
|
||||
|
||||
|
||||
public class Constants {
|
||||
|
||||
public static final String Package = "org.apache.catalina.manager";
|
||||
|
||||
public static final String REL_EXTERNAL = "rel=\"noopener noreferrer\"";
|
||||
|
||||
public static final String HTML_HEADER_SECTION;
|
||||
public static final String BODY_HEADER_SECTION;
|
||||
public static final String MESSAGE_SECTION;
|
||||
public static final String MANAGER_SECTION;
|
||||
public static final String SERVER_HEADER_SECTION;
|
||||
public static final String SERVER_ROW_SECTION;
|
||||
public static final String HTML_TAIL_SECTION;
|
||||
|
||||
static {
|
||||
HTML_HEADER_SECTION =
|
||||
"<html>\n" +
|
||||
"<head>\n" +
|
||||
"<style>\n" +
|
||||
org.apache.catalina.util.TomcatCSS.TOMCAT_CSS + "\n" +
|
||||
" table {\n" +
|
||||
" width: 100%;\n" +
|
||||
" }\n" +
|
||||
" td.page-title {\n" +
|
||||
" text-align: center;\n" +
|
||||
" vertical-align: top;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" font-weight: bold;\n" +
|
||||
" background: white;\n" +
|
||||
" color: black;\n" +
|
||||
" }\n" +
|
||||
" td.title {\n" +
|
||||
" text-align: left;\n" +
|
||||
" vertical-align: top;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" font-style:italic;\n" +
|
||||
" font-weight: bold;\n" +
|
||||
" background: #D2A41C;\n" +
|
||||
" }\n" +
|
||||
" td.header-left {\n" +
|
||||
" text-align: left;\n" +
|
||||
" vertical-align: top;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" font-weight: bold;\n" +
|
||||
" background: #FFDC75;\n" +
|
||||
" }\n" +
|
||||
" td.header-center {\n" +
|
||||
" text-align: center;\n" +
|
||||
" vertical-align: top;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" font-weight: bold;\n" +
|
||||
" background: #FFDC75;\n" +
|
||||
" }\n" +
|
||||
" td.row-left {\n" +
|
||||
" text-align: left;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" color: black;\n" +
|
||||
" }\n" +
|
||||
" td.row-center {\n" +
|
||||
" text-align: center;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" color: black;\n" +
|
||||
" }\n" +
|
||||
" td.row-right {\n" +
|
||||
" text-align: right;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" color: black;\n" +
|
||||
" }\n" +
|
||||
" TH {\n" +
|
||||
" text-align: center;\n" +
|
||||
" vertical-align: top;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" font-weight: bold;\n" +
|
||||
" background: #FFDC75;\n" +
|
||||
" }\n" +
|
||||
" TD {\n" +
|
||||
" text-align: center;\n" +
|
||||
" vertical-align: middle;\n" +
|
||||
" font-family:sans-serif,Tahoma,Arial;\n" +
|
||||
" color: black;\n" +
|
||||
" }\n" +
|
||||
" form {\n" +
|
||||
" margin: 1;\n" +
|
||||
" }\n" +
|
||||
" form.inline {\n" +
|
||||
" display: inline;\n" +
|
||||
" }\n" +
|
||||
"</style>\n";
|
||||
|
||||
BODY_HEADER_SECTION =
|
||||
"<title>{0}</title>\n" +
|
||||
"</head>\n" +
|
||||
"\n" +
|
||||
"<body bgcolor=\"#FFFFFF\">\n" +
|
||||
"\n" +
|
||||
"<table cellspacing=\"4\" border=\"0\">\n" +
|
||||
" <tr>\n" +
|
||||
" <td colspan=\"2\">\n" +
|
||||
" <a href=\"https://tomcat.apache.org/\" " + REL_EXTERNAL + ">\n" +
|
||||
" <img border=\"0\" alt=\"The Tomcat Servlet/JSP Container\"\n" +
|
||||
" align=\"left\" src=\"{0}/images/tomcat.gif\">\n" +
|
||||
" </a>\n" +
|
||||
" <a href=\"https://www.apache.org/\" " + REL_EXTERNAL + ">\n" +
|
||||
" <img border=\"0\" alt=\"The Apache Software Foundation\" align=\"right\"\n" +
|
||||
" src=\"{0}/images/asf-logo.svg\" style=\"width: 266px; height: 83px;\">\n" +
|
||||
" </a>\n" +
|
||||
" </td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<hr size=\"1\" noshade=\"noshade\">\n" +
|
||||
"<table cellspacing=\"4\" border=\"0\">\n" +
|
||||
" <tr>\n" +
|
||||
" <td class=\"page-title\" bordercolor=\"#000000\" " +
|
||||
"align=\"left\" nowrap>\n" +
|
||||
" <font size=\"+2\">{1}</font>\n" +
|
||||
" </td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
MESSAGE_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
" <tr>\n" +
|
||||
" <td class=\"row-left\" width=\"10%\">" +
|
||||
"<small><strong>{0}</strong></small> </td>\n" +
|
||||
" <td class=\"row-left\"><pre>{1}</pre></td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
MANAGER_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"4\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
" <tr>\n" +
|
||||
" <td class=\"row-left\"><a href=\"{1}\">{2}</a></td>\n" +
|
||||
" <td class=\"row-center\"><a href=\"{3}\" " + REL_EXTERNAL + ">{4}</a></td>\n" +
|
||||
" <td class=\"row-center\"><a href=\"{5}\" " + REL_EXTERNAL + ">{6}</a></td>\n" +
|
||||
" <td class=\"row-right\"><a href=\"{7}\">{8}</a></td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
SERVER_HEADER_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"8\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"header-center\"><small>{1}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{2}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{3}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{4}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{5}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{6}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{7}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{8}</small></td>\n" +
|
||||
"</tr>\n";
|
||||
|
||||
SERVER_ROW_SECTION =
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-center\"><small>{0}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{1}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{2}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{3}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{4}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{5}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{6}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{7}</small></td>\n" +
|
||||
"</tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
HTML_TAIL_SECTION =
|
||||
"<hr size=\"1\" noshade=\"noshade\">\n" +
|
||||
"<center><font size=\"-1\" color=\"#525D76\">\n" +
|
||||
" <em>Copyright © 1999-2020, Apache Software Foundation</em>" +
|
||||
"</font></center>\n" +
|
||||
"\n" +
|
||||
"</body>\n" +
|
||||
"</html>";
|
||||
}
|
||||
|
||||
public static final String CHARSET="utf-8";
|
||||
|
||||
public static final String XML_DECLARATION =
|
||||
"<?xml version=\"1.0\" encoding=\""+CHARSET+"\"?>";
|
||||
|
||||
public static final String XML_STYLE =
|
||||
"<?xml-stylesheet type=\"text/xsl\" href=\"{0}/xform.xsl\" ?>\n";
|
||||
}
|
||||
|
||||
222
java/org/apache/catalina/manager/DummyProxySession.java
Normal file
222
java/org/apache/catalina/manager/DummyProxySession.java
Normal file
@@ -0,0 +1,222 @@
|
||||
/*
|
||||
* 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.catalina.manager;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.util.Iterator;
|
||||
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.catalina.Manager;
|
||||
import org.apache.catalina.Session;
|
||||
import org.apache.catalina.SessionListener;
|
||||
|
||||
public class DummyProxySession implements Session {
|
||||
|
||||
private String sessionId;
|
||||
|
||||
public DummyProxySession(String sessionId) {
|
||||
this.sessionId = sessionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void access() {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addSessionListener(SessionListener listener) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endAccess() {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void expire() {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthType() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getCreationTime() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getCreationTimeInternal() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getIdInternal() {
|
||||
return sessionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastAccessedTime() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getLastAccessedTimeInternal() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getIdleTime() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getIdleTimeInternal() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Manager getManager() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxInactiveInterval() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getNote(String name) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<String> getNoteNames() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Principal getPrincipal() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HttpSession getSession() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getThisAccessedTime() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getThisAccessedTimeInternal() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void recycle() {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeNote(String name) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeSessionListener(SessionListener listener) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAuthType(String authType) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCreationTime(long time) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setId(String id) {
|
||||
this.sessionId = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setId(String id, boolean notify) {
|
||||
this.sessionId = id;
|
||||
// Ignore notify
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setManager(Manager manager) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMaxInactiveInterval(int interval) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNew(boolean isNew) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNote(String name, Object value) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPrincipal(Principal principal) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValid(boolean isValid) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public void tellChangedSessionId(String newId, String oldId,
|
||||
boolean notifySessionListeners, boolean notifyContainerListeners) {
|
||||
// NOOP
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAttributeDistributable(String name, Object value) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
1444
java/org/apache/catalina/manager/HTMLManagerServlet.java
Normal file
1444
java/org/apache/catalina/manager/HTMLManagerServlet.java
Normal file
File diff suppressed because it is too large
Load Diff
314
java/org/apache/catalina/manager/JMXProxyServlet.java
Normal file
314
java/org/apache/catalina/manager/JMXProxyServlet.java
Normal file
@@ -0,0 +1,314 @@
|
||||
/*
|
||||
* 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.catalina.manager;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.management.Attribute;
|
||||
import javax.management.InstanceNotFoundException;
|
||||
import javax.management.MBeanException;
|
||||
import javax.management.MBeanInfo;
|
||||
import javax.management.MBeanOperationInfo;
|
||||
import javax.management.MBeanParameterInfo;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
import javax.management.OperationsException;
|
||||
import javax.management.ReflectionException;
|
||||
import javax.management.openmbean.CompositeData;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.catalina.mbeans.MBeanDumper;
|
||||
import org.apache.catalina.tribes.util.StringManager;
|
||||
import org.apache.tomcat.util.modeler.Registry;
|
||||
|
||||
/**
|
||||
* This servlet will dump JMX attributes in a simple format and implement proxy
|
||||
* services for modeler.
|
||||
*
|
||||
* @author Costin Manolache
|
||||
*/
|
||||
public class JMXProxyServlet extends HttpServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// Constant for "no parameters" when invoking a JMX operation
|
||||
// without any parameters.
|
||||
private static final String[] NO_PARAMETERS = new String[0];
|
||||
|
||||
private static final StringManager sm = StringManager.getManager(JMXProxyServlet.class);
|
||||
|
||||
// ----------------------------------------------------- Instance Variables
|
||||
/**
|
||||
* MBean server.
|
||||
*/
|
||||
protected transient MBeanServer mBeanServer = null;
|
||||
protected transient Registry registry;
|
||||
|
||||
|
||||
// --------------------------------------------------------- Public Methods
|
||||
/**
|
||||
* Initialize this servlet.
|
||||
*/
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
// Retrieve the MBean server
|
||||
registry = Registry.getRegistry(null, null);
|
||||
mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a GET request for the specified resource.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are creating
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet-specified error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
response.setContentType("text/plain");
|
||||
// Stop older versions of IE thinking they know best. We set text/plain
|
||||
// in the line above for a reason. IE's behaviour is unwanted at best
|
||||
// and dangerous at worst.
|
||||
response.setHeader("X-Content-Type-Options", "nosniff");
|
||||
PrintWriter writer = response.getWriter();
|
||||
|
||||
if (mBeanServer == null) {
|
||||
writer.println("Error - No mbean server");
|
||||
return;
|
||||
}
|
||||
|
||||
String qry = request.getParameter("set");
|
||||
if (qry != null) {
|
||||
String name = request.getParameter("att");
|
||||
String val = request.getParameter("val");
|
||||
|
||||
setAttribute(writer, qry, name, val);
|
||||
return;
|
||||
}
|
||||
qry = request.getParameter("get");
|
||||
if (qry != null) {
|
||||
String name = request.getParameter("att");
|
||||
getAttribute(writer, qry, name, request.getParameter("key"));
|
||||
return;
|
||||
}
|
||||
qry = request.getParameter("invoke");
|
||||
if (qry != null) {
|
||||
String opName = request.getParameter("op");
|
||||
String[] params = getInvokeParameters(request.getParameter("ps"));
|
||||
invokeOperation(writer, qry, opName, params);
|
||||
return;
|
||||
}
|
||||
qry = request.getParameter("qry");
|
||||
if (qry == null) {
|
||||
qry = "*:*";
|
||||
}
|
||||
|
||||
listBeans(writer, qry);
|
||||
}
|
||||
|
||||
|
||||
public void getAttribute(PrintWriter writer, String onameStr, String att, String key) {
|
||||
try {
|
||||
ObjectName oname = new ObjectName(onameStr);
|
||||
Object value = mBeanServer.getAttribute(oname, att);
|
||||
|
||||
if (null != key && value instanceof CompositeData)
|
||||
value = ((CompositeData) value).get(key);
|
||||
|
||||
String valueStr;
|
||||
if (value != null) {
|
||||
valueStr = value.toString();
|
||||
} else {
|
||||
valueStr = "<null>";
|
||||
}
|
||||
|
||||
writer.print("OK - Attribute get '");
|
||||
writer.print(onameStr);
|
||||
writer.print("' - ");
|
||||
writer.print(att);
|
||||
|
||||
if (null != key) {
|
||||
writer.print(" - key '");
|
||||
writer.print(key);
|
||||
writer.print("'");
|
||||
}
|
||||
|
||||
writer.print(" = ");
|
||||
|
||||
writer.println(MBeanDumper.escape(valueStr));
|
||||
} catch (Exception ex) {
|
||||
writer.println("Error - " + ex.toString());
|
||||
ex.printStackTrace(writer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void setAttribute(PrintWriter writer, String onameStr, String att, String val) {
|
||||
try {
|
||||
setAttributeInternal(onameStr, att, val);
|
||||
writer.println("OK - Attribute set");
|
||||
} catch (Exception ex) {
|
||||
writer.println("Error - " + ex.toString());
|
||||
ex.printStackTrace(writer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void listBeans(PrintWriter writer, String qry) {
|
||||
|
||||
Set<ObjectName> names = null;
|
||||
try {
|
||||
names = mBeanServer.queryNames(new ObjectName(qry), null);
|
||||
writer.println("OK - Number of results: " + names.size());
|
||||
writer.println();
|
||||
} catch (Exception ex) {
|
||||
writer.println("Error - " + ex.toString());
|
||||
ex.printStackTrace(writer);
|
||||
return;
|
||||
}
|
||||
|
||||
String dump = MBeanDumper.dumpBeans(mBeanServer, names);
|
||||
writer.print(dump);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Determines if a type is supported by the {@link JMXProxyServlet}.
|
||||
*
|
||||
* @param type The type to check
|
||||
* @return Always returns <code>true</code>
|
||||
*/
|
||||
public boolean isSupported(String type) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
private void invokeOperation(PrintWriter writer, String onameStr, String op,
|
||||
String[] valuesStr) {
|
||||
try {
|
||||
Object retVal = invokeOperationInternal(onameStr, op, valuesStr);
|
||||
if (retVal != null) {
|
||||
writer.println("OK - Operation " + op + " returned:");
|
||||
output("", writer, retVal);
|
||||
} else {
|
||||
writer.println("OK - Operation " + op + " without return value");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
writer.println("Error - " + ex.toString());
|
||||
ex.printStackTrace(writer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Parses parameter values from a parameter string.
|
||||
*
|
||||
* @param paramString The string containing comma-separated
|
||||
* operation-invocation parameters, or <code>null</code> if there
|
||||
* are no parameters.
|
||||
* @return An array of String parameters (empty array if
|
||||
* <code>paramString</code> was <code>null</code>).
|
||||
*/
|
||||
private String[] getInvokeParameters(String paramString) {
|
||||
if (paramString == null)
|
||||
return NO_PARAMETERS;
|
||||
else
|
||||
return paramString.split(",");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets an MBean attribute's value.
|
||||
*/
|
||||
private void setAttributeInternal(String onameStr, String attributeName, String value)
|
||||
throws OperationsException, MBeanException, ReflectionException {
|
||||
ObjectName oname = new ObjectName(onameStr);
|
||||
String type = registry.getType(oname, attributeName);
|
||||
Object valueObj = registry.convertValue(type, value);
|
||||
mBeanServer.setAttribute(oname, new Attribute(attributeName, valueObj));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Invokes an operation on an MBean.
|
||||
*
|
||||
* @param onameStr The name of the MBean.
|
||||
* @param operation The name of the operation to invoke.
|
||||
* @param parameters An array of Strings containing the parameters to the
|
||||
* operation. They will be converted to the appropriate types to
|
||||
* call the requested operation.
|
||||
* @return The value returned by the requested operation.
|
||||
*/
|
||||
@SuppressWarnings("null") // parameters can't be null if signature.length > 0
|
||||
private Object invokeOperationInternal(String onameStr, String operation, String[] parameters)
|
||||
throws OperationsException, MBeanException, ReflectionException {
|
||||
ObjectName oname = new ObjectName(onameStr);
|
||||
int paramCount = null == parameters ? 0 : parameters.length;
|
||||
MBeanOperationInfo methodInfo = registry.getMethodInfo(oname, operation, paramCount);
|
||||
if(null == methodInfo) {
|
||||
// getMethodInfo returns null for both "object not found" and "operation not found"
|
||||
MBeanInfo info = null;
|
||||
try {
|
||||
info = registry.getMBeanServer().getMBeanInfo(oname);
|
||||
} catch (InstanceNotFoundException infe) {
|
||||
throw infe;
|
||||
} catch (Exception e) {
|
||||
throw new IllegalArgumentException(sm.getString("jmxProxyServlet.noBeanFound", onameStr), e);
|
||||
}
|
||||
throw new IllegalArgumentException(
|
||||
sm.getString("jmxProxyServlet.noOperationOnBean",
|
||||
operation, Integer.valueOf(paramCount), onameStr, info.getClassName()));
|
||||
}
|
||||
|
||||
MBeanParameterInfo[] signature = methodInfo.getSignature();
|
||||
String[] signatureTypes = new String[signature.length];
|
||||
Object[] values = new Object[signature.length];
|
||||
for (int i = 0; i < signature.length; i++) {
|
||||
MBeanParameterInfo pi = signature[i];
|
||||
signatureTypes[i] = pi.getType();
|
||||
values[i] = registry.convertValue(pi.getType(), parameters[i]);
|
||||
}
|
||||
|
||||
return mBeanServer.invoke(oname, operation, values, signatureTypes);
|
||||
}
|
||||
|
||||
|
||||
private void output(String indent, PrintWriter writer, Object result) {
|
||||
if (result instanceof Object[]) {
|
||||
for (Object obj : (Object[]) result) {
|
||||
output(" " + indent, writer, obj);
|
||||
}
|
||||
} else {
|
||||
String strValue;
|
||||
if (result != null) {
|
||||
strValue = result.toString();
|
||||
} else {
|
||||
strValue = "<null>";
|
||||
}
|
||||
writer.println(indent + strValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
251
java/org/apache/catalina/manager/JspHelper.java
Normal file
251
java/org/apache/catalina/manager/JspHelper.java
Normal file
@@ -0,0 +1,251 @@
|
||||
/*
|
||||
* 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.catalina.manager;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.apache.catalina.Session;
|
||||
import org.apache.catalina.manager.util.SessionUtils;
|
||||
|
||||
|
||||
/**
|
||||
* Helper JavaBean for JSPs, because JSTL 1.1/EL 2.0 is too dumb to
|
||||
* to what I need (call methods with parameters), or I am too dumb to use it correctly. :)
|
||||
* @author Cédrik LIME
|
||||
*/
|
||||
public class JspHelper {
|
||||
|
||||
private static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
/**
|
||||
* Public constructor, so that this class can be considered a JavaBean
|
||||
*/
|
||||
private JspHelper() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to get user locale from the session, if possible.
|
||||
* IMPLEMENTATION NOTE: this method has explicit support for Tapestry 3 and
|
||||
* Struts 1.x
|
||||
*
|
||||
* @param in_session Session from which the locale should be guessed
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
public static String guessDisplayLocaleFromSession(Session in_session) {
|
||||
return localeToString(SessionUtils.guessLocaleFromSession(in_session));
|
||||
}
|
||||
private static String localeToString(Locale locale) {
|
||||
if (locale != null) {
|
||||
return escapeXml(locale.toString());//locale.getDisplayName();
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to get user name from the session, if possible.
|
||||
* @param in_session The Servlet session
|
||||
* @return the user name
|
||||
*/
|
||||
public static String guessDisplayUserFromSession(Session in_session) {
|
||||
Object user = SessionUtils.guessUserFromSession(in_session);
|
||||
return escapeXml(user);
|
||||
}
|
||||
|
||||
|
||||
public static String getDisplayCreationTimeForSession(Session in_session) {
|
||||
try {
|
||||
if (in_session.getCreationTime() == 0) {
|
||||
return "";
|
||||
}
|
||||
DateFormat formatter = new SimpleDateFormat(DATE_TIME_FORMAT);
|
||||
return formatter.format(new Date(in_session.getCreationTime()));
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDisplayLastAccessedTimeForSession(Session in_session) {
|
||||
try {
|
||||
if (in_session.getLastAccessedTime() == 0) {
|
||||
return "";
|
||||
}
|
||||
DateFormat formatter = new SimpleDateFormat(DATE_TIME_FORMAT);
|
||||
return formatter.format(new Date(in_session.getLastAccessedTime()));
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
public static String getDisplayUsedTimeForSession(Session in_session) {
|
||||
try {
|
||||
if (in_session.getCreationTime() == 0) {
|
||||
return "";
|
||||
}
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return "";
|
||||
}
|
||||
return secondsToTimeString(SessionUtils.getUsedTimeForSession(in_session)/1000);
|
||||
}
|
||||
|
||||
public static String getDisplayTTLForSession(Session in_session) {
|
||||
try {
|
||||
if (in_session.getCreationTime() == 0) {
|
||||
return "";
|
||||
}
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return "";
|
||||
}
|
||||
return secondsToTimeString(SessionUtils.getTTLForSession(in_session)/1000);
|
||||
}
|
||||
|
||||
public static String getDisplayInactiveTimeForSession(Session in_session) {
|
||||
try {
|
||||
if (in_session.getCreationTime() == 0) {
|
||||
return "";
|
||||
}
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return "";
|
||||
}
|
||||
return secondsToTimeString(SessionUtils.getInactiveTimeForSession(in_session)/1000);
|
||||
}
|
||||
|
||||
public static String secondsToTimeString(long in_seconds) {
|
||||
StringBuilder buff = new StringBuilder(9);
|
||||
if (in_seconds < 0) {
|
||||
buff.append('-');
|
||||
in_seconds = -in_seconds;
|
||||
}
|
||||
long rest = in_seconds;
|
||||
long hour = rest / 3600;
|
||||
rest = rest % 3600;
|
||||
long minute = rest / 60;
|
||||
rest = rest % 60;
|
||||
long second = rest;
|
||||
if (hour < 10) {
|
||||
buff.append('0');
|
||||
}
|
||||
buff.append(hour);
|
||||
buff.append(':');
|
||||
if (minute < 10) {
|
||||
buff.append('0');
|
||||
}
|
||||
buff.append(minute);
|
||||
buff.append(':');
|
||||
if (second < 10) {
|
||||
buff.append('0');
|
||||
}
|
||||
buff.append(second);
|
||||
return buff.toString();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Following copied from org.apache.taglibs.standard.tag.common.core.Util v1.1.2
|
||||
*/
|
||||
|
||||
private static final int HIGHEST_SPECIAL = '>';
|
||||
private static final char[][] specialCharactersRepresentation =
|
||||
new char[HIGHEST_SPECIAL + 1][];
|
||||
static {
|
||||
specialCharactersRepresentation['&'] = "&".toCharArray();
|
||||
specialCharactersRepresentation['<'] = "<".toCharArray();
|
||||
specialCharactersRepresentation['>'] = ">".toCharArray();
|
||||
specialCharactersRepresentation['"'] = """.toCharArray();
|
||||
specialCharactersRepresentation['\''] = "'".toCharArray();
|
||||
}
|
||||
|
||||
public static String escapeXml(Object obj) {
|
||||
String value = null;
|
||||
try {
|
||||
value = (obj == null) ? null : obj.toString();
|
||||
} catch (Exception e) {
|
||||
// Ignore
|
||||
}
|
||||
return escapeXml(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs the following substring replacements
|
||||
* (to facilitate output to XML/HTML pages):
|
||||
*
|
||||
* & -> &amp;
|
||||
* < -> &lt;
|
||||
* > -> &gt;
|
||||
* " -> &#034;
|
||||
* ' -> &#039;
|
||||
*
|
||||
* See also OutSupport.writeEscapedXml().
|
||||
* @param buffer The XML to escape
|
||||
* @return the escaped XML
|
||||
*/
|
||||
@SuppressWarnings("null") // escapedBuffer cannot be null
|
||||
public static String escapeXml(String buffer) {
|
||||
if (buffer == null) {
|
||||
return "";
|
||||
}
|
||||
int start = 0;
|
||||
int length = buffer.length();
|
||||
char[] arrayBuffer = buffer.toCharArray();
|
||||
StringBuilder escapedBuffer = null;
|
||||
|
||||
for (int i = 0; i < length; i++) {
|
||||
char c = arrayBuffer[i];
|
||||
if (c <= HIGHEST_SPECIAL) {
|
||||
char[] escaped = specialCharactersRepresentation[c];
|
||||
if (escaped != null) {
|
||||
// create StringBuilder to hold escaped xml string
|
||||
if (start == 0) {
|
||||
escapedBuffer = new StringBuilder(length + 5);
|
||||
}
|
||||
// add unescaped portion
|
||||
if (start < i) {
|
||||
escapedBuffer.append(arrayBuffer,start,i-start);
|
||||
}
|
||||
start = i + 1;
|
||||
// add escaped xml
|
||||
escapedBuffer.append(escaped);
|
||||
}
|
||||
}
|
||||
}
|
||||
// no xml escaping was necessary
|
||||
if (start == 0) {
|
||||
return buffer;
|
||||
}
|
||||
// add rest of unescaped portion
|
||||
if (start < length) {
|
||||
escapedBuffer.append(arrayBuffer,start,length-start);
|
||||
}
|
||||
return escapedBuffer.toString();
|
||||
}
|
||||
|
||||
public static String formatNumber(long number) {
|
||||
return NumberFormat.getNumberInstance().format(number);
|
||||
}
|
||||
}
|
||||
182
java/org/apache/catalina/manager/LocalStrings.properties
Normal file
182
java/org/apache/catalina/manager/LocalStrings.properties
Normal file
@@ -0,0 +1,182 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=Running
|
||||
htmlManagerServlet.appsExpire=Expire sessions
|
||||
htmlManagerServlet.appsName=Display Name
|
||||
htmlManagerServlet.appsPath=Path
|
||||
htmlManagerServlet.appsReload=Reload
|
||||
htmlManagerServlet.appsSessions=Sessions
|
||||
htmlManagerServlet.appsStart=Start
|
||||
htmlManagerServlet.appsStop=Stop
|
||||
htmlManagerServlet.appsTasks=Commands
|
||||
htmlManagerServlet.appsTitle=Applications
|
||||
htmlManagerServlet.appsUndeploy=Undeploy
|
||||
htmlManagerServlet.appsVersion=Version
|
||||
htmlManagerServlet.configReloadButton=Re-read
|
||||
htmlManagerServlet.configSslHostName=TLS host name (optional)
|
||||
htmlManagerServlet.configSslReloadTitle=Re-read TLS configuration files
|
||||
htmlManagerServlet.configTitle=Configuration
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=Keep alive sockets count:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=Bytes received:
|
||||
htmlManagerServlet.connectorStateBytesSent=Bytes sent:
|
||||
htmlManagerServlet.connectorStateErrorCount=Error count:
|
||||
htmlManagerServlet.connectorStateHint=P: Parse and prepare request S: Service F: Finishing R: Ready K: Keepalive
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=Max processing time:
|
||||
htmlManagerServlet.connectorStateMaxThreads=Max threads:
|
||||
htmlManagerServlet.connectorStateProcessingTime=Processing time:
|
||||
htmlManagerServlet.connectorStateRequestCount=Request count:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=Bytes Recv
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=Bytes Sent
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=Client (Actual)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwarded)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=Request
|
||||
htmlManagerServlet.connectorStateTableTitleStage=Stage
|
||||
htmlManagerServlet.connectorStateTableTitleTime=Time
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=VHost
|
||||
htmlManagerServlet.connectorStateThreadBusy=Current threads busy:
|
||||
htmlManagerServlet.connectorStateThreadCount=Current thread count:
|
||||
htmlManagerServlet.deployButton=Deploy
|
||||
htmlManagerServlet.deployConfig=XML Configuration file path:
|
||||
htmlManagerServlet.deployPath=Context Path (required):
|
||||
htmlManagerServlet.deployServer=Deploy directory or WAR file located on server
|
||||
htmlManagerServlet.deployTitle=Deploy
|
||||
htmlManagerServlet.deployUpload=WAR file to deploy
|
||||
htmlManagerServlet.deployUploadFail=FAIL - Deploy Upload Failed, Exception: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=Select WAR file to upload
|
||||
htmlManagerServlet.deployUploadInServerXml=FAIL - War file [{0}] cannot be uploaded if context is defined in server.xml
|
||||
htmlManagerServlet.deployUploadNoFile=FAIL - File upload failed, no file
|
||||
htmlManagerServlet.deployUploadNotWar=FAIL - File uploaded [{0}] must be a .war
|
||||
htmlManagerServlet.deployUploadWarExists=FAIL - War file [{0}] already exists on server
|
||||
htmlManagerServlet.deployWar=WAR or Directory path:
|
||||
htmlManagerServlet.diagnosticsLeak=Check to see if a web application has caused a memory leak on stop, reload or undeploy
|
||||
htmlManagerServlet.diagnosticsLeakButton=Find leaks
|
||||
htmlManagerServlet.diagnosticsLeakWarning=This diagnostic check will trigger a full garbage collection. Use it with extreme caution on production systems.
|
||||
htmlManagerServlet.diagnosticsSsl=TLS connector configuration diagnostics
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=Certificates
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=List the configured TLS virtual hosts and the certificate chain for each.
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=Ciphers
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=List the configured TLS virtual hosts and the ciphers for each.
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Trusted Certificates
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=List the configured TLS virtual hosts and the trusted certificates for each.
|
||||
htmlManagerServlet.diagnosticsTitle=Diagnostics
|
||||
htmlManagerServlet.expire.explain=with idle ≥
|
||||
htmlManagerServlet.expire.unit=minutes
|
||||
htmlManagerServlet.findleaksList=The following web applications were stopped (reloaded, undeployed), but their\n\
|
||||
classes from previous runs are still loaded in memory, thus causing a memory\n\
|
||||
leak (use a profiler to confirm):\n
|
||||
htmlManagerServlet.findleaksNone=No web applications appear to have triggered a memory leak on stop, reload or undeploy.
|
||||
htmlManagerServlet.helpHtmlManager=HTML Manager Help
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=Manager Help
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=Free Memory:
|
||||
htmlManagerServlet.jvmMaxMemory=Max Memory:
|
||||
htmlManagerServlet.jvmTableTitleInitial=Initial
|
||||
htmlManagerServlet.jvmTableTitleMaximum=Maximum
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=Memory Pool
|
||||
htmlManagerServlet.jvmTableTitleTotal=Total
|
||||
htmlManagerServlet.jvmTableTitleType=Type
|
||||
htmlManagerServlet.jvmTableTitleUsed=Used
|
||||
htmlManagerServlet.jvmTotalMemory=Total Memory:
|
||||
htmlManagerServlet.list=List Applications
|
||||
htmlManagerServlet.manager=Manager
|
||||
htmlManagerServlet.messageLabel=Message:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=None specified
|
||||
htmlManagerServlet.osAvailableMemory=Available memory:
|
||||
htmlManagerServlet.osFreePageFile=Free page file:
|
||||
htmlManagerServlet.osKernelTime=Process kernel time:
|
||||
htmlManagerServlet.osMemoryLoad=Memory load:
|
||||
htmlManagerServlet.osPhysicalMemory=Physical memory:
|
||||
htmlManagerServlet.osTotalPageFile=Total page file:
|
||||
htmlManagerServlet.osUserTime=Process user time:
|
||||
htmlManagerServlet.serverHostname=Hostname
|
||||
htmlManagerServlet.serverIPAddress=IP Address
|
||||
htmlManagerServlet.serverJVMVendor=JVM Vendor
|
||||
htmlManagerServlet.serverJVMVersion=JVM Version
|
||||
htmlManagerServlet.serverOSArch=OS Architecture
|
||||
htmlManagerServlet.serverOSName=OS Name
|
||||
htmlManagerServlet.serverOSVersion=OS Version
|
||||
htmlManagerServlet.serverTitle=Server Information
|
||||
htmlManagerServlet.serverVersion=Tomcat Version
|
||||
htmlManagerServlet.title=Tomcat Web Application Manager
|
||||
|
||||
managerServlet.alreadyContext=FAIL - Application already exists at path [{0}]
|
||||
managerServlet.certsNotAvailable=Certificate information cannot be obtained from this connector at runtime
|
||||
managerServlet.deleteFail=FAIL - Unable to delete [{0}]. The continued presence of this file may cause problems.
|
||||
managerServlet.deployFailed=FAIL - Failed to deploy application at context path [{0}]
|
||||
managerServlet.deployed=OK - Deployed application at context path [{0}]
|
||||
managerServlet.deployedButNotStarted=FAIL - Deployed application at context path [{0}] but context failed to start
|
||||
managerServlet.exception=FAIL - Encountered exception [{0}]
|
||||
managerServlet.findleaksFail=FAIL - Find leaks failed: Host not instance of StandardHost
|
||||
managerServlet.findleaksList=OK - Found potential memory leaks in the following applications:
|
||||
managerServlet.findleaksNone=OK - No memory leaks found
|
||||
managerServlet.inService=FAIL - The application [{0}] is already being serviced
|
||||
managerServlet.invalidCommand=FAIL - Invalid parameters supplied for command [{0}]
|
||||
managerServlet.invalidPath=FAIL - Invalid context path [{0}] was specified
|
||||
managerServlet.listed=OK - Listed applications for virtual host [{0}]
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=FAIL - Unable to create directory [{0}]
|
||||
managerServlet.noCommand=FAIL - No command was specified
|
||||
managerServlet.noContext=FAIL - No context exists named [{0}]
|
||||
managerServlet.noGlobal=FAIL - No global JNDI resources are available
|
||||
managerServlet.noManager=FAIL - No manager exists for path [{0}]
|
||||
managerServlet.noSelf=FAIL - The manager cannot reload, undeploy, stop, or undeploy itself
|
||||
managerServlet.noWrapper=Container has not called setWrapper() for this servlet
|
||||
managerServlet.notDeployed=FAIL - Context [{0}] is defined in server.xml and may not be undeployed
|
||||
managerServlet.notSslConnector=SSL is not enabled for this connector
|
||||
managerServlet.objectNameFail=FAIL - Unable to register object name [{0}] for Manager Servlet
|
||||
managerServlet.postCommand=FAIL - Tried to use command [{0}] via a GET request but POST is required
|
||||
managerServlet.reloaded=OK - Reloaded application at context path [{0}]
|
||||
managerServlet.renameFail=FAIL - Unable to rename [{0}] to [{1}]. This may cause problems for future deployments.
|
||||
managerServlet.resourcesAll=OK - Listed global resources of all types
|
||||
managerServlet.resourcesType=OK - Listed global resources of type [{0}]
|
||||
managerServlet.saveFail=FAIL - Configuration save failed: [{0}]
|
||||
managerServlet.saved=OK - Server configuration saved
|
||||
managerServlet.savedContext=OK - Context [{0}] configuration saved
|
||||
managerServlet.serverInfo=OK - Server info\n\
|
||||
Tomcat Version: [{0}]\n\
|
||||
OS Name: [{1}]\n\
|
||||
OS Version: [{2}]\n\
|
||||
OS Architecture: [{3}]\n\
|
||||
JVM Version: [{4}]\n\
|
||||
JVM Vendor: [{5}]
|
||||
managerServlet.sessiondefaultmax=Default maximum session inactive interval is [{0}] minutes
|
||||
managerServlet.sessions=OK - Session information for application at context path [{0}]
|
||||
managerServlet.sessiontimeout=Inactive for [{0}] minutes: [{1}] sessions
|
||||
managerServlet.sessiontimeout.expired=Inactive for [{0}] minutes: [{1}] sessions were expired
|
||||
managerServlet.sessiontimeout.unlimited=Unlimited time: [{0}] sessions
|
||||
managerServlet.sslConnectorCerts=OK - Connector / Certificate Chain information
|
||||
managerServlet.sslConnectorCiphers=OK - Connector / SSL Cipher information
|
||||
managerServlet.sslConnectorTrustedCerts=OK - Connector / Trusted Certificate information
|
||||
managerServlet.sslReload=OK - Reloaded TLS configuration for [{0}]
|
||||
managerServlet.sslReloadAll=OK - Reloaded TLS configuration for all TLS virtual hosts
|
||||
managerServlet.sslReloadFail=FAIL - Failed to reload TLS configuration
|
||||
managerServlet.startFailed=FAIL - Application at context path [{0}] could not be started
|
||||
managerServlet.started=OK - Started application at context path [{0}]
|
||||
managerServlet.stopped=OK - Stopped application at context path [{0}]
|
||||
managerServlet.storeConfig.noMBean=FAIL - No StoreConfig MBean registered at [{0}]. Registration is typically performed by the StoreConfigLifecycleListener.
|
||||
managerServlet.threaddump=OK - JVM thread dump
|
||||
managerServlet.trustedCertsNotConfigured=No trusted certificates are configured for this virtual host
|
||||
managerServlet.undeployed=OK - Undeployed application at context path [{0}]
|
||||
managerServlet.unknownCommand=FAIL - Unknown command [{0}]
|
||||
managerServlet.vminfo=OK - VM info
|
||||
|
||||
statusServlet.complete=Complete Server Status
|
||||
statusServlet.title=Server Status
|
||||
|
||||
jmxProxyServlet.noOperationOnBean=Cannot find operation [{0}] with [{1}] arguments on object name [{2}], which is a [{3}]
|
||||
jmxProxyServlet.noBeanFound=Cannot find MBean with object name [{0}]
|
||||
97
java/org/apache/catalina/manager/LocalStrings_de.properties
Normal file
97
java/org/apache/catalina/manager/LocalStrings_de.properties
Normal file
@@ -0,0 +1,97 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=gestartet
|
||||
htmlManagerServlet.appsExpire=Lösche Sitzungen
|
||||
htmlManagerServlet.appsName=Anzeigename
|
||||
htmlManagerServlet.appsPath=Kontext Pfad
|
||||
htmlManagerServlet.appsReload=Neu laden
|
||||
htmlManagerServlet.appsSessions=Sitzungen
|
||||
htmlManagerServlet.appsStart=Start
|
||||
htmlManagerServlet.appsStop=Stop
|
||||
htmlManagerServlet.appsTasks=Kommandos
|
||||
htmlManagerServlet.appsTitle=Anwendungen
|
||||
htmlManagerServlet.appsUndeploy=Entfernen
|
||||
htmlManagerServlet.connectorStateProcessingTime=Verarbeitungszeit:
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=Anfrage
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=VHost
|
||||
htmlManagerServlet.deployButton=Installieren
|
||||
htmlManagerServlet.deployConfig=XML Konfigurationsdatei URL:
|
||||
htmlManagerServlet.deployPath=Kontext Pfad (optional):
|
||||
htmlManagerServlet.deployServer=Verzeichnis oder WAR Datei auf Server installieren
|
||||
htmlManagerServlet.deployTitle=Installieren
|
||||
htmlManagerServlet.deployUpload=Lokale WAR Datei zur Installation hochladen
|
||||
htmlManagerServlet.deployUploadFail=FEHLER - Hochladen zur Installation fehlgeschlagen, Ausnahme: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=WAR Datei auswählen
|
||||
htmlManagerServlet.deployUploadNoFile=FEHLER - Hochladen fehlgeschlagen, keine Datei vorhanden
|
||||
htmlManagerServlet.deployUploadNotWar=FEHLER - Hochgeladene Datei [{0}] muss ein .war sein
|
||||
htmlManagerServlet.deployUploadWarExists=FEHLER - WAR Datei [{0}] existiert bereits auf Server
|
||||
htmlManagerServlet.deployWar=WAR oder Verzeichnis URL:
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=Zertifikate
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=Liste die konfigurierten TLS Virtual Hosts und deren Zertifikats-Ketten.
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Vertrauenswürdige Zertifikate
|
||||
htmlManagerServlet.expire.explain=mit Inaktivität ≥
|
||||
htmlManagerServlet.expire.unit=Minuten
|
||||
htmlManagerServlet.helpHtmlManager=Hilfeseite HTML Manager (englisch)
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=Hilfeseite Manager (englisch)
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=Freier Speicher:
|
||||
htmlManagerServlet.jvmTableTitleMaximum=Maximum
|
||||
htmlManagerServlet.jvmTableTitleType=Typ
|
||||
htmlManagerServlet.list=Anwendungen auflisten
|
||||
htmlManagerServlet.manager=Manager
|
||||
htmlManagerServlet.messageLabel=Nachricht:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.serverIPAddress=IP-Adresse
|
||||
htmlManagerServlet.serverJVMVendor=JVM Hersteller
|
||||
htmlManagerServlet.serverJVMVersion=JVM Version
|
||||
htmlManagerServlet.serverOSArch=OS Architektur
|
||||
htmlManagerServlet.serverOSName=OS Name
|
||||
htmlManagerServlet.serverOSVersion=OS Version
|
||||
htmlManagerServlet.serverTitle=Server Informationen
|
||||
htmlManagerServlet.serverVersion=Tomcat Version
|
||||
htmlManagerServlet.title=Tomcat Webanwendungs-Manager
|
||||
|
||||
managerServlet.alreadyContext=FEHLER - Anwendung existiert bereits für Kontext Pfad [{0}]
|
||||
managerServlet.deployed=OK - Anwendung mit Kontext Pfad [{0}] installiert
|
||||
managerServlet.exception=FEHLER - Ausnahme aufgetreten [{0}]
|
||||
managerServlet.invalidPath=FEHLER - Ungültiger Kontext Pfad [{0}] angegeben
|
||||
managerServlet.listed=OK - Auflistung der Webanwendungen für virtuellen Server [{0}]
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=Fehler - Das Verzeichnis [{0}] konnte nicht erstellt werden.
|
||||
managerServlet.noCommand=FEHLER - Es wurde kein Kommando angegeben
|
||||
managerServlet.noContext=FEHLER - Es existiert kein Kontext für Pfad [{0}]
|
||||
managerServlet.noGlobal=FEHLER - Keine globalen JNDI Ressourcen verfügbar
|
||||
managerServlet.noSelf=FEHLER - Manager-Kommandos können nicht auf die Manager-Anwendung selbst angewendet werden
|
||||
managerServlet.noWrapper=Container hat setWrapper() für dieses Servlet nicht aufgerufen
|
||||
managerServlet.reloaded=OK - Anwendung mit Kontext Pfad [{0}] neu geladen
|
||||
managerServlet.resourcesAll=OK - Auflistung globaler Ressourcen (alle Typen)
|
||||
managerServlet.resourcesType=OK - Auflistung globaler Ressourcen von Typ [{0}]
|
||||
managerServlet.saveFail=FEHLER - Speichern der Konfiguration fehlgeschlagen: [{0}]
|
||||
managerServlet.sessiondefaultmax=Voreingestellter Sitzungsablauf nach maximal [{0}] Minuten Inaktivität
|
||||
managerServlet.sessions=OK - Sitzungs-Informationen für Anwendung mit Kontext Pfad [{0}]
|
||||
managerServlet.sessiontimeout=Inaktiv für [{0}] Minuten: [{1}] Sitzungen
|
||||
managerServlet.sessiontimeout.expired=Inaktiv für [{0}] Minuten: [{1}] Sitzungen sind abgelaufen
|
||||
managerServlet.sessiontimeout.unlimited=unlimited Minuten: [{0}] Sitzungen
|
||||
managerServlet.startFailed=FEHLER - Anwendung mit Kontext Pfad [{0}] konnte nicht gestartet werden
|
||||
managerServlet.started=OK - Anwendung mit Kontext Pfad [{0}] gestartet
|
||||
managerServlet.stopped=OK - Anwendung mit Kontext Pfad [{0}] gestoppt
|
||||
managerServlet.trustedCertsNotConfigured=Für diesen virtuellen Host wurden keine vertrauenswürdige Zertifikate konfiguriert
|
||||
managerServlet.undeployed=OK - Anwendung mit Kontext Pfad [{0}] entfernt
|
||||
managerServlet.unknownCommand=FEHLER - Unbekanntes Kommando [{0}]
|
||||
|
||||
statusServlet.complete=Ausführlicher Server Status
|
||||
statusServlet.title=Server Status
|
||||
120
java/org/apache/catalina/manager/LocalStrings_es.properties
Normal file
120
java/org/apache/catalina/manager/LocalStrings_es.properties
Normal file
@@ -0,0 +1,120 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=Ejecutándose
|
||||
htmlManagerServlet.appsExpire=Expirar sesiones
|
||||
htmlManagerServlet.appsName=Nombre a Mostrar
|
||||
htmlManagerServlet.appsPath=Ruta
|
||||
htmlManagerServlet.appsReload=Recargar
|
||||
htmlManagerServlet.appsSessions=Sesiones
|
||||
htmlManagerServlet.appsStart=Arrancar
|
||||
htmlManagerServlet.appsStop=Parar
|
||||
htmlManagerServlet.appsTasks=Comandos
|
||||
htmlManagerServlet.appsTitle=Aplicaciones
|
||||
htmlManagerServlet.appsUndeploy=Replegar
|
||||
htmlManagerServlet.appsVersion=Versión
|
||||
htmlManagerServlet.connectorStateProcessingTime=Tiempo de procesamiento:
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=Solicitud
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=VHost
|
||||
htmlManagerServlet.deployButton=Desplegar
|
||||
htmlManagerServlet.deployConfig=URL de archivo de Configuración XML:
|
||||
htmlManagerServlet.deployPath=Trayectoria de Contexto (opcional):
|
||||
htmlManagerServlet.deployServer=Desplegar directorio o archivo WAR localizado en servidor
|
||||
htmlManagerServlet.deployTitle=Desplegar
|
||||
htmlManagerServlet.deployUpload=Archivo WAR a desplegar
|
||||
htmlManagerServlet.deployUploadFail=FALLO - Falló Carga de Despliegue, Excepción: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=Seleccione archivo WAR a cargar
|
||||
htmlManagerServlet.deployUploadInServerXml=FALLO - El fichero war [{0}] no se puede cargar si se define el contexto en server.xml
|
||||
htmlManagerServlet.deployUploadNoFile=FALLO - Falló la carga del fichero, no hay fichero
|
||||
htmlManagerServlet.deployUploadNotWar=FALLO - El fichero cargado [{0}] debe de ser un .war
|
||||
htmlManagerServlet.deployUploadWarExists=FALLO - El fichero war [{0}] ya existe en el servidor
|
||||
htmlManagerServlet.deployWar=URL de WAR o Directorio:
|
||||
htmlManagerServlet.diagnosticsLeak=Revisa a ver si una aplicación web ha causado fallos de memoria al parar, recargar o replegarse.
|
||||
htmlManagerServlet.diagnosticsLeakButton=Halla fallos de memoria
|
||||
htmlManagerServlet.diagnosticsLeakWarning=Este chequeo de diagnóstico disparará una colección completa de basura. Utilízalo con extremo cuidado en sistemas en producción.
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=Lista los virtual hosts configurados con TLS y la cadena de ceritifaco para cada uno de ellos.\n
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=Cifrados
|
||||
htmlManagerServlet.diagnosticsTitle=Diagnósticos
|
||||
htmlManagerServlet.expire.explain=sin trabajar ≥
|
||||
htmlManagerServlet.expire.unit=minutos
|
||||
htmlManagerServlet.findleaksList=Las siguientes aplicaciones web fueron paradas (recargadas, replegadas), pero sus clases de las ejecuciones previas aún se encuentran en memoria, causando así un fallo de memoria (usa un perfilador para confirmarlo):
|
||||
htmlManagerServlet.findleaksNone=No parece haber aplicaciones web que hayan disparado un fallo de memoria al ser paradas, recargadas o replegadas.
|
||||
htmlManagerServlet.helpHtmlManager=Ayuda HTML de Gestor
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=Ayuda de Gestor
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=Memoria disponible:
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=Pool de Memoria
|
||||
htmlManagerServlet.list=Listar Aplicaciones
|
||||
htmlManagerServlet.manager=Gestor
|
||||
htmlManagerServlet.messageLabel=Mensaje:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=Ninguno especificado
|
||||
htmlManagerServlet.osTotalPageFile=Tamaño total de archivo de página:
|
||||
htmlManagerServlet.serverHostname=NombreDeMáquina
|
||||
htmlManagerServlet.serverIPAddress=Dirección IP
|
||||
htmlManagerServlet.serverJVMVendor=Vendedor JVM
|
||||
htmlManagerServlet.serverJVMVersion=Versión JVM
|
||||
htmlManagerServlet.serverOSArch=Arquitectura de SO
|
||||
htmlManagerServlet.serverOSName=Nombre del SO
|
||||
htmlManagerServlet.serverOSVersion=Versión de SO
|
||||
htmlManagerServlet.serverTitle=Información de Servidor
|
||||
htmlManagerServlet.serverVersion=Versión de Tomcat
|
||||
htmlManagerServlet.title=Gestor de Aplicaciones Web de Tomcat
|
||||
|
||||
managerServlet.alreadyContext=FALLO - Ya existe la aplicación en la trayectoria [{0}]
|
||||
managerServlet.deleteFail=FALLO - No pude borrar [{0}]. La presencia continua de este fichero puede causar problemas.
|
||||
managerServlet.deployFailed=FALLO - No pude desplegar la aplicación en ruta de contexto [{0}]
|
||||
managerServlet.deployed=OK - Desplegada aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.deployedButNotStarted=FALLO - Apliación desplegada en la ruta de contexto [{0}], pero el contexto no pudo arrancar
|
||||
managerServlet.exception=FALLO - Encontrada excepción [{0}]
|
||||
managerServlet.findleaksFail=FALLO - Ha fallado la búsqueda de fallos: La Máquina no es una instancia de StandardHost
|
||||
managerServlet.findleaksList=OK - Hallados fallos potenciales de memoria en las siguientes aplicaciones:
|
||||
managerServlet.findleaksNone=OK - No se han hallado fallos de memoria
|
||||
managerServlet.invalidCommand=Fallo - Se proveiron parámetros inválidos para el comando [{0}]
|
||||
managerServlet.invalidPath=FALLO - Se ha especificado una trayectoria inválida de contexto [{0}]
|
||||
managerServlet.listed=OK - Aplicaciones listadas para máquina virtual [{0}]
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=FALLO - No pude crear directorio [{0}]
|
||||
managerServlet.noCommand=FALLO - No se ha especificado comando
|
||||
managerServlet.noContext=FALLO - No existe contexto para trayectoria [{0}]
|
||||
managerServlet.noGlobal=FALLO - No hay disponibles recursos globales JNDI
|
||||
managerServlet.noManager=FALLO - No existe gestor para ruta [{0}]
|
||||
managerServlet.noSelf=FALLO - El gestor no puede recargarse, replegarse, pararse o replegarse a sí mismo
|
||||
managerServlet.noWrapper=El Contenedor no ha llamado a setWrapper() para este servlet
|
||||
managerServlet.notDeployed=FALLO - El contexto [{0}] está definido en server.xml y puede que no esté desplegado
|
||||
managerServlet.objectNameFail=FALLO - No pude registrar objeto de nombre [{0}] para Gestor de Servlet
|
||||
managerServlet.postCommand=FALLO - Intenté usar el comando [{0}] vía un requerimiento GET pero se necesita POST
|
||||
managerServlet.reloaded=OK - Recargada aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.resourcesAll=OK - Listados recursos globales de todos los tipos
|
||||
managerServlet.resourcesType=OK - Listados recursos globales de tipo [{0}]
|
||||
managerServlet.saveFail=FAIL - Fallo al guardar la configuración: [{0}]
|
||||
managerServlet.saved=OK - Configuración de Servidor guardada
|
||||
managerServlet.savedContext=OK - Configuración de Contexto [{0}] guardada
|
||||
managerServlet.sessiondefaultmax=Intervalo máximo por defecto de sesión inactiva [{0}] minutos
|
||||
managerServlet.sessions=OK - Información de sesión para aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.sessiontimeout=[{0}] minutos: [{1}] sesiones
|
||||
managerServlet.sessiontimeout.expired=[{0}] minutos: expired [{1}] sesiones
|
||||
managerServlet.sessiontimeout.unlimited=unlimited minutos: [{0}] sesiones
|
||||
managerServlet.sslConnectorCiphers=OK - Connector / Información cifrada con SSL
|
||||
managerServlet.startFailed=FALLO - No se pudo arrancar la aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.started=OK - Arrancada aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.stopped=OK - Parada aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.trustedCertsNotConfigured=No se configuraron certificados confiables para este virtual host
|
||||
managerServlet.undeployed=OK - Replegada aplicación en trayectoria de contexto [{0}]
|
||||
managerServlet.unknownCommand=FALLO - Comando desconocido [{0}]
|
||||
|
||||
statusServlet.complete=Estado Completo de Servidor
|
||||
statusServlet.title=Estado de Servidor
|
||||
177
java/org/apache/catalina/manager/LocalStrings_fr.properties
Normal file
177
java/org/apache/catalina/manager/LocalStrings_fr.properties
Normal file
@@ -0,0 +1,177 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=Fonctionnelle
|
||||
htmlManagerServlet.appsExpire=Expirer les sessions
|
||||
htmlManagerServlet.appsName=Nom d'affichage
|
||||
htmlManagerServlet.appsPath=Chemin
|
||||
htmlManagerServlet.appsReload=Recharger
|
||||
htmlManagerServlet.appsSessions=Sessions
|
||||
htmlManagerServlet.appsStart=Démarrer
|
||||
htmlManagerServlet.appsStop=Arrêter
|
||||
htmlManagerServlet.appsTasks=Commandes
|
||||
htmlManagerServlet.appsTitle=Applications
|
||||
htmlManagerServlet.appsUndeploy=Retirer
|
||||
htmlManagerServlet.appsVersion=Version
|
||||
htmlManagerServlet.configReloadButton=Relire
|
||||
htmlManagerServlet.configSslHostName=Nom d'hôte TLS (optionnel)
|
||||
htmlManagerServlet.configSslReloadTitle=Relisant les fichiers de configuration TLS
|
||||
htmlManagerServlet.configTitle=Configuration
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=Nombre de sockets connectés:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=Octets reçus:
|
||||
htmlManagerServlet.connectorStateBytesSent=Octets envoyés:
|
||||
htmlManagerServlet.connectorStateErrorCount=Nombre d'erreurs:
|
||||
htmlManagerServlet.connectorStateHint=P: Traitement et préparation de la requête S: Service F: Fin R: Prêt K: Connecté
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=Temps de traitement maximal:
|
||||
htmlManagerServlet.connectorStateMaxThreads=Nombre de threads maximum:
|
||||
htmlManagerServlet.connectorStateProcessingTime=Temps de traitement:
|
||||
htmlManagerServlet.connectorStateRequestCount=Nombre de requêtes:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=Octets Reçus
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=Octets Envoyés
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=Client (Réel)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwardé)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=Requête
|
||||
htmlManagerServlet.connectorStateTableTitleStage=Etape
|
||||
htmlManagerServlet.connectorStateTableTitleTime=Temps
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=Hôte virtuel (VHost)
|
||||
htmlManagerServlet.connectorStateThreadBusy=Nombre de threads utilisés:
|
||||
htmlManagerServlet.connectorStateThreadCount=Nombre de threads actuel:
|
||||
htmlManagerServlet.deployButton=Deployer
|
||||
htmlManagerServlet.deployConfig=URL du fichier XML de configuration:
|
||||
htmlManagerServlet.deployPath=Chemin de context (requis):
|
||||
htmlManagerServlet.deployServer=Emplacement du répertoire ou fichier WAR de déploiement sur le serveur
|
||||
htmlManagerServlet.deployTitle=Deployer
|
||||
htmlManagerServlet.deployUpload=Fichier WAR à déployer
|
||||
htmlManagerServlet.deployUploadFail=ECHEC - Téléversement pour déploiement a échoué, exception: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=Choisir le fichier WAR à téléverser
|
||||
htmlManagerServlet.deployUploadInServerXml=ECHEC - Fichier WAR [{0}] ne peut être téléversé lorsque le contexte est défini dans server.xml
|
||||
htmlManagerServlet.deployUploadNoFile=ECHEC - Téléversement a échoué, aucun fichier
|
||||
htmlManagerServlet.deployUploadNotWar=ECHEC - Fichier à téléverser, [{0}], doit être un .war
|
||||
htmlManagerServlet.deployUploadWarExists=ECHEC - Fichier War [{0}] déjà existant sur le serveur
|
||||
htmlManagerServlet.deployWar=URL vers WAR ou répertoire:
|
||||
htmlManagerServlet.diagnosticsLeak=Vérifiez si une application web a causé une fuite de mémoire lors de son arrêt, rechargement ou déchargement
|
||||
htmlManagerServlet.diagnosticsLeakButton=Trouver des fuites
|
||||
htmlManagerServlet.diagnosticsLeakWarning=Le diagnostic doit démarrer une collecte complète de la mémoire, utilisez le avec précaution dans un environnement de production
|
||||
htmlManagerServlet.diagnosticsSsl=Diagnostics de configuration TLS du connecteur
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=Certificats
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=Entrez la liste des hôtes virtuels TLS et la chaîne de certificats pour chacun.
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=Chiffres
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=Lister les hôtes virtuels TLS configurés et les chiffres utilisés par chacun
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Certificats de confiance
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=Lister les hôtes virtuels TLS configurés et les certificats de confiance utilisés par chacun
|
||||
htmlManagerServlet.diagnosticsTitle=Diagnostics
|
||||
htmlManagerServlet.expire.explain=inactives depuis ≥
|
||||
htmlManagerServlet.expire.unit=minutes
|
||||
htmlManagerServlet.findleaksList=Les applications suivantes ont été arrêtées (redémarrées, retirées), mais certaines de leurs classes sont toujours présentes en mémoire, cela pourrait donc causer une fuite de mémoire (utiliser un profileur pour le confirmer):
|
||||
htmlManagerServlet.findleaksNone=Aucune application n'a apparemment causé de fuite de mémoire en l'arrêtant, en la rechargeant ou en la retirant
|
||||
htmlManagerServlet.helpHtmlManager=Aide HTML Gestionnaire
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=Aide Gestionnaire
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=Mémoire disponible:
|
||||
htmlManagerServlet.jvmMaxMemory=Mémoire maximale:
|
||||
htmlManagerServlet.jvmTableTitleInitial=Initial
|
||||
htmlManagerServlet.jvmTableTitleMaximum=Maximum
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=Pool mémoire
|
||||
htmlManagerServlet.jvmTableTitleTotal=Total
|
||||
htmlManagerServlet.jvmTableTitleType=Type
|
||||
htmlManagerServlet.jvmTableTitleUsed=Utilisé
|
||||
htmlManagerServlet.jvmTotalMemory=Mémoire totale:
|
||||
htmlManagerServlet.list=Lister les applications
|
||||
htmlManagerServlet.manager=Gestionnaire
|
||||
htmlManagerServlet.messageLabel=Message:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=Aucun spécifié
|
||||
htmlManagerServlet.osAvailableMemory=Mémoire disponible:
|
||||
htmlManagerServlet.osFreePageFile=Fichier de page disponible:
|
||||
htmlManagerServlet.osKernelTime=Temps noyau du processus:
|
||||
htmlManagerServlet.osMemoryLoad=Charge mémoire:
|
||||
htmlManagerServlet.osPhysicalMemory=Mémoire physique:
|
||||
htmlManagerServlet.osTotalPageFile=Fichier de page total:
|
||||
htmlManagerServlet.osUserTime=Temps utilisateur du processus:
|
||||
htmlManagerServlet.serverHostname=Nom d'hôte
|
||||
htmlManagerServlet.serverIPAddress=Adresse IP
|
||||
htmlManagerServlet.serverJVMVendor=Fournisseur de la JVM
|
||||
htmlManagerServlet.serverJVMVersion=Version de la JVM
|
||||
htmlManagerServlet.serverOSArch=Architecture d'OS
|
||||
htmlManagerServlet.serverOSName=Nom d'OS
|
||||
htmlManagerServlet.serverOSVersion=Version d'OS
|
||||
htmlManagerServlet.serverTitle=Serveur
|
||||
htmlManagerServlet.serverVersion=Version de serveur
|
||||
htmlManagerServlet.title=Gestionnaire d'applications WEB Tomcat
|
||||
|
||||
managerServlet.alreadyContext=ECHEC - l''application existe déjà dans le chemin [{0}]
|
||||
managerServlet.certsNotAvailable=L'information sur les certificats ne peut pas être obtenu de ce connecteur au cours de son exécution
|
||||
managerServlet.deleteFail=ECHEC - Impossible de supprimer [{0}], ce qui pourrait causer des problèmes
|
||||
managerServlet.deployFailed=ECHEC - Echec au déploiement de l''application pour le chemin de contexte [{0}]
|
||||
managerServlet.deployed=OK - Application déployée pour le chemin de contexte [{0}]
|
||||
managerServlet.deployedButNotStarted=ECHEC - Application déployée pour le chemin de contexte [{0}] mais le démarrage du contexte a échoué
|
||||
managerServlet.exception=ECHEC - L''exception [{0}] a été rencontrée
|
||||
managerServlet.findleaksFail=ECHEC - Echec de la recherche de fuites, car l'hôte n'est pas un StandardHost
|
||||
managerServlet.findleaksList=OK - De possibles fuites de mémoire ont été trouvées dans les applications suivantes:
|
||||
managerServlet.findleaksNone=OK - Aucune fuite de mémoire trouvée
|
||||
managerServlet.inService=ECHEC - Une opération de gestion est déjà en cours pour l''application [{0}]
|
||||
managerServlet.invalidCommand=ECHEC - Des paramètres incorrects ont été fournis pour la commande [{0}]
|
||||
managerServlet.invalidPath=ECHEC - Un chemin de contexte invalide [{0}] a été spécifié
|
||||
managerServlet.listed=OK - Applications listées pour l''hôte virtuel (virtual host) [{0}]
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=ECHEC - Le répertoire [{0}] n''a pas pu être créé
|
||||
managerServlet.noCommand=ECHEC - Aucune commande n'a été spécifiée
|
||||
managerServlet.noContext=ECHEC - Aucun contexte n''existe pour le chemin [{0}]
|
||||
managerServlet.noGlobal=ECHEC - Aucune ressource JNDI globale n'est disponible
|
||||
managerServlet.noManager=ECHEC - Aucun gestionnaire n''existe pour le chemin [{0}]
|
||||
managerServlet.noSelf=ECHEC - Le gestionnaire ne peut se recharger, se retirer, s'arrêter, ou se déployer lui-même
|
||||
managerServlet.noWrapper=Le conteneur n'a pas appelé "setWrapper()" pour cette servlet
|
||||
managerServlet.notDeployed=ECHEC - Le contexte [{0}] est défini dans server.xml et ne peut être retiré
|
||||
managerServlet.notSslConnector=SSL n'est pas activé pour ce connecteur
|
||||
managerServlet.objectNameFail=ECHEC - Le nom d''objet [{0}] n''a pas pu être enregistré pour le Servlet de Gestion
|
||||
managerServlet.postCommand=ECHEC - Tentative d''utilisation de la commande [{0}] via une requête GET, mais POST est requis
|
||||
managerServlet.reloaded=OK - L''application associée au chemin de contexte [{0}] a été rechargée
|
||||
managerServlet.renameFail=ECHEC - N''a pas pu renommer [{0}] vers [{1}], cela pourrait causer des problèmes pour de prochains déploiements
|
||||
managerServlet.resourcesAll=OK - Liste des ressources globales de tout type
|
||||
managerServlet.resourcesType=OK - Liste des ressources globales de type [{0}]
|
||||
managerServlet.saveFail=ECHEC - La sauvegarde de la configuration a échoué: [{0}]
|
||||
managerServlet.saved=OK - Configuration serveur sauvegardée
|
||||
managerServlet.savedContext=OK - Configuration du contexte [{0}] sauvegardée
|
||||
managerServlet.serverInfo=OK - Informations sur le serveur\n\
|
||||
Version de Tomcat: [{0}]\n\
|
||||
Nom de l''OS: [{1}]\n\
|
||||
Version de l''OS: [{2}]\n\
|
||||
Architecture de l''OS: [{3}]\n\
|
||||
Version de la JVM: [{4}]\n\
|
||||
Fournisseur de la JVM: [{5}]
|
||||
managerServlet.sessiondefaultmax=La valeur par défaut du délai d''inactivité maximum d''une sessions est de [{0}] minutes
|
||||
managerServlet.sessions=OK - Information de session pour l''application au chemin de contexte [{0}]
|
||||
managerServlet.sessiontimeout=Inactivité pendant [{0}] minutes: [{1}] sessions
|
||||
managerServlet.sessiontimeout.expired=Inactivité pendant [{0}] minutes: [{1}] sessions ont été expirées
|
||||
managerServlet.sessiontimeout.unlimited=Délai illimité: [{0}] sessions
|
||||
managerServlet.sslConnectorCerts=OK - Information sur le connecteur et la chaîne de certificats
|
||||
managerServlet.sslConnectorCiphers=OK - Information sur le connecteur et les chiffres SSL
|
||||
managerServlet.sslConnectorTrustedCerts=OK - Information sur le Connecteur / Certificat de confiance
|
||||
managerServlet.sslReload=OK - La configuration TLS de [{0}] a été rechargée
|
||||
managerServlet.sslReloadAll=OK - Configuration TLS rechargée pour tous les hôtes virtuels TLS
|
||||
managerServlet.sslReloadFail=ECHEC - Echec lors du rechargement de la configuration TLS
|
||||
managerServlet.startFailed=ECHEC - L''application pour le chemin de contexte [{0}] n''a pas pu être démarrée
|
||||
managerServlet.started=OK - Application démarrée pour le chemin de contexte [{0}]
|
||||
managerServlet.stopped=OK - Application arrêtée pour le chemin de contexte [{0}]
|
||||
managerServlet.storeConfig.noMBean=ECHEC - Pas de mbean StoreConfig enregistré à [{0}], l''enregistrement est effectué par StoreConfigLifecycleListener
|
||||
managerServlet.threaddump=OK - Etat des threads de la JVM
|
||||
managerServlet.trustedCertsNotConfigured=Aucun certificat de confiance n'est configuré pour cet hôte virtuel
|
||||
managerServlet.undeployed=OK - Application non déployée pour le chemin de contexte [{0}]
|
||||
managerServlet.unknownCommand=ECHEC - Commande inconnue [{0}]
|
||||
managerServlet.vminfo=OK - Informations sur la VM
|
||||
|
||||
statusServlet.complete=Etat complet du serveur
|
||||
statusServlet.title=Etat du serveur
|
||||
179
java/org/apache/catalina/manager/LocalStrings_ja.properties
Normal file
179
java/org/apache/catalina/manager/LocalStrings_ja.properties
Normal file
@@ -0,0 +1,179 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=実行中
|
||||
htmlManagerServlet.appsExpire=期限切れセッション
|
||||
htmlManagerServlet.appsName=表示名
|
||||
htmlManagerServlet.appsPath=パス
|
||||
htmlManagerServlet.appsReload=再ロード
|
||||
htmlManagerServlet.appsSessions=セッション
|
||||
htmlManagerServlet.appsStart=起動
|
||||
htmlManagerServlet.appsStop=停止
|
||||
htmlManagerServlet.appsTasks=コマンド
|
||||
htmlManagerServlet.appsTitle=アプリケーション
|
||||
htmlManagerServlet.appsUndeploy=配備解除
|
||||
htmlManagerServlet.appsVersion=バージョン
|
||||
htmlManagerServlet.configReloadButton=再読み込み
|
||||
htmlManagerServlet.configSslHostName=TLSホスト名(オプション)
|
||||
htmlManagerServlet.configSslReloadTitle=TLS構成ファイルを再読み込みします。
|
||||
htmlManagerServlet.configTitle=構成ファイル
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=キープアライブソケット数:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=受信バイト数:
|
||||
htmlManagerServlet.connectorStateBytesSent=送信バイト:
|
||||
htmlManagerServlet.connectorStateErrorCount=エラー数:
|
||||
htmlManagerServlet.connectorStateHint=P:パースとリクエスト準備 S:サービス F:終了 R:Ready K:キープアライブ
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=最大処理時間:
|
||||
htmlManagerServlet.connectorStateMaxThreads=最大スレッド:
|
||||
htmlManagerServlet.connectorStateProcessingTime=処理時間:
|
||||
htmlManagerServlet.connectorStateRequestCount=リクエスト数:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=B Recv
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=送信バイト数
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=Client (Actual)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwarded)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=リクエスト
|
||||
htmlManagerServlet.connectorStateTableTitleStage=ステージ
|
||||
htmlManagerServlet.connectorStateTableTitleTime=時間
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=仮想ホスト
|
||||
htmlManagerServlet.connectorStateThreadBusy=現在のBusyスレッド:
|
||||
htmlManagerServlet.connectorStateThreadCount=現在のスレッド数:
|
||||
htmlManagerServlet.deployButton=配備
|
||||
htmlManagerServlet.deployConfig=XML設定ファイルのURL:
|
||||
htmlManagerServlet.deployPath=コンテキストパス (省略可):
|
||||
htmlManagerServlet.deployServer=サーバ上のWARファイル又はディレクトリの配備
|
||||
htmlManagerServlet.deployTitle=配備
|
||||
htmlManagerServlet.deployUpload=WARファイルの配備
|
||||
htmlManagerServlet.deployUploadFail=FAIL - 配備のアップロードが失敗しました、例外: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=アップロードするWARファイルの選択
|
||||
htmlManagerServlet.deployUploadInServerXml=FAIL - server.xmlでコンテキストが定義されている場合、warファイル[{0}]をアップロードできません
|
||||
htmlManagerServlet.deployUploadNoFile=FAIL - ファイルのアップロードが失敗しました、ファイルが存在しません
|
||||
htmlManagerServlet.deployUploadNotWar=FAIL - アップロードするファイル [{0}] はWARファイルでなければいけません
|
||||
htmlManagerServlet.deployUploadWarExists=FAIL - WARファイル [{0}] は既にサーバ上に存在します
|
||||
htmlManagerServlet.deployWar=WARファイル又はディレクトリのURL:
|
||||
htmlManagerServlet.diagnosticsLeak=Web アプリケーションの停止や再読み込み、配置解除でメモリーリークが発生しているか確認します。
|
||||
htmlManagerServlet.diagnosticsLeakButton=メモリリーク発見
|
||||
htmlManagerServlet.diagnosticsLeakWarning=この診断チェックにより、Fill GCがトリガーされます。 プロダクションシステムには非常に注意して使用してください。
|
||||
htmlManagerServlet.diagnosticsSsl=TLSコネクタ構成の診断
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=証明書
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=設定済みのTLS仮想ホストとそれぞれの証明書チェーンを一覧表示します。
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=暗号
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=設定済みのTLS仮想ホストとそれぞれの暗号を一覧表示します。
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=信頼できる証明書
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=設定済みのTLS仮想ホストとそれぞれの信頼できる証明書を一覧表示します。
|
||||
htmlManagerServlet.diagnosticsTitle=診断
|
||||
htmlManagerServlet.expire.explain=非アクティブ ≥
|
||||
htmlManagerServlet.expire.unit=分
|
||||
htmlManagerServlet.findleaksList=次のWebアプリケーションは停止しました(再ロード、アンデプロイ)。\n\
|
||||
以前の起動からのクラスはまだメモリにロードされているため、メモリ\n\
|
||||
リークを引き起こします。(確認のためにプロファイラを使用して下さい):
|
||||
htmlManagerServlet.findleaksNone=停止、再読み込み読み込み、配置解除によりメモリーリークの発生した Web アプリケーションはありません。
|
||||
htmlManagerServlet.helpHtmlManager=HTMLマネージャヘルプ
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=マネージャヘルプ
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=フリーメモリ:
|
||||
htmlManagerServlet.jvmMaxMemory=最大メモリ:
|
||||
htmlManagerServlet.jvmTableTitleInitial=初期
|
||||
htmlManagerServlet.jvmTableTitleMaximum=最大値
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=メモリプール
|
||||
htmlManagerServlet.jvmTableTitleTotal=合計
|
||||
htmlManagerServlet.jvmTableTitleType=Type
|
||||
htmlManagerServlet.jvmTableTitleUsed=使用中
|
||||
htmlManagerServlet.jvmTotalMemory=合計メモリ:
|
||||
htmlManagerServlet.list=アプリケーションの一覧
|
||||
htmlManagerServlet.manager=マネージャ
|
||||
htmlManagerServlet.messageLabel=メッセージ
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=指定なし
|
||||
htmlManagerServlet.osAvailableMemory=利用可能なメモリ
|
||||
htmlManagerServlet.osFreePageFile=フリーページファイル:
|
||||
htmlManagerServlet.osKernelTime=プロセスのカーネル時間:
|
||||
htmlManagerServlet.osMemoryLoad=メモリロード:
|
||||
htmlManagerServlet.osPhysicalMemory=物理メモリ:
|
||||
htmlManagerServlet.osTotalPageFile=合計ページファイル:
|
||||
htmlManagerServlet.osUserTime=プロセスユーザ名:
|
||||
htmlManagerServlet.serverHostname=ホスト名
|
||||
htmlManagerServlet.serverIPAddress=IP アドレス
|
||||
htmlManagerServlet.serverJVMVendor=JVMベンダ
|
||||
htmlManagerServlet.serverJVMVersion=JVMバージョン
|
||||
htmlManagerServlet.serverOSArch=OSアーキテクチャ
|
||||
htmlManagerServlet.serverOSName=OS名
|
||||
htmlManagerServlet.serverOSVersion=OSバージョン
|
||||
htmlManagerServlet.serverTitle=サーバ情報
|
||||
htmlManagerServlet.serverVersion=Tomcatバージョン
|
||||
htmlManagerServlet.title=Tomcat Webアプリケーションマネージャ
|
||||
|
||||
managerServlet.alreadyContext=FAIL - アプリケーションは、既にパス [{0}] に存在します
|
||||
managerServlet.certsNotAvailable=実行時にこのコネクタから証明書情報を取得できません。
|
||||
managerServlet.deleteFail=FAIL - [{0}]を削除できません。 このファイルが継続して存在すると、問題が発生する可能性があります。
|
||||
managerServlet.deployFailed=FAIL - コンテキストパス [{0}] にアプリケーションを配備できません。
|
||||
managerServlet.deployed=OK - コンテキストパス [{0}] でアプリケーションを配備しました
|
||||
managerServlet.deployedButNotStarted=FAIL - コンテキストパス[{0}]にアプリケーションをデプロイしましたが、コンテキストを開始できませんでした。
|
||||
managerServlet.exception=FAIL - 例外 [{0}] が発生しました
|
||||
managerServlet.findleaksFail=FAIL - リークを検出できません。Hostは StandardHost のインスタンスめはありません。
|
||||
managerServlet.findleaksList=OK - 次のアプリケーションで潜在的なメモリリークが見つかりました:
|
||||
managerServlet.findleaksNone=OK - メモリリークは見つかりません
|
||||
managerServlet.inService=FAIL - アプリケーション [{0}] はすでにサービスを開始しています。
|
||||
managerServlet.invalidCommand=FAIL - コマンド[{0}]に無効なパラメータが指定されました
|
||||
managerServlet.invalidPath=FAIL - 無効なコンテキストパス [{0}] が指定されました
|
||||
managerServlet.listed=OK - バーチャルホスト [{0}] のアプリケーション一覧です
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=FAIL - ディレクトリ [{0}] は作成できません。
|
||||
managerServlet.noCommand=FAIL - コマンドが指定されていません
|
||||
managerServlet.noContext=FAIL - パス [{0}] のコンテキストが存在しません
|
||||
managerServlet.noGlobal=FAIL - グローバルなJNDIリソースが利用できません
|
||||
managerServlet.noManager=FAIL - パス[{0}]のマネージャが存在しません
|
||||
managerServlet.noSelf=FAIL - マネージャ自身を再ロード、削除、停止、又は配備解除できません
|
||||
managerServlet.noWrapper=コンテナはこのサーブレットに対して呼び出されたsetWrapper()を持っていません
|
||||
managerServlet.notDeployed=FAIL - Context[{0}]はserver.xmlで定義されており、展開されていない可能性があります。
|
||||
managerServlet.notSslConnector=このコネクターでは SSL が有効化されていません。
|
||||
managerServlet.objectNameFail=FAIL - オブジェクト名 [{0}] を ManagerServlet として登録できません。
|
||||
managerServlet.postCommand=FAIL - コマンド [{0}] を GET リクエストで実行しようとしましたが、POST リクエストでなければなりません。
|
||||
managerServlet.reloaded=OK - コンテキストパス [{0}] のアプリケーションを再ロードしました
|
||||
managerServlet.renameFail=FAIL - [{0}]の名前を[{1}]に変更できません。 これにより、今後の展開で問題が発生する可能性があります。
|
||||
managerServlet.resourcesAll=OK - すべてのタイプのグローバルリソースを列挙しました
|
||||
managerServlet.resourcesType=OK - タイプ [{0}] のグローバルリソースを列挙しました
|
||||
managerServlet.saveFail=FAIL - 設定の保存に失敗しました: [{0}]
|
||||
managerServlet.saved=OK - サーバの設定を保存しました
|
||||
managerServlet.savedContext=OK - コンテキスト [{0}] の設定を保存しました
|
||||
managerServlet.serverInfo=OK - サーバー情報\n\
|
||||
Tomcatバージョン:[{0}]\n\
|
||||
OS名:[{1}]\n\
|
||||
OSバージョン:[{2}]\n\
|
||||
OSアーキテクチャ:[{3}]\n\
|
||||
JVMバージョン:[{4}]\n\
|
||||
JVMベンダー:[{5}]
|
||||
managerServlet.sessiondefaultmax=デフォルトの最大セッション停止間隔は[{0}]分です
|
||||
managerServlet.sessions=OK - コンテキストパス [{0}] のアプリケーションのセッション情報です
|
||||
managerServlet.sessiontimeout=[{0}]分: [{1}]セッション
|
||||
managerServlet.sessiontimeout.expired=[{0}]分: expired [{1}]セッション
|
||||
managerServlet.sessiontimeout.unlimited=unlimited 分: [{0}]セッション
|
||||
managerServlet.sslConnectorCerts=OK - コネクタ/証明書チェーンの情報
|
||||
managerServlet.sslConnectorCiphers=OK - Connector/ SSL暗号情報
|
||||
managerServlet.sslConnectorTrustedCerts=OK - コネクタ/信頼された証明書情報
|
||||
managerServlet.sslReload=OK - [{0}]のリロードされたTLS設定
|
||||
managerServlet.sslReloadAll=OK - すべてのTLS仮想ホストのリロードされたTLS設定
|
||||
managerServlet.sslReloadFail=FAIL - TLS設定を再ロードできませんでした
|
||||
managerServlet.startFailed=FAIL - コンテキストパス [{0}] のアプリケーションが起動できません
|
||||
managerServlet.started=OK - コンテキストパス [{0}] でアプリケーションを起動しました
|
||||
managerServlet.stopped=OK - コンテキストパス [{0}] でアプリケーションを停止しました
|
||||
managerServlet.storeConfig.noMBean=FAIL - [{0}] に StoreConfig Mbean が登録されていません。一般的には StoreConfigLifecycleListener が登録します。
|
||||
managerServlet.threaddump=OK - JVMスレッドダンプ
|
||||
managerServlet.trustedCertsNotConfigured=この仮想ホストには信頼できる証明書が構成されていません。
|
||||
managerServlet.undeployed=OK - コンテキストパス [{0}] のアプリケーションを配備解除しました
|
||||
managerServlet.unknownCommand=FAIL - 未知のコマンド [{0}] です
|
||||
managerServlet.vminfo=OK - VM 情報
|
||||
|
||||
statusServlet.complete=サーバの全状態
|
||||
statusServlet.title=サーバの状態
|
||||
177
java/org/apache/catalina/manager/LocalStrings_ko.properties
Normal file
177
java/org/apache/catalina/manager/LocalStrings_ko.properties
Normal file
@@ -0,0 +1,177 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=실행 중
|
||||
htmlManagerServlet.appsExpire=세션들을 만료시키기
|
||||
htmlManagerServlet.appsName=표시 이름
|
||||
htmlManagerServlet.appsPath=경로
|
||||
htmlManagerServlet.appsReload=다시 로드
|
||||
htmlManagerServlet.appsSessions=세션들
|
||||
htmlManagerServlet.appsStart=시작
|
||||
htmlManagerServlet.appsStop=중지
|
||||
htmlManagerServlet.appsTasks=명령들
|
||||
htmlManagerServlet.appsTitle=애플리케이션들
|
||||
htmlManagerServlet.appsUndeploy=배치된 것을 제거
|
||||
htmlManagerServlet.appsVersion=버전
|
||||
htmlManagerServlet.configReloadButton=다시 읽기
|
||||
htmlManagerServlet.configSslHostName=TLS 호스트 이름 (선택 사항)
|
||||
htmlManagerServlet.configSslReloadTitle=TLS 설정 파일들을 다시 읽습니다.
|
||||
htmlManagerServlet.configTitle=설정
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=Keep alive 소켓 개수:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=수신된 바이트 크기:
|
||||
htmlManagerServlet.connectorStateBytesSent=전송된 바이트 크기:
|
||||
htmlManagerServlet.connectorStateErrorCount=오류 개수:
|
||||
htmlManagerServlet.connectorStateHint=P: 요청을 파싱 또는 준비, S: 서비스, F: 완료 R: 준비 K: Keepalive
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=최대 처리 시간:
|
||||
htmlManagerServlet.connectorStateMaxThreads=최대 쓰레드 개수:
|
||||
htmlManagerServlet.connectorStateProcessingTime=처리 시간:
|
||||
htmlManagerServlet.connectorStateRequestCount=요청 회수:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=받은 바이트 크기
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=전송된 바이트 크기
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=클라이언트 (실제)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=클라이언트 (Forwarded)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=요청
|
||||
htmlManagerServlet.connectorStateTableTitleStage=단계
|
||||
htmlManagerServlet.connectorStateTableTitleTime=시간
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=가상호스트
|
||||
htmlManagerServlet.connectorStateThreadBusy=현재 사용중인 쓰레드들:
|
||||
htmlManagerServlet.connectorStateThreadCount=현재 쓰레드 개수:
|
||||
htmlManagerServlet.deployButton=배치
|
||||
htmlManagerServlet.deployConfig=XML 설정 파일 경로:
|
||||
htmlManagerServlet.deployServer=서버에 있는 디렉토리 또는 WAR 파일을 배치합니다.
|
||||
htmlManagerServlet.deployTitle=배치
|
||||
htmlManagerServlet.deployUpload=배치할 WAR 파일
|
||||
htmlManagerServlet.deployUploadFail=실패 - 배치관리자에서 업로드 실패, 예외: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=업로드할 WAR 파일을 선택하십시오.
|
||||
htmlManagerServlet.deployUploadInServerXml=실패 - 컨텍스트가 server.xml에 정의되어 있다면, War 파일 [{0}]은(는) 업로드될 수 없습니다.
|
||||
htmlManagerServlet.deployUploadNoFile=실패 - 파일 업로드 실패. 파일이 없습니다.
|
||||
htmlManagerServlet.deployUploadNotWar=실패 - 업로드된 파일 [{0}]은(는) 반드시 .war이어야 합니다.
|
||||
htmlManagerServlet.deployUploadWarExists=실패 - War 파일 [{0}]이(가) 이미 서버에 존재합니다.
|
||||
htmlManagerServlet.deployWar=WAR 또는 디렉토리 경로:
|
||||
htmlManagerServlet.diagnosticsLeak=웹 애플리케이션이 중지되거나, 다시 로드되거나, 또는 배치 제거될 때, 메모리 누수를 유발하는지 여부를 살펴보려 점검합니다.
|
||||
htmlManagerServlet.diagnosticsLeakButton=메모리 누수 찾기
|
||||
htmlManagerServlet.diagnosticsLeakWarning=이 진단 점검은 Full Garbage Collection을 개시할 것입니다. 프로덕션 시스템들에서는 극도의 주의를 기울여 사용하십시오.
|
||||
htmlManagerServlet.diagnosticsSsl=TLS Connector 설정 진단
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=인증서들
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=설정된 TLS 가상 호스트들과 그들 각각의 인증서 체인의 목록
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=Cipher들
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=설정된 TLS 가상 호스트들과 각각을 위한 cipher들의 목록을 표시합니다.
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=신뢰되는 인증서들
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=설정된 TLS 가상 호스트들과 각각을 위한 신뢰되는 인증서들의 목록을 표시합니다.
|
||||
htmlManagerServlet.diagnosticsTitle=시스템 진단
|
||||
htmlManagerServlet.expire.explain=idle 값 ≥
|
||||
htmlManagerServlet.expire.unit=분
|
||||
htmlManagerServlet.findleaksList=다음 웹 애플리케이션들이 중지되었지만 (다시 로드되거나, 배치가 제거되어), 이전 실행 시에 로드되었던 클래스들이 여전히 메모리에 남아 있어서, 메모리 누수를 유발할 수 있습니다. (확인하려면 프로파일러를 사용하십시오):\n\
|
||||
\n
|
||||
htmlManagerServlet.findleaksNone=어떤 웹 애플리케이션도, 중지 시 또는 다시 로드될 때 또는 배치로부터 제거 될 때, 메모리 누수를 유발하지 않은 것 같습니다.
|
||||
htmlManagerServlet.helpHtmlManager=HTML 매니저 도움말
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=매니저 도움말
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=유휴 메모리:
|
||||
htmlManagerServlet.jvmMaxMemory=최대 메모리:
|
||||
htmlManagerServlet.jvmTableTitleInitial=초기
|
||||
htmlManagerServlet.jvmTableTitleMaximum=최대값
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=메모리 풀
|
||||
htmlManagerServlet.jvmTableTitleTotal=전체
|
||||
htmlManagerServlet.jvmTableTitleType=타입
|
||||
htmlManagerServlet.jvmTableTitleUsed=사용된 메모리
|
||||
htmlManagerServlet.jvmTotalMemory=전체 메모리:
|
||||
htmlManagerServlet.list=애플리케이션들의 목록을 표시
|
||||
htmlManagerServlet.manager=매니저
|
||||
htmlManagerServlet.messageLabel=메시지:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=지정 안됨
|
||||
htmlManagerServlet.osAvailableMemory=가용 메모리:
|
||||
htmlManagerServlet.osFreePageFile=유휴 페이지 파일:
|
||||
htmlManagerServlet.osKernelTime=프로세스 커널 타임:
|
||||
htmlManagerServlet.osMemoryLoad=메모리 로드:
|
||||
htmlManagerServlet.osPhysicalMemory=물리적 메모리:
|
||||
htmlManagerServlet.osTotalPageFile=전체 페이지 파일:
|
||||
htmlManagerServlet.osUserTime=프로세스 User Time:
|
||||
htmlManagerServlet.serverHostname=호스트명
|
||||
htmlManagerServlet.serverIPAddress=IP 주소
|
||||
htmlManagerServlet.serverJVMVendor=JVM 벤더
|
||||
htmlManagerServlet.serverJVMVersion=JVM 버전
|
||||
htmlManagerServlet.serverOSArch=운영체제 아키텍처
|
||||
htmlManagerServlet.serverOSName=운영체제 이름
|
||||
htmlManagerServlet.serverOSVersion=운영체제 버전
|
||||
htmlManagerServlet.serverTitle=서버 정보
|
||||
htmlManagerServlet.serverVersion=Tomcat 버전
|
||||
htmlManagerServlet.title=Tomcat 웹 애플리케이션 매니저
|
||||
|
||||
managerServlet.alreadyContext=실패 - 애플리케이션이 이미 경로 [{0}]에 존재합니다.
|
||||
managerServlet.certsNotAvailable=이 Connector로부터, 인증서 정보를 런타임에 구할 수 없습니다.
|
||||
managerServlet.deleteFail=실패 - [{0}]을(를) 삭제할 수 없습니다. 이 파일이 계속해서 존재하면 문제들을 일으킬 수 있습니다.
|
||||
managerServlet.deployFailed=실패 - 컨텍스트 경로 [{0}]에, 애플리케이션을 배치하지 못했습니다.
|
||||
managerServlet.deployed=OK - 컨텍스트 경로 [{0}]에 애플리케이션을 배치했습니다.
|
||||
managerServlet.deployedButNotStarted=실패 - 컨텍스트 경로 [{0}]에 있는 애플리케이션을 배치했으나, 컨텍스트가 시작되지 못했습니다.
|
||||
managerServlet.exception=실패 - 예외 발생 [{0}]
|
||||
managerServlet.findleaksFail=실패 - 잠재 메모리 누수 찾기 실패: 호스트가 StandardHost의 인스턴스가 아닙니다.
|
||||
managerServlet.findleaksList=OK - 다음 애플리케이션들에서 잠재적인 메모리 누수들이 발견되었습니다:
|
||||
managerServlet.findleaksNone=OK - 메모리 누수가 발견 안됨
|
||||
managerServlet.inService=실패 - 애플리케이션 [{0}]이(가) 이미 서비스되고 있습니다.
|
||||
managerServlet.invalidCommand=실패 - 명령 [{0}]을(를) 위해 유효하지 않은 파라미터들이 제공되었습니다.
|
||||
managerServlet.invalidPath=실패 - 유효하지 않은 컨텍스트 경로 [{0}]이(가) 지정되었습니다.
|
||||
managerServlet.listed=OK - 가상 호스트 [{0}]을(를) 위한 애플리케이션들의 목록이 표시되었습니다.
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=실패 - 디렉토리 [{0}]을(를) 생성할 수 없습니다.
|
||||
managerServlet.noCommand=실패 - 명령이 지정되지 않았습니다.
|
||||
managerServlet.noContext=실패 - [{0}](이)라는 이름을 가진 컨텍스트가 없습니다.
|
||||
managerServlet.noGlobal=실패 - 가용한 글로벌 JNDI 리소스들이 없습니다.
|
||||
managerServlet.noManager=실패 - 경로 [{0}]을(를) 위한 매니저가 없습니다.
|
||||
managerServlet.noSelf=실패 - 매니저는 자기 자신을 다시 로드하거나, 중지시키거나, 자신의 배치를 제거할 수 없습니다.
|
||||
managerServlet.noWrapper=컨테이너가 이 서블릿을 위해 setWrapper()를 호출하지 않았습니다.
|
||||
managerServlet.notDeployed=실패 - 컨텍스트 [{0}]이(가) server.xml에 정의되어 있어, 배치를 제거할 수 없습니다.
|
||||
managerServlet.notSslConnector=SSL이 이 connector를 위해 사용 가능 상태가 아닙니다.
|
||||
managerServlet.objectNameFail=실패 - 매니저 서블릿을 위한 객체 이름 [{0}]을(를) 등록할 수 없습니다.
|
||||
managerServlet.postCommand=실패 - GET 요청을 통해 명령 [{0}]을(를) 사용하려 시도했으나, POST 요청이 요구됩니다.
|
||||
managerServlet.reloaded=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 다시 로드했습니다.
|
||||
managerServlet.renameFail=실패 - [{0}]을(를) [{1}](으)로 이름을 변경할 수 없습니다. 이는 이후의 배치 작업들에서 문제들을 일으킬 수 있습니다.
|
||||
managerServlet.resourcesAll=OK - 모든 타입들의 글로벌 리소스들이 목록으로 표시되었습니다.
|
||||
managerServlet.resourcesType=OK - 타입이 [{0}]인 글로벌 리소스들의 목록을 표시했습니다.
|
||||
managerServlet.saveFail=실패 - 설정을 저장하지 못했습니다: [{0}]
|
||||
managerServlet.saved=OK - 서버 설정이 저장되었습니다.
|
||||
managerServlet.savedContext=OK - 컨텍스트 [{0}]의 설정이 저장되었습니다.
|
||||
managerServlet.serverInfo=OK - 서버 정보\n\
|
||||
Tomcat 버전: [{0}]\n\
|
||||
운영체제 이름: [{1}]\n\
|
||||
운영체제 버전: [{2}]\n\
|
||||
운영체제 아키텍처: [{3}]\n\
|
||||
JVM 버전: [{4}]\n\
|
||||
JVM 벤더: [{5}]
|
||||
managerServlet.sessiondefaultmax=세션 비활성화 최대 시간의 기본 값은 [{0}]분입니다.
|
||||
managerServlet.sessions=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 위한 세션 정보
|
||||
managerServlet.sessiontimeout=[{0}]분: [{1}]개의 세션들
|
||||
managerServlet.sessiontimeout.expired=[{0}]분: [{1}]개의 세션들이 만료되었습니다.
|
||||
managerServlet.sessiontimeout.unlimited=무제한 시간: [{0}] 세션들
|
||||
managerServlet.sslConnectorCerts=OK - Connector / 인증서 체인 정보
|
||||
managerServlet.sslConnectorCiphers=OK - Connector / SSL Cipher 정보
|
||||
managerServlet.sslConnectorTrustedCerts=OK - Connector / 신뢰되는 인증서 정보
|
||||
managerServlet.sslReload=OK - [{0}]을(를) 위해 TLS 설정을 다시 로드했습니다.
|
||||
managerServlet.sslReloadAll=OK - 모든 TLS 가상 호스트들을 위한 TLS 설정을 다시 로드했습니다.
|
||||
managerServlet.sslReloadFail=실패 - TLS 설정을 다시 로드하지 못했습니다.
|
||||
managerServlet.startFailed=실패 - 컨텍스트 경로 [{0}]의 애플리케이션이 시작될 수 없었습니다.
|
||||
managerServlet.started=OK - 컨텍스트 경로 [{0}]의 애플리케이션이 시작되었습니다.
|
||||
managerServlet.stopped=OK - 컨텍스트 경로 [{0}]의 애플리케이션을 중지시켰습니다.
|
||||
managerServlet.storeConfig.noMBean=실패 - [{0}]에서 등록된 StoreConfig MBean이 없습니다. 보통 StoreConfigLifecycleListener에 의해 등록이 수행됩니다.
|
||||
managerServlet.threaddump=OK - JVM 쓰레드 덤프
|
||||
managerServlet.trustedCertsNotConfigured=이 가상 호스트를 위한 신뢰되는 인증서들이 설정되어 있지 않습니다.
|
||||
managerServlet.undeployed=OK - 컨텍스트 경로 [{0}]에 배치된 애플리케이션을 제거했습니다.
|
||||
managerServlet.unknownCommand=실패 - 알 수 없는 명령: [{0}]
|
||||
managerServlet.vminfo=OK - VM 정보
|
||||
|
||||
statusServlet.complete=서버의 전체 상태
|
||||
statusServlet.title=서버 상태
|
||||
172
java/org/apache/catalina/manager/LocalStrings_ru.properties
Normal file
172
java/org/apache/catalina/manager/LocalStrings_ru.properties
Normal file
@@ -0,0 +1,172 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=Запущено
|
||||
htmlManagerServlet.appsExpire=Завершить сеансы
|
||||
htmlManagerServlet.appsName=Название
|
||||
htmlManagerServlet.appsPath=Путь
|
||||
htmlManagerServlet.appsReload=Перезагрузить
|
||||
htmlManagerServlet.appsSessions=Сеансы
|
||||
htmlManagerServlet.appsStart=Старт
|
||||
htmlManagerServlet.appsStop=Стоп
|
||||
htmlManagerServlet.appsTasks=Команды
|
||||
htmlManagerServlet.appsTitle=Приложения
|
||||
htmlManagerServlet.appsUndeploy=Удалить
|
||||
htmlManagerServlet.appsVersion=Версия
|
||||
htmlManagerServlet.configReloadButton=Перечитать
|
||||
htmlManagerServlet.configSslHostName=Имя TLS хоста (не обязательно)
|
||||
htmlManagerServlet.configSslReloadTitle=Перечитать конфигурационные файлы TLS
|
||||
htmlManagerServlet.configTitle=Конфигурация
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=Количество всё ещё живых сокетов:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=Байтов получено:
|
||||
htmlManagerServlet.connectorStateBytesSent=Байтов отправлено:
|
||||
htmlManagerServlet.connectorStateErrorCount=Количество ошибок:
|
||||
htmlManagerServlet.connectorStateHint=P: Разбирается и готовится к обработке, S: Сервис, F: Завершение, R: Готов, K: Продолжает существовать
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=Максимальное время обработки запроса:
|
||||
htmlManagerServlet.connectorStateMaxThreads=Максимум потоков:
|
||||
htmlManagerServlet.connectorStateProcessingTime=Время обработки:
|
||||
htmlManagerServlet.connectorStateRequestCount=Количество запросов:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=Б Получено
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=Б Отправлено
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=Клиент (Настоящий)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=Клиент (Переданный)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=Запрос
|
||||
htmlManagerServlet.connectorStateTableTitleStage=Этап
|
||||
htmlManagerServlet.connectorStateTableTitleTime=Время
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=ВХост
|
||||
htmlManagerServlet.connectorStateThreadBusy=Нынешнее число занятых потоков:
|
||||
htmlManagerServlet.connectorStateThreadCount=Нынешнее число потоков:
|
||||
htmlManagerServlet.deployButton=Развернуть
|
||||
htmlManagerServlet.deployConfig=Путь XML файла конфигурации контекста:
|
||||
htmlManagerServlet.deployPath=Путь:
|
||||
htmlManagerServlet.deployServer=Развернуть серверный WAR файл
|
||||
htmlManagerServlet.deployTitle=Развернуть
|
||||
htmlManagerServlet.deployUpload=WAR файл для развёртывания
|
||||
htmlManagerServlet.deployUploadFail=ОШИБКА - Ошибка при развёртывании: [{0}]
|
||||
htmlManagerServlet.deployUploadFile=Выберите WAR файл для загрузки
|
||||
htmlManagerServlet.deployUploadInServerXml=ОШИБКА - War файл [{0}] не может быть загружен, eсли он уже задан в файле server.xml
|
||||
htmlManagerServlet.deployUploadNoFile=ОШИБКА - Ошибка при загрузке файла. Файла нет
|
||||
htmlManagerServlet.deployUploadNotWar=ОШИБКА - Загружаемый файл должен быть с расширением .war
|
||||
htmlManagerServlet.deployUploadWarExists=ОШИБКА - War файл [{0}] уже существует на сервере
|
||||
htmlManagerServlet.deployWar=WAR или путь до директории:
|
||||
htmlManagerServlet.diagnosticsLeak=Проверяет, произошла ли утечка памяти после остановки, перезагрузки или удаления веб-приложений
|
||||
htmlManagerServlet.diagnosticsLeakButton=Найти утечки памяти
|
||||
htmlManagerServlet.diagnosticsLeakWarning=Данная диагностика запускает сборку мусора. Будьте осторожны при использовании её на продуктивных системах.
|
||||
htmlManagerServlet.diagnosticsSsl=Диагностика конфигурации TLS для коннекторов
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=Сертификаты безопасности
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=Список виртуальных TLS хостов и их сертификатов безопасности
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=Шифры
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=Список виртуальных TLS хостов и их шифры
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Доверенные сертификаты
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=Список виртуальных TLS хостов и их доверенных сертификатов безопасности
|
||||
htmlManagerServlet.diagnosticsTitle=Диагностика
|
||||
htmlManagerServlet.expire.explain=с неактивностью ≥
|
||||
htmlManagerServlet.expire.unit=минут
|
||||
htmlManagerServlet.findleaksList=Следующие веб-приложения были остановлены (перезагружены, удалены),\n\
|
||||
но их классы с предыдущих запусков до сих пор присутствуют в памяти\n\
|
||||
(используйте программу-профайлер, чтобы подтвердить наличие проблемы):\n
|
||||
htmlManagerServlet.findleaksNone=Кажется, что веб-приложения не вызвали утечку памяти при остановке, перезагрузке или удалении.
|
||||
htmlManagerServlet.helpHtmlManager=Справка для пользователей приложения
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=Справка по API приложения
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=Свободная память:
|
||||
htmlManagerServlet.jvmMaxMemory=Максимум памяти:
|
||||
htmlManagerServlet.jvmTableTitleInitial=Изначально
|
||||
htmlManagerServlet.jvmTableTitleMaximum=Максимум
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=Области памяти
|
||||
htmlManagerServlet.jvmTableTitleTotal=Всего
|
||||
htmlManagerServlet.jvmTableTitleType=Тип
|
||||
htmlManagerServlet.jvmTableTitleUsed=Используется
|
||||
htmlManagerServlet.jvmTotalMemory=Вся память:
|
||||
htmlManagerServlet.list=Список приложений
|
||||
htmlManagerServlet.manager=Менеджер
|
||||
htmlManagerServlet.messageLabel=Сообщение:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=Не указано
|
||||
htmlManagerServlet.osAvailableMemory=Доступная память:
|
||||
htmlManagerServlet.osFreePageFile=Свободные файловые страницы:
|
||||
htmlManagerServlet.osKernelTime=Время обработки процесса ядром:
|
||||
htmlManagerServlet.osMemoryLoad=Памяти загружено:
|
||||
htmlManagerServlet.osPhysicalMemory=Физическая память:
|
||||
htmlManagerServlet.osTotalPageFile=Всего файловых страниц:
|
||||
htmlManagerServlet.osUserTime=Время обработки пользователя:
|
||||
htmlManagerServlet.serverHostname=Имя хоста
|
||||
htmlManagerServlet.serverIPAddress=IP Адрес
|
||||
htmlManagerServlet.serverJVMVendor=Поставщик JVM
|
||||
htmlManagerServlet.serverJVMVersion=Версия JVM
|
||||
htmlManagerServlet.serverOSArch=Архитектура ОС
|
||||
htmlManagerServlet.serverOSName=ОС
|
||||
htmlManagerServlet.serverOSVersion=Версия ОС
|
||||
htmlManagerServlet.serverTitle=Информация о сервере
|
||||
htmlManagerServlet.serverVersion=Версия Tomcat
|
||||
htmlManagerServlet.title=Управление веб-приложениями Tomcat
|
||||
|
||||
managerServlet.alreadyContext=ОШИБКА - Приложение уже существует на пути [{0}]
|
||||
managerServlet.certsNotAvailable=Информация о сертификате не может быть получена во время работы
|
||||
managerServlet.deleteFail=ОШИБКА - Не удалось удалить [{0}].
|
||||
managerServlet.deployFailed=ОШИБКА - Не удалось развернуть приложение на контекстом пути [{0}]
|
||||
managerServlet.deployed=OK - Приложение успешно развёрнуто в контекстном пути [{0}]
|
||||
managerServlet.deployedButNotStarted=ОШИБКА - Приложение было развёрнуто в контекстном пути [{0}], но не стартовало
|
||||
managerServlet.exception=ОШИБКА - Встретилось исключение [{0}]
|
||||
managerServlet.findleaksFail=ОШИБКА - Не удалось найти утечки памяти: Host not instance of StandardHost
|
||||
managerServlet.findleaksList=OK - Найдены потенциальные утечки памяти в следующих приложениях:
|
||||
managerServlet.findleaksNone=OK - Не найдено утечек памяти
|
||||
managerServlet.inService=ОШИБКА - Приложение [{0}] уже обслуживается
|
||||
managerServlet.invalidCommand=ОШИБКА - Недопустимые параметры, предоставленные для команды [{0}]
|
||||
managerServlet.invalidPath=ОШИБКА - Указан недопустимый контекстный путь [{0}]
|
||||
managerServlet.listed=OK - Список приложений для виртуального хоста [{0}]
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=ОШИБКА - Не удалось создать директорию [{0}]
|
||||
managerServlet.noCommand=ОШИБКА - Команда не указана.
|
||||
managerServlet.noContext=ОШИБКА - Контекст не существует [{0}]
|
||||
managerServlet.noGlobal=ОШИБКА - Глобальные ресурсы JNDI недоступны
|
||||
managerServlet.noManager=ОШИБКА - Отсутствует менеджер для пути [{0}]
|
||||
managerServlet.noSelf=ОШИБКА - Менеджер не может перезагрузить, развернуть, остановить или удалить себя
|
||||
managerServlet.noWrapper=Контейнер не вызвал setWrapper() для этого сервлета
|
||||
managerServlet.notDeployed=ОШИБКА - [{0}] определен в файле server.xml и не может быть развёрнут
|
||||
managerServlet.notSslConnector=Протокол SSL/TLS для этого коннектора не включен
|
||||
managerServlet.objectNameFail=ОШИБКА - Не удалось зарегистрировать имя объекта [{0}] для Manager Servlet
|
||||
managerServlet.postCommand=ОШИБКА - Попытка использовать команду [{0}] через запрос GET но требуется POST
|
||||
managerServlet.reloaded=OK - Приложение по пути контекста [{0}] было перезагружено
|
||||
managerServlet.renameFail=ОШИБКА - Невозможно переименовать [{0}] в [{1}]. Это может вызвать проблемы для будущих развертываний.
|
||||
managerServlet.resourcesAll=OK - Перечислены глобальные ресурсы всех видов
|
||||
managerServlet.resourcesType=OK - Перечислены глобальные ресурсы вида [{0}]
|
||||
managerServlet.saveFail=ОШИБКА - Не удалось сохранить настройки: [{0}]
|
||||
managerServlet.saved=OK - Конфигурация сервера сохранена
|
||||
managerServlet.savedContext=OK - Контекстные настройки для [{0}] сохранены
|
||||
managerServlet.sessiondefaultmax=Стандартный максимальный период неактивного сеанса: [{0}] минут
|
||||
managerServlet.sessions=OK - Информация о сеансах приложения по пути контекста [{0}]
|
||||
managerServlet.sessiontimeout=Неактивные [{0}] минут: [{1}] сеанс(ов)
|
||||
managerServlet.sessiontimeout.expired=Неактивные [{0}] минут: [{1}] сеанс(ов) были завершены
|
||||
managerServlet.sessiontimeout.unlimited=Неограниченное время: [{0}] сеансов
|
||||
managerServlet.sslConnectorCerts=OK - Информация о цепочке сертификатов
|
||||
managerServlet.sslConnectorCiphers=OK - Информация о шифровании SSL
|
||||
managerServlet.sslConnectorTrustedCerts=OK - Информация о доверенном сертификате безопасности
|
||||
managerServlet.sslReload=OK - Перезагрузка конфигурации TLS для [{0}]
|
||||
managerServlet.sslReloadAll=OK - Перезагрузка конфигурации TLS для всех виртуальных хостов TLS
|
||||
managerServlet.sslReloadFail=ОШИБКА - Не удалось перезагрузить конфигурацию TLS
|
||||
managerServlet.startFailed=ОШИБКА - Application at context path [{0}] could not be started
|
||||
managerServlet.started=OK - Запущено приложение по пути контекста [{0}]
|
||||
managerServlet.stopped=OK - Остановлено приложение по пути контекста [{0}]
|
||||
managerServlet.storeConfig.noMBean=ОШИБКА - Нет StoreConfig MBean, зарегистрированный на [{0}]
|
||||
managerServlet.threaddump=OK - JVM thread dump
|
||||
managerServlet.trustedCertsNotConfigured=Для этого виртуального хоста не настроены доверенные сертификаты безопасности
|
||||
managerServlet.undeployed=OK - Удалено приложение по пути контекста [{0}]
|
||||
managerServlet.unknownCommand=ОШИБКА - Неизвестная команда [{0}]
|
||||
managerServlet.vminfo=OK - VM инфо
|
||||
|
||||
statusServlet.complete=Подробный отчёт о состоянии
|
||||
statusServlet.title=Состояние сервера
|
||||
176
java/org/apache/catalina/manager/LocalStrings_zh_CN.properties
Normal file
176
java/org/apache/catalina/manager/LocalStrings_zh_CN.properties
Normal file
@@ -0,0 +1,176 @@
|
||||
# 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.
|
||||
|
||||
htmlManagerServlet.appsAvailable=运行中
|
||||
htmlManagerServlet.appsExpire=过期会话
|
||||
htmlManagerServlet.appsName=显示.名称
|
||||
htmlManagerServlet.appsPath=路径
|
||||
htmlManagerServlet.appsReload=重新加载
|
||||
htmlManagerServlet.appsSessions=会话
|
||||
htmlManagerServlet.appsStart=启动
|
||||
htmlManagerServlet.appsStop=停止
|
||||
htmlManagerServlet.appsTasks=命令
|
||||
htmlManagerServlet.appsTitle=应用程序
|
||||
htmlManagerServlet.appsUndeploy=卸载
|
||||
htmlManagerServlet.appsVersion=版本号
|
||||
htmlManagerServlet.configReloadButton=重复读
|
||||
htmlManagerServlet.configSslHostName=TLS 主机名字(可选)
|
||||
htmlManagerServlet.configSslReloadTitle=重新读取 TLS 配置文件
|
||||
htmlManagerServlet.configTitle=配置
|
||||
htmlManagerServlet.connectorStateAliveSocketCount=存活套接字总数:
|
||||
htmlManagerServlet.connectorStateBytesRecieved=收到字节:
|
||||
htmlManagerServlet.connectorStateBytesSent=发送.字节:
|
||||
htmlManagerServlet.connectorStateErrorCount=错误数:
|
||||
htmlManagerServlet.connectorStateHint=P:解析和准备request S:服务 F:结束 R:就绪 K:存活
|
||||
htmlManagerServlet.connectorStateMaxProcessingTime=最大处理时间:
|
||||
htmlManagerServlet.connectorStateMaxThreads=最大线程:
|
||||
htmlManagerServlet.connectorStateProcessingTime=处理时间:
|
||||
htmlManagerServlet.connectorStateRequestCount=请求总数:
|
||||
htmlManagerServlet.connectorStateTableTitleBRecv=接收字节
|
||||
htmlManagerServlet.connectorStateTableTitleBSent=发送字节:
|
||||
htmlManagerServlet.connectorStateTableTitleClientAct=客户端(实际)
|
||||
htmlManagerServlet.connectorStateTableTitleClientForw=客户端(转发)
|
||||
htmlManagerServlet.connectorStateTableTitleRequest=请求
|
||||
htmlManagerServlet.connectorStateTableTitleStage=阶段
|
||||
htmlManagerServlet.connectorStateTableTitleTime=时间
|
||||
htmlManagerServlet.connectorStateTableTitleVHost=虚拟主机
|
||||
htmlManagerServlet.connectorStateThreadBusy=当前线程繁忙:
|
||||
htmlManagerServlet.connectorStateThreadCount=当前线程数:
|
||||
htmlManagerServlet.deployButton=:)部署
|
||||
htmlManagerServlet.deployConfig=XML配置文件路径:
|
||||
htmlManagerServlet.deployServer=服务器上.部署的目录或WAR文件
|
||||
htmlManagerServlet.deployTitle=部署
|
||||
htmlManagerServlet.deployUpload=要部署的WAR文件
|
||||
htmlManagerServlet.deployUploadFail=失败 - 部署上传失败,异常信息:[{0}]
|
||||
htmlManagerServlet.deployUploadFile=选择要上传的WAR文件
|
||||
htmlManagerServlet.deployUploadInServerXml=失败 - 如果context是定义在server.xml中,War文件[{0}]无法上传
|
||||
htmlManagerServlet.deployUploadNoFile=失败 - 文件上传失败,没有文件
|
||||
htmlManagerServlet.deployUploadNotWar=失败 - 上传的文件[{0}]必须是一个.war文件
|
||||
htmlManagerServlet.deployUploadWarExists=失败 - War文件 [{0}] 已存在于服务器上
|
||||
htmlManagerServlet.deployWar=WAR文件或文件夹路径:
|
||||
htmlManagerServlet.diagnosticsLeak=检查Web应用程序是否在停止、重新加载或取消部署时导致内存泄漏
|
||||
htmlManagerServlet.diagnosticsLeakButton=发现泄漏
|
||||
htmlManagerServlet.diagnosticsLeakWarning=诊断检查将触发完整的垃圾收集,在生产系统中使用时要格外小心。
|
||||
htmlManagerServlet.diagnosticsSsl=TLS连接器配置诊断
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsButton=证书
|
||||
htmlManagerServlet.diagnosticsSslConnectorCertsText=列出已配置的TLS虚拟主机以及各自的证书链
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherButton=密.码
|
||||
htmlManagerServlet.diagnosticsSslConnectorCipherText=列出每个配置好的TLS虚拟主机和密码。
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=认证证书
|
||||
htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=列出每个配置好的TLS虚拟主机和认证证书。
|
||||
htmlManagerServlet.diagnosticsTitle=诊断
|
||||
htmlManagerServlet.expire.explain=闲置 ≥
|
||||
htmlManagerServlet.expire.unit=分钟
|
||||
htmlManagerServlet.findleaksList=以下web应用程序已停止(重新加载、卸载),但是它们的类仍然加载在内存中,因此导致了内存泄漏(使用分析器确认):
|
||||
htmlManagerServlet.findleaksNone=似乎没有任何Web应用程序在停止、重新加载或取消部署时触发内存泄漏。
|
||||
htmlManagerServlet.helpHtmlManager=HTML管理器帮助
|
||||
htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
|
||||
htmlManagerServlet.helpManager=管理者帮助
|
||||
htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
|
||||
htmlManagerServlet.jvmFreeMemory=剩余内存:
|
||||
htmlManagerServlet.jvmMaxMemory=最大内存
|
||||
htmlManagerServlet.jvmTableTitleInitial=初始化
|
||||
htmlManagerServlet.jvmTableTitleMaximum=最大.值
|
||||
htmlManagerServlet.jvmTableTitleMemoryPool=内存.池
|
||||
htmlManagerServlet.jvmTableTitleTotal=总共
|
||||
htmlManagerServlet.jvmTableTitleType=类型
|
||||
htmlManagerServlet.jvmTableTitleUsed=已用
|
||||
htmlManagerServlet.jvmTotalMemory=总内存
|
||||
htmlManagerServlet.list=应用程序列表
|
||||
htmlManagerServlet.manager=管理器
|
||||
htmlManagerServlet.messageLabel=消息:
|
||||
htmlManagerServlet.noManager=-
|
||||
htmlManagerServlet.noVersion=未指定
|
||||
htmlManagerServlet.osAvailableMemory=可用内存:
|
||||
htmlManagerServlet.osFreePageFile=可用页文件:
|
||||
htmlManagerServlet.osKernelTime=内核处理时间:
|
||||
htmlManagerServlet.osMemoryLoad=加载内存:
|
||||
htmlManagerServlet.osPhysicalMemory=物理内存
|
||||
htmlManagerServlet.osTotalPageFile=最大页文件:
|
||||
htmlManagerServlet.osUserTime=用户态处理实际:
|
||||
htmlManagerServlet.serverHostname=主机名
|
||||
htmlManagerServlet.serverIPAddress=IP地址
|
||||
htmlManagerServlet.serverJVMVendor=JVM提供商
|
||||
htmlManagerServlet.serverJVMVersion=JVM.版本
|
||||
htmlManagerServlet.serverOSArch=操作系统架构
|
||||
htmlManagerServlet.serverOSName=OS.名称
|
||||
htmlManagerServlet.serverOSVersion=操作系统版本
|
||||
htmlManagerServlet.serverTitle=服务器信息
|
||||
htmlManagerServlet.serverVersion=Tomcat.版本
|
||||
htmlManagerServlet.title=Tomcat Web应用程序管理者
|
||||
|
||||
managerServlet.alreadyContext=失败 - 应用程序已存在于路径 [{0}]
|
||||
managerServlet.certsNotAvailable=在运行期,无法从连接器中获取认证信息
|
||||
managerServlet.deleteFail=失败 - 不能删除[{0}]。这个文件一直存在会出现问题。
|
||||
managerServlet.deployFailed=FAIL - 在上下文路径[{0}]下部署应用失败
|
||||
managerServlet.deployed=OK - 以应用path [{0}] 部署应用
|
||||
managerServlet.deployedButNotStarted=失败 - 在上下文[{0}]下部署应用程序,但是上下文启动失败。
|
||||
managerServlet.exception=失败 - 发生异常[{0}]
|
||||
managerServlet.findleaksFail=失败 - 查找泄漏失败:主机非StandardHost示例
|
||||
managerServlet.findleaksList=OK - 在以下应用程序中发现潜在的内存泄漏
|
||||
managerServlet.findleaksNone=OK - 没有发现内存泄漏
|
||||
managerServlet.inService=失败 - 应用程序[{0}]已服务
|
||||
managerServlet.invalidCommand=失败 - 无效参数,命令[{0}]
|
||||
managerServlet.invalidPath=失败 - 指定了无效到上下文路径[{0}]
|
||||
managerServlet.listed=OK - 虚拟主机[{0}]下的应用程序列表
|
||||
managerServlet.listitem={0}:{1}:{2}:{3}
|
||||
managerServlet.mkdirFail=失败 - 无法创建目录 [{0}]
|
||||
managerServlet.noCommand=失败 - 未指定命令
|
||||
managerServlet.noContext=失败 - 上下文环境[{0}]不存在
|
||||
managerServlet.noGlobal=失败 - 没有可用的全局 JNDI 资源
|
||||
managerServlet.noManager=失败 - 路径[{0}]下无管理器存在
|
||||
managerServlet.noSelf=失败 - 管理器不能重新加载、卸载、停止或者卸载它自身
|
||||
managerServlet.noWrapper=容器未为当前servlet调用setWrapper()
|
||||
managerServlet.notDeployed=失败 - 上下文[{0}]定义在server.xml中且可能未卸载
|
||||
managerServlet.notSslConnector=不允许SSL连接
|
||||
managerServlet.objectNameFail=FAIL - 不能将为Manager Servlet 注册 object name [{0}]
|
||||
managerServlet.postCommand=失败 - 尝试通过GET请求使用命令[{0}],但需要POST
|
||||
managerServlet.reloaded=OK - 上下文路径[{0}]重新加载应用程序
|
||||
managerServlet.renameFail=失败 - 无法重命名[{0}]为[{1}],这可能这未来部署时出现问题。
|
||||
managerServlet.resourcesAll=OK - 列出所有类型的全部资源
|
||||
managerServlet.resourcesType=OK - [{0}]类型全局资源列入清单
|
||||
managerServlet.saveFail=失败 - 配置保存失败:[{0}]
|
||||
managerServlet.saved=OK - 服务器配置已保存
|
||||
managerServlet.savedContext=OK - 上下文[{0}]配置已保存
|
||||
managerServlet.serverInfo=OK - 服务器信息\n\
|
||||
Tomcat版本: [{0}]\n\
|
||||
操作系统名称: [{1}]\n\
|
||||
操作系统版本: [{2}]\n\
|
||||
操作系统架构: [{3}]\n\
|
||||
JVM版本: [{4}]\n\
|
||||
JVM提供商: [{5}]
|
||||
managerServlet.sessiondefaultmax=最大会话时间失活间隔是[{0}]分钟
|
||||
managerServlet.sessions=OK - 上下文路径[{0}]的会话信息
|
||||
managerServlet.sessiontimeout=失活[{0}]分钟:[{1}]会话
|
||||
managerServlet.sessiontimeout.expired=失活[{0}]分钟:[{1}]会话过期
|
||||
managerServlet.sessiontimeout.unlimited=无限制到时间:[{0}]会话
|
||||
managerServlet.sslConnectorCerts=OK - 连接器/认证链信息
|
||||
managerServlet.sslConnectorCiphers=OK - Connector/SSL 密码.信息
|
||||
managerServlet.sslConnectorTrustedCerts=OK - 连接器/认证证书信息
|
||||
managerServlet.sslReload=OK - 为[{0}]重新加载TLS配置
|
||||
managerServlet.sslReloadAll=OK - 未所有TLS虚拟主机重新加载TLS配置
|
||||
managerServlet.sslReloadFail=FAIL - 重新加载TLS配制失败
|
||||
managerServlet.startFailed=失败 - 上下文路径[{0}]下,应用程序无法启动
|
||||
managerServlet.started=OK - 在上下文路径[{0}]下启动应用程序
|
||||
managerServlet.stopped=OK - 上下文路径[{0}]下停止应用程序
|
||||
managerServlet.storeConfig.noMBean=失败 - [{0}]未发现注册的StoreConfig MBean,注册一般是由StoreConfigLifecycleListener执行的。
|
||||
managerServlet.threaddump=OK - JVM线程转储
|
||||
managerServlet.trustedCertsNotConfigured=没有为此虚拟主机配置受信任的证书
|
||||
managerServlet.undeployed=OK - 未部署的应用位于上下文路径[{0}]
|
||||
managerServlet.unknownCommand=FAIL - 未知命令 [{0}]
|
||||
managerServlet.vminfo=OK - VM信息
|
||||
|
||||
statusServlet.complete=完整的服务器状态
|
||||
statusServlet.title=服务器状态
|
||||
1883
java/org/apache/catalina/manager/ManagerServlet.java
Normal file
1883
java/org/apache/catalina/manager/ManagerServlet.java
Normal file
File diff suppressed because it is too large
Load Diff
407
java/org/apache/catalina/manager/StatusManagerServlet.java
Normal file
407
java/org/apache/catalina/manager/StatusManagerServlet.java
Normal file
@@ -0,0 +1,407 @@
|
||||
/*
|
||||
* 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.catalina.manager;
|
||||
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.MBeanServerNotification;
|
||||
import javax.management.Notification;
|
||||
import javax.management.NotificationListener;
|
||||
import javax.management.ObjectInstance;
|
||||
import javax.management.ObjectName;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.catalina.util.ServerInfo;
|
||||
import org.apache.tomcat.util.modeler.Registry;
|
||||
import org.apache.tomcat.util.res.StringManager;
|
||||
|
||||
/**
|
||||
* This servlet will display a complete status of the HTTP/1.1 connector.
|
||||
*
|
||||
* @author Remy Maucherat
|
||||
*/
|
||||
public class StatusManagerServlet
|
||||
extends HttpServlet implements NotificationListener {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// ----------------------------------------------------- Instance Variables
|
||||
/**
|
||||
* MBean server.
|
||||
*/
|
||||
protected MBeanServer mBeanServer = null;
|
||||
|
||||
|
||||
/**
|
||||
* Vector of protocol handlers object names.
|
||||
*/
|
||||
protected final Vector<ObjectName> protocolHandlers = new Vector<>();
|
||||
|
||||
|
||||
/**
|
||||
* Vector of thread pools object names.
|
||||
*/
|
||||
protected final Vector<ObjectName> threadPools = new Vector<>();
|
||||
|
||||
|
||||
/**
|
||||
* Vector of request processors object names.
|
||||
*/
|
||||
protected final Vector<ObjectName> requestProcessors = new Vector<>();
|
||||
|
||||
|
||||
/**
|
||||
* Vector of global request processors object names.
|
||||
*/
|
||||
protected final Vector<ObjectName> globalRequestProcessors = new Vector<>();
|
||||
|
||||
|
||||
/**
|
||||
* The string manager for this package.
|
||||
*/
|
||||
protected static final StringManager sm =
|
||||
StringManager.getManager(Constants.Package);
|
||||
|
||||
|
||||
// --------------------------------------------------------- Public Methods
|
||||
|
||||
|
||||
/**
|
||||
* Initialize this servlet.
|
||||
*/
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
|
||||
// Retrieve the MBean server
|
||||
mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
|
||||
|
||||
try {
|
||||
|
||||
// Query protocol handlers
|
||||
String onStr = "*:type=ProtocolHandler,*";
|
||||
ObjectName objectName = new ObjectName(onStr);
|
||||
Set<ObjectInstance> set = mBeanServer.queryMBeans(objectName, null);
|
||||
Iterator<ObjectInstance> iterator = set.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ObjectInstance oi = iterator.next();
|
||||
protocolHandlers.addElement(oi.getObjectName());
|
||||
}
|
||||
|
||||
// Query Thread Pools
|
||||
onStr = "*:type=ThreadPool,*";
|
||||
objectName = new ObjectName(onStr);
|
||||
set = mBeanServer.queryMBeans(objectName, null);
|
||||
onStr = "*:type=ThreadPool,*,subType=SocketProperties";
|
||||
objectName = new ObjectName(onStr);
|
||||
Set<ObjectInstance> set2 = mBeanServer.queryMBeans(objectName, null);
|
||||
iterator = set.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ObjectInstance oi = iterator.next();
|
||||
if (!set2.contains(oi)) {
|
||||
threadPools.addElement(oi.getObjectName());
|
||||
}
|
||||
}
|
||||
|
||||
// Query Global Request Processors
|
||||
onStr = "*:type=GlobalRequestProcessor,*";
|
||||
objectName = new ObjectName(onStr);
|
||||
set = mBeanServer.queryMBeans(objectName, null);
|
||||
iterator = set.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ObjectInstance oi = iterator.next();
|
||||
globalRequestProcessors.addElement(oi.getObjectName());
|
||||
}
|
||||
|
||||
// Query Request Processors
|
||||
onStr = "*:type=RequestProcessor,*";
|
||||
objectName = new ObjectName(onStr);
|
||||
set = mBeanServer.queryMBeans(objectName, null);
|
||||
iterator = set.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
ObjectInstance oi = iterator.next();
|
||||
requestProcessors.addElement(oi.getObjectName());
|
||||
}
|
||||
|
||||
// Register with MBean server
|
||||
onStr = "JMImplementation:type=MBeanServerDelegate";
|
||||
objectName = new ObjectName(onStr);
|
||||
mBeanServer.addNotificationListener(objectName, this, null, null);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Finalize this servlet.
|
||||
*/
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
// Unregister with MBean server
|
||||
String onStr = "JMImplementation:type=MBeanServerDelegate";
|
||||
ObjectName objectName;
|
||||
try {
|
||||
objectName = new ObjectName(onStr);
|
||||
mBeanServer.removeNotificationListener(objectName, this, null, null);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a GET request for the specified resource.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are creating
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet-specified error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
|
||||
StringManager smClient = StringManager.getManager(
|
||||
Constants.Package, request.getLocales());
|
||||
|
||||
// mode is flag for HTML or XML output
|
||||
int mode = 0;
|
||||
// if ?XML=true, set the mode to XML
|
||||
if (request.getParameter("XML") != null
|
||||
&& request.getParameter("XML").equals("true")) {
|
||||
mode = 1;
|
||||
}
|
||||
StatusTransformer.setContentType(response, mode);
|
||||
|
||||
PrintWriter writer = response.getWriter();
|
||||
|
||||
boolean completeStatus = false;
|
||||
if ((request.getPathInfo() != null)
|
||||
&& (request.getPathInfo().equals("/all"))) {
|
||||
completeStatus = true;
|
||||
}
|
||||
// use StatusTransformer to output status
|
||||
Object[] args = new Object[1];
|
||||
args[0] = request.getContextPath();
|
||||
StatusTransformer.writeHeader(writer,args,mode);
|
||||
|
||||
// Body Header Section
|
||||
args = new Object[2];
|
||||
args[0] = request.getContextPath();
|
||||
if (completeStatus) {
|
||||
args[1] = smClient.getString("statusServlet.complete");
|
||||
} else {
|
||||
args[1] = smClient.getString("statusServlet.title");
|
||||
}
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeBody(writer,args,mode);
|
||||
|
||||
// Manager Section
|
||||
args = new Object[9];
|
||||
args[0] = smClient.getString("htmlManagerServlet.manager");
|
||||
args[1] = response.encodeURL(request.getContextPath() + "/html/list");
|
||||
args[2] = smClient.getString("htmlManagerServlet.list");
|
||||
args[3] = // External link
|
||||
(request.getContextPath() + "/" +
|
||||
smClient.getString("htmlManagerServlet.helpHtmlManagerFile"));
|
||||
args[4] = smClient.getString("htmlManagerServlet.helpHtmlManager");
|
||||
args[5] = // External link
|
||||
(request.getContextPath() + "/" +
|
||||
smClient.getString("htmlManagerServlet.helpManagerFile"));
|
||||
args[6] = smClient.getString("htmlManagerServlet.helpManager");
|
||||
if (completeStatus) {
|
||||
args[7] = response.encodeURL
|
||||
(request.getContextPath() + "/status");
|
||||
args[8] = smClient.getString("statusServlet.title");
|
||||
} else {
|
||||
args[7] = response.encodeURL
|
||||
(request.getContextPath() + "/status/all");
|
||||
args[8] = smClient.getString("statusServlet.complete");
|
||||
}
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeManager(writer,args,mode);
|
||||
|
||||
// Server Header Section
|
||||
args = new Object[9];
|
||||
args[0] = smClient.getString("htmlManagerServlet.serverTitle");
|
||||
args[1] = smClient.getString("htmlManagerServlet.serverVersion");
|
||||
args[2] = smClient.getString("htmlManagerServlet.serverJVMVersion");
|
||||
args[3] = smClient.getString("htmlManagerServlet.serverJVMVendor");
|
||||
args[4] = smClient.getString("htmlManagerServlet.serverOSName");
|
||||
args[5] = smClient.getString("htmlManagerServlet.serverOSVersion");
|
||||
args[6] = smClient.getString("htmlManagerServlet.serverOSArch");
|
||||
args[7] = smClient.getString("htmlManagerServlet.serverHostname");
|
||||
args[8] = smClient.getString("htmlManagerServlet.serverIPAddress");
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writePageHeading(writer,args,mode);
|
||||
|
||||
// Server Row Section
|
||||
args = new Object[8];
|
||||
args[0] = ServerInfo.getServerInfo();
|
||||
args[1] = System.getProperty("java.runtime.version");
|
||||
args[2] = System.getProperty("java.vm.vendor");
|
||||
args[3] = System.getProperty("os.name");
|
||||
args[4] = System.getProperty("os.version");
|
||||
args[5] = System.getProperty("os.arch");
|
||||
try {
|
||||
InetAddress address = InetAddress.getLocalHost();
|
||||
args[6] = address.getHostName();
|
||||
args[7] = address.getHostAddress();
|
||||
} catch (UnknownHostException e) {
|
||||
args[6] = "-";
|
||||
args[7] = "-";
|
||||
}
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeServerInfo(writer, args, mode);
|
||||
|
||||
try {
|
||||
|
||||
// Display operating system statistics using APR if available
|
||||
args = new Object[7];
|
||||
args[0] = smClient.getString("htmlManagerServlet.osPhysicalMemory");
|
||||
args[1] = smClient.getString("htmlManagerServlet.osAvailableMemory");
|
||||
args[2] = smClient.getString("htmlManagerServlet.osTotalPageFile");
|
||||
args[3] = smClient.getString("htmlManagerServlet.osFreePageFile");
|
||||
args[4] = smClient.getString("htmlManagerServlet.osMemoryLoad");
|
||||
args[5] = smClient.getString("htmlManagerServlet.osKernelTime");
|
||||
args[6] = smClient.getString("htmlManagerServlet.osUserTime");
|
||||
StatusTransformer.writeOSState(writer, mode, args);
|
||||
|
||||
// Display virtual machine statistics
|
||||
args = new Object[9];
|
||||
args[0] = smClient.getString("htmlManagerServlet.jvmFreeMemory");
|
||||
args[1] = smClient.getString("htmlManagerServlet.jvmTotalMemory");
|
||||
args[2] = smClient.getString("htmlManagerServlet.jvmMaxMemory");
|
||||
args[3] = smClient.getString("htmlManagerServlet.jvmTableTitleMemoryPool");
|
||||
args[4] = smClient.getString("htmlManagerServlet.jvmTableTitleType");
|
||||
args[5] = smClient.getString("htmlManagerServlet.jvmTableTitleInitial");
|
||||
args[6] = smClient.getString("htmlManagerServlet.jvmTableTitleTotal");
|
||||
args[7] = smClient.getString("htmlManagerServlet.jvmTableTitleMaximum");
|
||||
args[8] = smClient.getString("htmlManagerServlet.jvmTableTitleUsed");
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeVMState(writer,mode, args);
|
||||
|
||||
Enumeration<ObjectName> enumeration = threadPools.elements();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
ObjectName objectName = enumeration.nextElement();
|
||||
String name = objectName.getKeyProperty("name");
|
||||
args = new Object[19];
|
||||
args[0] = smClient.getString("htmlManagerServlet.connectorStateMaxThreads");
|
||||
args[1] = smClient.getString("htmlManagerServlet.connectorStateThreadCount");
|
||||
args[2] = smClient.getString("htmlManagerServlet.connectorStateThreadBusy");
|
||||
args[3] = smClient.getString("htmlManagerServlet.connectorStateAliveSocketCount");
|
||||
args[4] = smClient.getString("htmlManagerServlet.connectorStateMaxProcessingTime");
|
||||
args[5] = smClient.getString("htmlManagerServlet.connectorStateProcessingTime");
|
||||
args[6] = smClient.getString("htmlManagerServlet.connectorStateRequestCount");
|
||||
args[7] = smClient.getString("htmlManagerServlet.connectorStateErrorCount");
|
||||
args[8] = smClient.getString("htmlManagerServlet.connectorStateBytesRecieved");
|
||||
args[9] = smClient.getString("htmlManagerServlet.connectorStateBytesSent");
|
||||
args[10] = smClient.getString("htmlManagerServlet.connectorStateTableTitleStage");
|
||||
args[11] = smClient.getString("htmlManagerServlet.connectorStateTableTitleTime");
|
||||
args[12] = smClient.getString("htmlManagerServlet.connectorStateTableTitleBSent");
|
||||
args[13] = smClient.getString("htmlManagerServlet.connectorStateTableTitleBRecv");
|
||||
args[14] = smClient.getString("htmlManagerServlet.connectorStateTableTitleClientForw");
|
||||
args[15] = smClient.getString("htmlManagerServlet.connectorStateTableTitleClientAct");
|
||||
args[16] = smClient.getString("htmlManagerServlet.connectorStateTableTitleVHost");
|
||||
args[17] = smClient.getString("htmlManagerServlet.connectorStateTableTitleRequest");
|
||||
args[18] = smClient.getString("htmlManagerServlet.connectorStateHint");
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeConnectorState
|
||||
(writer, objectName,
|
||||
name, mBeanServer, globalRequestProcessors,
|
||||
requestProcessors, mode, args);
|
||||
}
|
||||
|
||||
if ((request.getPathInfo() != null)
|
||||
&& (request.getPathInfo().equals("/all"))) {
|
||||
// Note: Retrieving the full status is much slower
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeDetailedState
|
||||
(writer, mBeanServer, mode);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new ServletException(e);
|
||||
}
|
||||
|
||||
// use StatusTransformer to output status
|
||||
StatusTransformer.writeFooter(writer, mode);
|
||||
|
||||
}
|
||||
|
||||
// ------------------------------------------- NotificationListener Methods
|
||||
|
||||
|
||||
@Override
|
||||
public void handleNotification(Notification notification,
|
||||
java.lang.Object handback) {
|
||||
|
||||
if (notification instanceof MBeanServerNotification) {
|
||||
ObjectName objectName =
|
||||
((MBeanServerNotification) notification).getMBeanName();
|
||||
if (notification.getType().equals
|
||||
(MBeanServerNotification.REGISTRATION_NOTIFICATION)) {
|
||||
String type = objectName.getKeyProperty("type");
|
||||
if (type != null) {
|
||||
if (type.equals("ProtocolHandler")) {
|
||||
protocolHandlers.addElement(objectName);
|
||||
} else if (type.equals("ThreadPool")) {
|
||||
threadPools.addElement(objectName);
|
||||
} else if (type.equals("GlobalRequestProcessor")) {
|
||||
globalRequestProcessors.addElement(objectName);
|
||||
} else if (type.equals("RequestProcessor")) {
|
||||
requestProcessors.addElement(objectName);
|
||||
}
|
||||
}
|
||||
} else if (notification.getType().equals
|
||||
(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) {
|
||||
String type = objectName.getKeyProperty("type");
|
||||
if (type != null) {
|
||||
if (type.equals("ProtocolHandler")) {
|
||||
protocolHandlers.removeElement(objectName);
|
||||
} else if (type.equals("ThreadPool")) {
|
||||
threadPools.removeElement(objectName);
|
||||
} else if (type.equals("GlobalRequestProcessor")) {
|
||||
globalRequestProcessors.removeElement(objectName);
|
||||
} else if (type.equals("RequestProcessor")) {
|
||||
requestProcessors.removeElement(objectName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
1101
java/org/apache/catalina/manager/StatusTransformer.java
Normal file
1101
java/org/apache/catalina/manager/StatusTransformer.java
Normal file
File diff suppressed because it is too large
Load Diff
91
java/org/apache/catalina/manager/host/Constants.java
Normal file
91
java/org/apache/catalina/manager/host/Constants.java
Normal file
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* 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.catalina.manager.host;
|
||||
|
||||
|
||||
public class Constants {
|
||||
|
||||
public static final String Package = "org.apache.catalina.manager.host";
|
||||
|
||||
public static final String REL_EXTERNAL = org.apache.catalina.manager.Constants.REL_EXTERNAL;
|
||||
|
||||
public static final String MESSAGE_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
" <tr>\n" +
|
||||
" <td class=\"row-left\" width=\"10%\">" +
|
||||
"<small><strong>{0}</strong></small> </td>\n" +
|
||||
" <td class=\"row-left\"><pre>{1}</pre></td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
public static final String MANAGER_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"4\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
" <tr>\n" +
|
||||
" <td class=\"row-left\"><a href=\"{1}\">{2}</a></td>\n" +
|
||||
" <td class=\"row-center\"><a href=\"{3}\" " + REL_EXTERNAL + ">{4}</a></td>\n" +
|
||||
" <td class=\"row-center\"><a href=\"{5}\" " + REL_EXTERNAL + ">{6}</a></td>\n" +
|
||||
" <td class=\"row-right\"><a href=\"{7}\">{8}</a></td>\n" +
|
||||
" </tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
public static final String SERVER_HEADER_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"6\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"header-center\"><small>{1}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{2}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{3}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{4}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{5}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{6}</small></td>\n" +
|
||||
"</tr>\n";
|
||||
|
||||
public static final String SERVER_ROW_SECTION =
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-center\"><small>{0}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{1}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{2}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{3}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{4}</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{5}</small></td>\n" +
|
||||
"</tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
public static final String HTML_TAIL_SECTION =
|
||||
"<hr size=\"1\" noshade=\"noshade\">\n" +
|
||||
"<center><font size=\"-1\" color=\"#525D76\">\n" +
|
||||
" <em>Copyright © 1999-2020, Apache Software Foundation</em>" +
|
||||
"</font></center>\n" +
|
||||
"\n" +
|
||||
"</body>\n" +
|
||||
"</html>";
|
||||
public static final String CHARSET="utf-8";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,598 @@
|
||||
/*
|
||||
* 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.catalina.manager.host;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.catalina.Container;
|
||||
import org.apache.catalina.Host;
|
||||
import org.apache.catalina.util.ServerInfo;
|
||||
import org.apache.tomcat.util.res.StringManager;
|
||||
import org.apache.tomcat.util.security.Escape;
|
||||
|
||||
/**
|
||||
* Servlet that enables remote management of the virtual hosts deployed
|
||||
* on the server. Normally, this functionality will be protected by a security
|
||||
* constraint in the web application deployment descriptor. However,
|
||||
* this requirement can be relaxed during testing.
|
||||
* <p>
|
||||
* The difference between the <code>HostManagerServlet</code> and this
|
||||
* Servlet is that this Servlet prints out a HTML interface which
|
||||
* makes it easier to administrate.
|
||||
* <p>
|
||||
* However if you use a software that parses the output of
|
||||
* <code>HostManagerServlet</code> you won't be able to upgrade
|
||||
* to this Servlet since the output are not in the
|
||||
* same format as from <code>HostManagerServlet</code>
|
||||
*
|
||||
* @author Bip Thelin
|
||||
* @author Malcolm Edgar
|
||||
* @author Glenn L. Nielsen
|
||||
* @author Peter Rossbach
|
||||
* @see org.apache.catalina.manager.ManagerServlet
|
||||
*/
|
||||
public final class HTMLHostManagerServlet extends HostManagerServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// --------------------------------------------------------- Public Methods
|
||||
|
||||
/**
|
||||
* Process a GET request for the specified resource.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are creating
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet-specified error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
|
||||
StringManager smClient = StringManager.getManager(
|
||||
Constants.Package, request.getLocales());
|
||||
|
||||
// Identify the request parameters that we need
|
||||
String command = request.getPathInfo();
|
||||
|
||||
// Prepare our output writer to generate the response message
|
||||
response.setContentType("text/html; charset=" + Constants.CHARSET);
|
||||
|
||||
String message = "";
|
||||
// Process the requested command
|
||||
if (command == null) {
|
||||
// No command == list
|
||||
} else if (command.equals("/list")) {
|
||||
// Nothing to do - always generate list
|
||||
} else if (command.equals("/add") || command.equals("/remove") ||
|
||||
command.equals("/start") || command.equals("/stop") ||
|
||||
command.equals("/persist")) {
|
||||
message = smClient.getString(
|
||||
"hostManagerServlet.postCommand", command);
|
||||
} else {
|
||||
message = smClient.getString(
|
||||
"hostManagerServlet.unknownCommand", command);
|
||||
}
|
||||
|
||||
list(request, response, message, smClient);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a POST request for the specified resource.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are creating
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet-specified error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doPost(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
|
||||
StringManager smClient = StringManager.getManager(
|
||||
Constants.Package, request.getLocales());
|
||||
|
||||
// Identify the request parameters that we need
|
||||
String command = request.getPathInfo();
|
||||
|
||||
String name = request.getParameter("name");
|
||||
|
||||
// Prepare our output writer to generate the response message
|
||||
response.setContentType("text/html; charset=" + Constants.CHARSET);
|
||||
|
||||
String message = "";
|
||||
|
||||
// Process the requested command
|
||||
if (command == null) {
|
||||
// No command == list
|
||||
} else if (command.equals("/add")) {
|
||||
message = add(request, name, smClient);
|
||||
} else if (command.equals("/remove")) {
|
||||
message = remove(name, smClient);
|
||||
} else if (command.equals("/start")) {
|
||||
message = start(name, smClient);
|
||||
} else if (command.equals("/stop")) {
|
||||
message = stop(name, smClient);
|
||||
} else if (command.equals("/persist")) {
|
||||
message = persist(smClient);
|
||||
} else {
|
||||
//Try GET
|
||||
doGet(request, response);
|
||||
}
|
||||
|
||||
list(request, response, message, smClient);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a host using the specified parameters.
|
||||
*
|
||||
* @param request The Servlet request
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
* @return output
|
||||
*/
|
||||
protected String add(HttpServletRequest request,String name,
|
||||
StringManager smClient) {
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
|
||||
super.add(request,printWriter,name,true, smClient);
|
||||
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified host.
|
||||
*
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
* @return output
|
||||
*/
|
||||
protected String remove(String name, StringManager smClient) {
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
|
||||
super.remove(printWriter, name, smClient);
|
||||
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Start the host with the specified name.
|
||||
*
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
* @return output
|
||||
*/
|
||||
protected String start(String name, StringManager smClient) {
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
|
||||
super.start(printWriter, name, smClient);
|
||||
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stop the host with the specified name.
|
||||
*
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
* @return output
|
||||
*/
|
||||
protected String stop(String name, StringManager smClient) {
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
|
||||
super.stop(printWriter, name, smClient);
|
||||
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Persist the current configuration to server.xml.
|
||||
*
|
||||
* @param smClient i18n resources localized for the client
|
||||
* @return output
|
||||
*/
|
||||
protected String persist(StringManager smClient) {
|
||||
|
||||
StringWriter stringWriter = new StringWriter();
|
||||
PrintWriter printWriter = new PrintWriter(stringWriter);
|
||||
|
||||
super.persist(printWriter, smClient);
|
||||
|
||||
return stringWriter.toString();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render a HTML list of the currently active Contexts in our virtual host,
|
||||
* and memory and server status information.
|
||||
*
|
||||
* @param request The request
|
||||
* @param response The response
|
||||
* @param message a message to display
|
||||
* @param smClient StringManager for the client's locale
|
||||
* @throws IOException An IO error occurred
|
||||
*/
|
||||
public void list(HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
String message,
|
||||
StringManager smClient) throws IOException {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.list", engine.getName()));
|
||||
}
|
||||
|
||||
PrintWriter writer = response.getWriter();
|
||||
|
||||
// HTML Header Section
|
||||
writer.print(org.apache.catalina.manager.Constants.HTML_HEADER_SECTION);
|
||||
|
||||
// Body Header Section
|
||||
Object[] args = new Object[2];
|
||||
args[0] = request.getContextPath();
|
||||
args[1] = smClient.getString("htmlHostManagerServlet.title");
|
||||
writer.print(MessageFormat.format(
|
||||
org.apache.catalina.manager.Constants.BODY_HEADER_SECTION, args));
|
||||
|
||||
// Message Section
|
||||
args = new Object[3];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.messageLabel");
|
||||
if (message == null || message.length() == 0) {
|
||||
args[1] = "OK";
|
||||
} else {
|
||||
args[1] = Escape.htmlElementContent(message);
|
||||
}
|
||||
writer.print(MessageFormat.format(Constants.MESSAGE_SECTION, args));
|
||||
|
||||
// Manager Section
|
||||
args = new Object[9];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.manager");
|
||||
args[1] = response.encodeURL(request.getContextPath() + "/html/list");
|
||||
args[2] = smClient.getString("htmlHostManagerServlet.list");
|
||||
args[3] = // External link
|
||||
(request.getContextPath() + "/" +
|
||||
smClient.getString("htmlHostManagerServlet.helpHtmlManagerFile"));
|
||||
args[4] = smClient.getString("htmlHostManagerServlet.helpHtmlManager");
|
||||
args[5] = // External link
|
||||
(request.getContextPath() + "/" +
|
||||
smClient.getString("htmlHostManagerServlet.helpManagerFile"));
|
||||
args[6] = smClient.getString("htmlHostManagerServlet.helpManager");
|
||||
args[7] = response.encodeURL("/manager/status");
|
||||
args[8] = smClient.getString("statusServlet.title");
|
||||
writer.print(MessageFormat.format(Constants.MANAGER_SECTION, args));
|
||||
|
||||
// Hosts Header Section
|
||||
args = new Object[3];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.hostName");
|
||||
args[1] = smClient.getString("htmlHostManagerServlet.hostAliases");
|
||||
args[2] = smClient.getString("htmlHostManagerServlet.hostTasks");
|
||||
writer.print(MessageFormat.format(HOSTS_HEADER_SECTION, args));
|
||||
|
||||
// Hosts Row Section
|
||||
// Create sorted map of host names.
|
||||
Container[] children = engine.findChildren();
|
||||
String hostNames[] = new String[children.length];
|
||||
for (int i = 0; i < children.length; i++)
|
||||
hostNames[i] = children[i].getName();
|
||||
|
||||
TreeMap<String,String> sortedHostNamesMap = new TreeMap<>();
|
||||
|
||||
for (int i = 0; i < hostNames.length; i++) {
|
||||
String displayPath = hostNames[i];
|
||||
sortedHostNamesMap.put(displayPath, hostNames[i]);
|
||||
}
|
||||
|
||||
String hostsStart =
|
||||
smClient.getString("htmlHostManagerServlet.hostsStart");
|
||||
String hostsStop =
|
||||
smClient.getString("htmlHostManagerServlet.hostsStop");
|
||||
String hostsRemove =
|
||||
smClient.getString("htmlHostManagerServlet.hostsRemove");
|
||||
String hostThis =
|
||||
smClient.getString("htmlHostManagerServlet.hostThis");
|
||||
|
||||
for (Map.Entry<String, String> entry : sortedHostNamesMap.entrySet()) {
|
||||
String hostName = entry.getKey();
|
||||
Host host = (Host) engine.findChild(hostName);
|
||||
|
||||
if (host != null ) {
|
||||
args = new Object[2];
|
||||
args[0] = // External link
|
||||
Escape.htmlElementContent(hostName);
|
||||
String[] aliases = host.findAliases();
|
||||
StringBuilder buf = new StringBuilder();
|
||||
if (aliases.length > 0) {
|
||||
buf.append(aliases[0]);
|
||||
for (int j = 1; j < aliases.length; j++) {
|
||||
buf.append(", ").append(aliases[j]);
|
||||
}
|
||||
}
|
||||
|
||||
if (buf.length() == 0) {
|
||||
buf.append(" ");
|
||||
args[1] = buf.toString();
|
||||
} else {
|
||||
args[1] = Escape.htmlElementContent(buf.toString());
|
||||
}
|
||||
|
||||
writer.print
|
||||
(MessageFormat.format(HOSTS_ROW_DETAILS_SECTION, args));
|
||||
|
||||
args = new Object[5];
|
||||
if (host.getState().isAvailable()) {
|
||||
args[0] = response.encodeURL
|
||||
(request.getContextPath() +
|
||||
"/html/stop?name=" +
|
||||
URLEncoder.encode(hostName, "UTF-8"));
|
||||
args[1] = hostsStop;
|
||||
} else {
|
||||
args[0] = response.encodeURL
|
||||
(request.getContextPath() +
|
||||
"/html/start?name=" +
|
||||
URLEncoder.encode(hostName, "UTF-8"));
|
||||
args[1] = hostsStart;
|
||||
}
|
||||
args[2] = response.encodeURL
|
||||
(request.getContextPath() +
|
||||
"/html/remove?name=" +
|
||||
URLEncoder.encode(hostName, "UTF-8"));
|
||||
args[3] = hostsRemove;
|
||||
args[4] = hostThis;
|
||||
if (host == this.installedHost) {
|
||||
writer.print(MessageFormat.format(
|
||||
MANAGER_HOST_ROW_BUTTON_SECTION, args));
|
||||
} else {
|
||||
writer.print(MessageFormat.format(
|
||||
HOSTS_ROW_BUTTON_SECTION, args));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Add Section
|
||||
args = new Object[6];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addTitle");
|
||||
args[1] = smClient.getString("htmlHostManagerServlet.addHost");
|
||||
args[2] = response.encodeURL(request.getContextPath() + "/html/add");
|
||||
args[3] = smClient.getString("htmlHostManagerServlet.addName");
|
||||
args[4] = smClient.getString("htmlHostManagerServlet.addAliases");
|
||||
args[5] = smClient.getString("htmlHostManagerServlet.addAppBase");
|
||||
writer.print(MessageFormat.format(ADD_SECTION_START, args));
|
||||
|
||||
args = new Object[3];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addAutoDeploy");
|
||||
args[1] = "autoDeploy";
|
||||
args[2] = "checked";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
args[0] = smClient.getString(
|
||||
"htmlHostManagerServlet.addDeployOnStartup");
|
||||
args[1] = "deployOnStartup";
|
||||
args[2] = "checked";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addDeployXML");
|
||||
args[1] = "deployXML";
|
||||
args[2] = "checked";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addUnpackWARs");
|
||||
args[1] = "unpackWARs";
|
||||
args[2] = "checked";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addManager");
|
||||
args[1] = "manager";
|
||||
args[2] = "checked";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addCopyXML");
|
||||
args[1] = "copyXML";
|
||||
args[2] = "";
|
||||
writer.print(MessageFormat.format(ADD_SECTION_BOOLEAN, args));
|
||||
|
||||
args = new Object[1];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.addButton");
|
||||
writer.print(MessageFormat.format(ADD_SECTION_END, args));
|
||||
|
||||
// Persist Configuration Section
|
||||
args = new Object[4];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.persistTitle");
|
||||
args[1] = response.encodeURL(request.getContextPath() + "/html/persist");
|
||||
args[2] = smClient.getString("htmlHostManagerServlet.persistAllButton");
|
||||
args[3] = smClient.getString("htmlHostManagerServlet.persistAll");
|
||||
writer.print(MessageFormat.format(PERSIST_SECTION, args));
|
||||
|
||||
// Server Header Section
|
||||
args = new Object[7];
|
||||
args[0] = smClient.getString("htmlHostManagerServlet.serverTitle");
|
||||
args[1] = smClient.getString("htmlHostManagerServlet.serverVersion");
|
||||
args[2] = smClient.getString("htmlHostManagerServlet.serverJVMVersion");
|
||||
args[3] = smClient.getString("htmlHostManagerServlet.serverJVMVendor");
|
||||
args[4] = smClient.getString("htmlHostManagerServlet.serverOSName");
|
||||
args[5] = smClient.getString("htmlHostManagerServlet.serverOSVersion");
|
||||
args[6] = smClient.getString("htmlHostManagerServlet.serverOSArch");
|
||||
writer.print(MessageFormat.format
|
||||
(Constants.SERVER_HEADER_SECTION, args));
|
||||
|
||||
// Server Row Section
|
||||
args = new Object[6];
|
||||
args[0] = ServerInfo.getServerInfo();
|
||||
args[1] = System.getProperty("java.runtime.version");
|
||||
args[2] = System.getProperty("java.vm.vendor");
|
||||
args[3] = System.getProperty("os.name");
|
||||
args[4] = System.getProperty("os.version");
|
||||
args[5] = System.getProperty("os.arch");
|
||||
writer.print(MessageFormat.format(Constants.SERVER_ROW_SECTION, args));
|
||||
|
||||
// HTML Tail Section
|
||||
writer.print(Constants.HTML_TAIL_SECTION);
|
||||
|
||||
// Finish up the response
|
||||
writer.flush();
|
||||
writer.close();
|
||||
}
|
||||
|
||||
|
||||
// ------------------------------------------------------ Private Constants
|
||||
|
||||
// These HTML sections are broken in relatively small sections, because of
|
||||
// limited number of substitutions MessageFormat can process
|
||||
// (maximum of 10).
|
||||
|
||||
private static final String HOSTS_HEADER_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"5\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"header-left\"><small>{0}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{1}</small></td>\n" +
|
||||
" <td class=\"header-center\"><small>{2}</small></td>\n" +
|
||||
"</tr>\n";
|
||||
|
||||
private static final String HOSTS_ROW_DETAILS_SECTION =
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-left\"><small><a href=\"http://{0}\" "
|
||||
+ Constants.REL_EXTERNAL + ">{0}</a>" +
|
||||
"</small></td>\n" +
|
||||
" <td class=\"row-center\"><small>{1}</small></td>\n";
|
||||
|
||||
private static final String MANAGER_HOST_ROW_BUTTON_SECTION =
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <small>{4}</small>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n";
|
||||
|
||||
private static final String HOSTS_ROW_BUTTON_SECTION =
|
||||
" <td class=\"row-left\" NOWRAP>\n" +
|
||||
" <form class=\"inline\" method=\"POST\" action=\"{0}\">" +
|
||||
" <small><input type=\"submit\" value=\"{1}\"></small>" +
|
||||
" </form>\n" +
|
||||
" <form class=\"inline\" method=\"POST\" action=\"{2}\">" +
|
||||
" <small><input type=\"submit\" value=\"{3}\"></small>" +
|
||||
" </form>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n";
|
||||
|
||||
private static final String ADD_SECTION_START =
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"2\" class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"2\" class=\"header-left\"><small>{1}</small></td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td colspan=\"2\">\n" +
|
||||
"<form method=\"post\" action=\"{2}\">\n" +
|
||||
"<table cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-right\">\n" +
|
||||
" <small>{3}</small>\n" +
|
||||
" </td>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <input type=\"text\" name=\"name\" size=\"20\">\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-right\">\n" +
|
||||
" <small>{4}</small>\n" +
|
||||
" </td>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <input type=\"text\" name=\"aliases\" size=\"64\">\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-right\">\n" +
|
||||
" <small>{5}</small>\n" +
|
||||
" </td>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <input type=\"text\" name=\"appBase\" size=\"64\">\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" ;
|
||||
|
||||
private static final String ADD_SECTION_BOOLEAN =
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-right\">\n" +
|
||||
" <small>{0}</small>\n" +
|
||||
" </td>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <input type=\"checkbox\" name=\"{1}\" {2}>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" ;
|
||||
|
||||
private static final String ADD_SECTION_END =
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-right\">\n" +
|
||||
" \n" +
|
||||
" </td>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <input type=\"submit\" value=\"{0}\">\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
"</table>\n" +
|
||||
"</form>\n" +
|
||||
"</td>\n" +
|
||||
"</tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
private static final String PERSIST_SECTION =
|
||||
"<table border=\"1\" cellspacing=\"0\" cellpadding=\"3\">\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"title\">{0}</td>\n" +
|
||||
"</tr>\n" +
|
||||
"<tr>\n" +
|
||||
" <td class=\"row-left\">\n" +
|
||||
" <form class=\"inline\" method=\"POST\" action=\"{1}\">" +
|
||||
" <small><input type=\"submit\" value=\"{2}\"></small>" +
|
||||
" </form> {3}\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
"</table>\n" +
|
||||
"<br>\n" +
|
||||
"\n";
|
||||
|
||||
}
|
||||
706
java/org/apache/catalina/manager/host/HostManagerServlet.java
Normal file
706
java/org/apache/catalina/manager/host/HostManagerServlet.java
Normal file
@@ -0,0 +1,706 @@
|
||||
/*
|
||||
* 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.catalina.manager.host;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.lang.management.ManagementFactory;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.StringTokenizer;
|
||||
|
||||
import javax.management.InstanceNotFoundException;
|
||||
import javax.management.MBeanServer;
|
||||
import javax.management.ObjectName;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.UnavailableException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.apache.catalina.Container;
|
||||
import org.apache.catalina.ContainerServlet;
|
||||
import org.apache.catalina.Context;
|
||||
import org.apache.catalina.Engine;
|
||||
import org.apache.catalina.Host;
|
||||
import org.apache.catalina.Wrapper;
|
||||
import org.apache.catalina.core.ContainerBase;
|
||||
import org.apache.catalina.core.StandardHost;
|
||||
import org.apache.catalina.startup.HostConfig;
|
||||
import org.apache.tomcat.util.ExceptionUtils;
|
||||
import org.apache.tomcat.util.buf.StringUtils;
|
||||
import org.apache.tomcat.util.res.StringManager;
|
||||
|
||||
/**
|
||||
* Servlet that enables remote management of the virtual hosts installed
|
||||
* on the server. Normally, this functionality will be protected by
|
||||
* a security constraint in the web application deployment descriptor.
|
||||
* However, this requirement can be relaxed during testing.
|
||||
* <p>
|
||||
* This servlet examines the value returned by <code>getPathInfo()</code>
|
||||
* and related query parameters to determine what action is being requested.
|
||||
* The following actions and parameters (starting after the servlet path)
|
||||
* are supported:
|
||||
* <ul>
|
||||
* <li><b>/add?name={host-name}&aliases={host-aliases}&manager={manager}</b> -
|
||||
* Create and add a new virtual host. The <code>host-name</code> attribute
|
||||
* indicates the name of the new host. The <code>host-aliases</code>
|
||||
* attribute is a comma separated list of the host alias names.
|
||||
* The <code>manager</code> attribute is a boolean value indicating if the
|
||||
* webapp manager will be installed in the newly created host (optional,
|
||||
* false by default).</li>
|
||||
* <li><b>/remove?name={host-name}</b> - Remove a virtual host.
|
||||
* The <code>host-name</code> attribute indicates the name of the host.
|
||||
* </li>
|
||||
* <li><b>/list</b> - List the virtual hosts installed on the server.
|
||||
* Each host will be listed with the following format
|
||||
* <code>host-name#host-aliases</code>.</li>
|
||||
* <li><b>/start?name={host-name}</b> - Start the virtual host.</li>
|
||||
* <li><b>/stop?name={host-name}</b> - Stop the virtual host.</li>
|
||||
* </ul>
|
||||
* <p>
|
||||
* <b>NOTE</b> - Attempting to stop or remove the host containing
|
||||
* this servlet itself will not succeed. Therefore, this servlet should
|
||||
* generally be deployed in a separate virtual host.
|
||||
* <p>
|
||||
* The following servlet initialization parameters are recognized:
|
||||
* <ul>
|
||||
* <li><b>debug</b> - The debugging detail level that controls the amount
|
||||
* of information that is logged by this servlet. Default is zero.
|
||||
* </ul>
|
||||
*
|
||||
* @author Craig R. McClanahan
|
||||
* @author Remy Maucherat
|
||||
*/
|
||||
public class HostManagerServlet
|
||||
extends HttpServlet implements ContainerServlet {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
// ----------------------------------------------------- Instance Variables
|
||||
|
||||
|
||||
/**
|
||||
* The Context container associated with our web application.
|
||||
*/
|
||||
protected transient Context context = null;
|
||||
|
||||
|
||||
/**
|
||||
* The debugging detail level for this servlet.
|
||||
*/
|
||||
protected int debug = 1;
|
||||
|
||||
|
||||
/**
|
||||
* The associated host.
|
||||
*/
|
||||
protected transient Host installedHost = null;
|
||||
|
||||
|
||||
/**
|
||||
* The associated engine.
|
||||
*/
|
||||
protected transient Engine engine = null;
|
||||
|
||||
|
||||
/**
|
||||
* The string manager for this package.
|
||||
*/
|
||||
protected static final StringManager sm =
|
||||
StringManager.getManager(Constants.Package);
|
||||
|
||||
|
||||
/**
|
||||
* The Wrapper container associated with this servlet.
|
||||
*/
|
||||
protected transient Wrapper wrapper = null;
|
||||
|
||||
|
||||
// ----------------------------------------------- ContainerServlet Methods
|
||||
|
||||
|
||||
/**
|
||||
* Return the Wrapper with which we are associated.
|
||||
*/
|
||||
@Override
|
||||
public Wrapper getWrapper() {
|
||||
return this.wrapper;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the Wrapper with which we are associated.
|
||||
*
|
||||
* @param wrapper The new wrapper
|
||||
*/
|
||||
@Override
|
||||
public void setWrapper(Wrapper wrapper) {
|
||||
|
||||
this.wrapper = wrapper;
|
||||
if (wrapper == null) {
|
||||
context = null;
|
||||
installedHost = null;
|
||||
engine = null;
|
||||
} else {
|
||||
context = (Context) wrapper.getParent();
|
||||
installedHost = (Host) context.getParent();
|
||||
engine = (Engine) installedHost.getParent();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// --------------------------------------------------------- Public Methods
|
||||
|
||||
|
||||
/**
|
||||
* Finalize this servlet.
|
||||
*/
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
// No actions necessary
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Process a GET request for the specified resource.
|
||||
*
|
||||
* @param request The servlet request we are processing
|
||||
* @param response The servlet response we are creating
|
||||
*
|
||||
* @exception IOException if an input/output error occurs
|
||||
* @exception ServletException if a servlet-specified error occurs
|
||||
*/
|
||||
@Override
|
||||
public void doGet(HttpServletRequest request,
|
||||
HttpServletResponse response)
|
||||
throws IOException, ServletException {
|
||||
|
||||
StringManager smClient = StringManager.getManager(
|
||||
Constants.Package, request.getLocales());
|
||||
|
||||
// Identify the request parameters that we need
|
||||
String command = request.getPathInfo();
|
||||
if (command == null)
|
||||
command = request.getServletPath();
|
||||
String name = request.getParameter("name");
|
||||
|
||||
// Prepare our output writer to generate the response message
|
||||
response.setContentType("text/plain; charset=" + Constants.CHARSET);
|
||||
// Stop older versions of IE thinking they know best. We set text/plain
|
||||
// in the line above for a reason. IE's behaviour is unwanted at best
|
||||
// and dangerous at worst.
|
||||
response.setHeader("X-Content-Type-Options", "nosniff");
|
||||
PrintWriter writer = response.getWriter();
|
||||
|
||||
// Process the requested command
|
||||
if (command == null) {
|
||||
writer.println(smClient.getString("hostManagerServlet.noCommand"));
|
||||
} else if (command.equals("/add")) {
|
||||
add(request, writer, name, false, smClient);
|
||||
} else if (command.equals("/remove")) {
|
||||
remove(writer, name, smClient);
|
||||
} else if (command.equals("/list")) {
|
||||
list(writer, smClient);
|
||||
} else if (command.equals("/start")) {
|
||||
start(writer, name, smClient);
|
||||
} else if (command.equals("/stop")) {
|
||||
stop(writer, name, smClient);
|
||||
} else if (command.equals("/persist")) {
|
||||
persist(writer, smClient);
|
||||
} else {
|
||||
writer.println(smClient.getString("hostManagerServlet.unknownCommand",
|
||||
command));
|
||||
}
|
||||
|
||||
// Finish up the response
|
||||
writer.flush();
|
||||
writer.close();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Add host with the given parameters.
|
||||
*
|
||||
* @param request The request
|
||||
* @param writer The output writer
|
||||
* @param name The host name
|
||||
* @param htmlMode Flag value
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected void add(HttpServletRequest request, PrintWriter writer,
|
||||
String name, boolean htmlMode, StringManager smClient) {
|
||||
String aliases = request.getParameter("aliases");
|
||||
String appBase = request.getParameter("appBase");
|
||||
boolean manager = booleanParameter(request, "manager", false, htmlMode);
|
||||
boolean autoDeploy = booleanParameter(request, "autoDeploy", true, htmlMode);
|
||||
boolean deployOnStartup = booleanParameter(request, "deployOnStartup", true, htmlMode);
|
||||
boolean deployXML = booleanParameter(request, "deployXML", true, htmlMode);
|
||||
boolean unpackWARs = booleanParameter(request, "unpackWARs", true, htmlMode);
|
||||
boolean copyXML = booleanParameter(request, "copyXML", false, htmlMode);
|
||||
add(writer, name, aliases, appBase, manager,
|
||||
autoDeploy,
|
||||
deployOnStartup,
|
||||
deployXML,
|
||||
unpackWARs,
|
||||
copyXML,
|
||||
smClient);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Extract boolean value from checkbox with default.
|
||||
* @param request The Servlet request
|
||||
* @param parameter The parameter name
|
||||
* @param theDefault Default value
|
||||
* @param htmlMode Flag value
|
||||
* @return the boolean value for the parameter
|
||||
*/
|
||||
protected boolean booleanParameter(HttpServletRequest request,
|
||||
String parameter, boolean theDefault, boolean htmlMode) {
|
||||
String value = request.getParameter(parameter);
|
||||
boolean booleanValue = theDefault;
|
||||
if (value != null) {
|
||||
if (htmlMode) {
|
||||
if (value.equals("on")) {
|
||||
booleanValue = true;
|
||||
}
|
||||
} else if (theDefault) {
|
||||
if (value.equals("false")) {
|
||||
booleanValue = false;
|
||||
}
|
||||
} else if (value.equals("true")) {
|
||||
booleanValue = true;
|
||||
}
|
||||
} else if (htmlMode)
|
||||
booleanValue = false;
|
||||
return booleanValue;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void init() throws ServletException {
|
||||
|
||||
// Ensure that our ContainerServlet properties have been set
|
||||
if ((wrapper == null) || (context == null))
|
||||
throw new UnavailableException
|
||||
(sm.getString("hostManagerServlet.noWrapper"));
|
||||
|
||||
// Set our properties from the initialization parameters
|
||||
String value = null;
|
||||
try {
|
||||
value = getServletConfig().getInitParameter("debug");
|
||||
debug = Integer.parseInt(value);
|
||||
} catch (Throwable t) {
|
||||
ExceptionUtils.handleThrowable(t);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -------------------------------------------------------- Private Methods
|
||||
|
||||
|
||||
/**
|
||||
* Add a host using the specified parameters.
|
||||
*
|
||||
* @param writer Writer to render results to
|
||||
* @param name host name
|
||||
* @param aliases comma separated alias list
|
||||
* @param appBase application base for the host
|
||||
* @param manager should the manager webapp be deployed to the new host ?
|
||||
* @param autoDeploy Flag value
|
||||
* @param deployOnStartup Flag value
|
||||
* @param deployXML Flag value
|
||||
* @param unpackWARs Flag value
|
||||
* @param copyXML Flag value
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected synchronized void add
|
||||
(PrintWriter writer, String name, String aliases, String appBase,
|
||||
boolean manager,
|
||||
boolean autoDeploy,
|
||||
boolean deployOnStartup,
|
||||
boolean deployXML,
|
||||
boolean unpackWARs,
|
||||
boolean copyXML,
|
||||
StringManager smClient) {
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.add", name));
|
||||
}
|
||||
|
||||
// Validate the requested host name
|
||||
if ((name == null) || name.length() == 0) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.invalidHostName", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if host already exists
|
||||
if (engine.findChild(name) != null) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.alreadyHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Validate and create appBase
|
||||
File appBaseFile = null;
|
||||
File file = null;
|
||||
String applicationBase = appBase;
|
||||
if (applicationBase == null || applicationBase.length() == 0) {
|
||||
applicationBase = name;
|
||||
}
|
||||
file = new File(applicationBase);
|
||||
if (!file.isAbsolute())
|
||||
file = new File(engine.getCatalinaBase(), file.getPath());
|
||||
try {
|
||||
appBaseFile = file.getCanonicalFile();
|
||||
} catch (IOException e) {
|
||||
appBaseFile = file;
|
||||
}
|
||||
if (!appBaseFile.mkdirs() && !appBaseFile.isDirectory()) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.appBaseCreateFail",
|
||||
appBaseFile.toString(), name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Create base for config files
|
||||
File configBaseFile = getConfigBase(name);
|
||||
|
||||
// Copy manager.xml if requested
|
||||
if (manager) {
|
||||
if (configBaseFile == null) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.configBaseCreateFail", name));
|
||||
return;
|
||||
}
|
||||
try (InputStream is = getServletContext().getResourceAsStream("/manager.xml")) {
|
||||
Path dest = (new File(configBaseFile, "manager.xml")).toPath();
|
||||
Files.copy(is, dest);
|
||||
} catch (IOException e) {
|
||||
writer.println(smClient.getString("hostManagerServlet.managerXml"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
StandardHost host = new StandardHost();
|
||||
host.setAppBase(applicationBase);
|
||||
host.setName(name);
|
||||
|
||||
host.addLifecycleListener(new HostConfig());
|
||||
|
||||
// Add host aliases
|
||||
if ((aliases != null) && !("".equals(aliases))) {
|
||||
StringTokenizer tok = new StringTokenizer(aliases, ", ");
|
||||
while (tok.hasMoreTokens()) {
|
||||
host.addAlias(tok.nextToken());
|
||||
}
|
||||
}
|
||||
host.setAutoDeploy(autoDeploy);
|
||||
host.setDeployOnStartup(deployOnStartup);
|
||||
host.setDeployXML(deployXML);
|
||||
host.setUnpackWARs(unpackWARs);
|
||||
host.setCopyXML(copyXML);
|
||||
|
||||
// Add new host
|
||||
try {
|
||||
engine.addChild(host);
|
||||
} catch (Exception e) {
|
||||
writer.println(smClient.getString("hostManagerServlet.exception",
|
||||
e.toString()));
|
||||
return;
|
||||
}
|
||||
|
||||
host = (StandardHost) engine.findChild(name);
|
||||
if (host != null) {
|
||||
writer.println(smClient.getString("hostManagerServlet.addSuccess", name));
|
||||
} else {
|
||||
// Something failed
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.addFailed", name));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the specified host.
|
||||
*
|
||||
* @param writer Writer to render results to
|
||||
* @param name host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected synchronized void remove(PrintWriter writer, String name,
|
||||
StringManager smClient) {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.remove", name));
|
||||
}
|
||||
|
||||
// Validate the requested host name
|
||||
if ((name == null) || name.length() == 0) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.invalidHostName", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Check if host exists
|
||||
if (engine.findChild(name) == null) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.noHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent removing our own host
|
||||
if (engine.findChild(name) == installedHost) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.cannotRemoveOwnHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove host
|
||||
// Note that the host will not get physically removed
|
||||
try {
|
||||
Container child = engine.findChild(name);
|
||||
engine.removeChild(child);
|
||||
if ( child instanceof ContainerBase ) ((ContainerBase)child).destroy();
|
||||
} catch (Exception e) {
|
||||
writer.println(smClient.getString("hostManagerServlet.exception",
|
||||
e.toString()));
|
||||
return;
|
||||
}
|
||||
|
||||
Host host = (StandardHost) engine.findChild(name);
|
||||
if (host == null) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.removeSuccess", name));
|
||||
} else {
|
||||
// Something failed
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.removeFailed", name));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Render a list of the currently active Contexts in our virtual host.
|
||||
*
|
||||
* @param writer Writer to render to
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected void list(PrintWriter writer, StringManager smClient) {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.list", engine.getName()));
|
||||
}
|
||||
|
||||
writer.println(smClient.getString("hostManagerServlet.listed",
|
||||
engine.getName()));
|
||||
Container[] hosts = engine.findChildren();
|
||||
for (int i = 0; i < hosts.length; i++) {
|
||||
Host host = (Host) hosts[i];
|
||||
String name = host.getName();
|
||||
String[] aliases = host.findAliases();
|
||||
writer.println(smClient.getString("hostManagerServlet.listitem",
|
||||
name, StringUtils.join(aliases)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Start the host with the specified name.
|
||||
*
|
||||
* @param writer Writer to render to
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected void start(PrintWriter writer, String name,
|
||||
StringManager smClient) {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.start", name));
|
||||
}
|
||||
|
||||
// Validate the requested host name
|
||||
if ((name == null) || name.length() == 0) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.invalidHostName", name));
|
||||
return;
|
||||
}
|
||||
|
||||
Container host = engine.findChild(name);
|
||||
|
||||
// Check if host exists
|
||||
if (host == null) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.noHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent starting our own host
|
||||
if (host == installedHost) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.cannotStartOwnHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't start host if already started
|
||||
if (host.getState().isAvailable()) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.alreadyStarted", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Start host
|
||||
try {
|
||||
host.start();
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.started", name));
|
||||
} catch (Exception e) {
|
||||
getServletContext().log
|
||||
(sm.getString("hostManagerServlet.startFailed", name), e);
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.startFailed", name));
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.exception", e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Stop the host with the specified name.
|
||||
*
|
||||
* @param writer Writer to render to
|
||||
* @param name Host name
|
||||
* @param smClient StringManager for the client's locale
|
||||
*/
|
||||
protected void stop(PrintWriter writer, String name,
|
||||
StringManager smClient) {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.stop", name));
|
||||
}
|
||||
|
||||
// Validate the requested host name
|
||||
if ((name == null) || name.length() == 0) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.invalidHostName", name));
|
||||
return;
|
||||
}
|
||||
|
||||
Container host = engine.findChild(name);
|
||||
|
||||
// Check if host exists
|
||||
if (host == null) {
|
||||
writer.println(smClient.getString("hostManagerServlet.noHost",
|
||||
name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Prevent stopping our own host
|
||||
if (host == installedHost) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.cannotStopOwnHost", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't stop host if already stopped
|
||||
if (!host.getState().isAvailable()) {
|
||||
writer.println(smClient.getString(
|
||||
"hostManagerServlet.alreadyStopped", name));
|
||||
return;
|
||||
}
|
||||
|
||||
// Stop host
|
||||
try {
|
||||
host.stop();
|
||||
writer.println(smClient.getString("hostManagerServlet.stopped",
|
||||
name));
|
||||
} catch (Exception e) {
|
||||
getServletContext().log(sm.getString(
|
||||
"hostManagerServlet.stopFailed", name), e);
|
||||
writer.println(smClient.getString("hostManagerServlet.stopFailed",
|
||||
name));
|
||||
writer.println(smClient.getString("hostManagerServlet.exception",
|
||||
e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Persist the current configuration to server.xml.
|
||||
*
|
||||
* @param writer Writer to render to
|
||||
* @param smClient i18n resources localized for the client
|
||||
*/
|
||||
protected void persist(PrintWriter writer, StringManager smClient) {
|
||||
|
||||
if (debug >= 1) {
|
||||
log(sm.getString("hostManagerServlet.persist"));
|
||||
}
|
||||
|
||||
try {
|
||||
MBeanServer platformMBeanServer = ManagementFactory.getPlatformMBeanServer();
|
||||
ObjectName oname = new ObjectName(engine.getDomain() + ":type=StoreConfig");
|
||||
platformMBeanServer.invoke(oname, "storeConfig", null, null);
|
||||
writer.println(smClient.getString("hostManagerServlet.persisted"));
|
||||
} catch (Exception e) {
|
||||
getServletContext().log(sm.getString("hostManagerServlet.persistFailed"), e);
|
||||
writer.println(smClient.getString("hostManagerServlet.persistFailed"));
|
||||
// catch InstanceNotFoundException when StoreConfig is not enabled instead of printing
|
||||
// the failure message
|
||||
if (e instanceof InstanceNotFoundException) {
|
||||
writer.println("Please enable StoreConfig to use this feature.");
|
||||
} else {
|
||||
writer.println(smClient.getString("hostManagerServlet.exception", e.toString()));
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// -------------------------------------------------------- Support Methods
|
||||
|
||||
/**
|
||||
* Get config base.
|
||||
* @param hostName The host name
|
||||
* @return the config base for the host
|
||||
*/
|
||||
protected File getConfigBase(String hostName) {
|
||||
File configBase = new File(context.getCatalinaBase(), "conf");
|
||||
if (!configBase.exists()) {
|
||||
return null;
|
||||
}
|
||||
if (engine != null) {
|
||||
configBase = new File(configBase, engine.getName());
|
||||
}
|
||||
if (installedHost != null) {
|
||||
configBase = new File(configBase, hostName);
|
||||
}
|
||||
if (!configBase.mkdirs() && !configBase.isDirectory()) {
|
||||
return null;
|
||||
}
|
||||
return configBase;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=add: Adding host [{0}]
|
||||
hostManagerServlet.addFailed=FAIL - Failed to add host [{0}]
|
||||
hostManagerServlet.addSuccess=OK - Host [{0}] added
|
||||
hostManagerServlet.alreadyHost=FAIL - Host already exists with host name [{0}]
|
||||
hostManagerServlet.alreadyStarted=FAIL - Host [{0}] is already started
|
||||
hostManagerServlet.alreadyStopped=FAIL - Host [{0}] is already stopped
|
||||
hostManagerServlet.appBaseCreateFail=FAIL - Failed to create appBase directory [{0}] for host [{1}]
|
||||
hostManagerServlet.cannotRemoveOwnHost=FAIL - Cannot remove your own host [{0}]
|
||||
hostManagerServlet.cannotStartOwnHost=FAIL - Cannot start your own host [{0}]
|
||||
hostManagerServlet.cannotStopOwnHost=FAIL - Cannot stop your own host [{0}]
|
||||
hostManagerServlet.configBaseCreateFail=FAIL - Failed to identify configBase directory for host [{0}]
|
||||
hostManagerServlet.exception=FAIL - Encountered exception [{0}]
|
||||
hostManagerServlet.invalidHostName=FAIL - Invalid host name [{0}] was specified
|
||||
hostManagerServlet.list=list: Listing hosts for engine [{0}]
|
||||
hostManagerServlet.listed=OK - Listed hosts
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=FAIL - Couldn't install manager.xml
|
||||
hostManagerServlet.noCommand=FAIL - No command was specified
|
||||
hostManagerServlet.noHost=FAIL - Host name [{0}] does not exist
|
||||
hostManagerServlet.noWrapper=Container has not called setWrapper() for this servlet
|
||||
hostManagerServlet.persist=persist: Persisting current configuration
|
||||
hostManagerServlet.persistFailed=FAIL - Failed to persist configuration
|
||||
hostManagerServlet.persisted=OK - Configuration persisted
|
||||
hostManagerServlet.postCommand=FAIL - Tried to use command [{0}] via a GET request but POST is required
|
||||
hostManagerServlet.remove=remove: Removing host [{0}]
|
||||
hostManagerServlet.removeFailed=FAIL - Failed to remove host [{0}]
|
||||
hostManagerServlet.removeSuccess=OK - Removed host [{0}]
|
||||
hostManagerServlet.start=start: Starting host with name [{0}]
|
||||
hostManagerServlet.startFailed=FAIL - Failed to start host [{0}]
|
||||
hostManagerServlet.started=OK - Host [{0}] started
|
||||
hostManagerServlet.stop=stop: Stopping host with name [{0}]
|
||||
hostManagerServlet.stopFailed=FAIL - Failed to stop host [{0}]
|
||||
hostManagerServlet.stopped=OK - Host [{0}] stopped
|
||||
hostManagerServlet.unknownCommand=FAIL - Unknown command [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=Aliases:
|
||||
htmlHostManagerServlet.addAppBase=App base:
|
||||
htmlHostManagerServlet.addAutoDeploy=AutoDeploy
|
||||
htmlHostManagerServlet.addButton=Add
|
||||
htmlHostManagerServlet.addCopyXML=CopyXML
|
||||
htmlHostManagerServlet.addDeployOnStartup=DeployOnStartup
|
||||
htmlHostManagerServlet.addDeployXML=DeployXML
|
||||
htmlHostManagerServlet.addHost=Host
|
||||
htmlHostManagerServlet.addManager=Manager App
|
||||
htmlHostManagerServlet.addName=Name:
|
||||
htmlHostManagerServlet.addTitle=Add Virtual Host
|
||||
htmlHostManagerServlet.addUnpackWARs=UnpackWARs
|
||||
htmlHostManagerServlet.helpHtmlManager=HTML Host Manager Help
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Host Manager Help
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=Host aliases
|
||||
htmlHostManagerServlet.hostName=Host name
|
||||
htmlHostManagerServlet.hostTasks=Commands
|
||||
htmlHostManagerServlet.hostThis=Host Manager installed - commands disabled
|
||||
htmlHostManagerServlet.hostsRemove=Remove
|
||||
htmlHostManagerServlet.hostsStart=Start
|
||||
htmlHostManagerServlet.hostsStop=Stop
|
||||
htmlHostManagerServlet.list=List Virtual Hosts
|
||||
htmlHostManagerServlet.manager=Host Manager
|
||||
htmlHostManagerServlet.messageLabel=Message:
|
||||
htmlHostManagerServlet.persistAll=Save current configuration (including virtual hosts) to server.xml and per web application context.xml files
|
||||
htmlHostManagerServlet.persistAllButton=All
|
||||
htmlHostManagerServlet.persistTitle=Persist configuration
|
||||
htmlHostManagerServlet.serverJVMVendor=JVM Vendor
|
||||
htmlHostManagerServlet.serverJVMVersion=JVM Version
|
||||
htmlHostManagerServlet.serverOSArch=OS Architecture
|
||||
htmlHostManagerServlet.serverOSName=OS Name
|
||||
htmlHostManagerServlet.serverOSVersion=OS Version
|
||||
htmlHostManagerServlet.serverTitle=Server Information
|
||||
htmlHostManagerServlet.serverVersion=Tomcat Version
|
||||
htmlHostManagerServlet.title=Tomcat Virtual Host Manager
|
||||
|
||||
statusServlet.complete=Complete Server Status
|
||||
statusServlet.title=Server Status
|
||||
@@ -0,0 +1,36 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.listed=OK - Hosts aufgelistet
|
||||
hostManagerServlet.managerXml=FAIL - Konnte manager.xml nicht installieren
|
||||
hostManagerServlet.start=start: Starte Host mit Name [{0}]
|
||||
hostManagerServlet.stopFailed=FEHLER - der Host [{0}] konnte nicht gestoppt werden
|
||||
|
||||
htmlHostManagerServlet.addAutoDeploy=AutoDeploy
|
||||
htmlHostManagerServlet.addDeployOnStartup=DeployOnStartup
|
||||
htmlHostManagerServlet.addHost=Host
|
||||
htmlHostManagerServlet.addManager=Manager-Anwendung
|
||||
htmlHostManagerServlet.addTitle=Füge virtuellen Host hinzu
|
||||
htmlHostManagerServlet.helpHtmlManager=HTML Host-Manager-Hilfe
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Host-Manager-Hilfe
|
||||
htmlHostManagerServlet.hostName=Hostname
|
||||
htmlHostManagerServlet.hostTasks=Kommandos
|
||||
htmlHostManagerServlet.hostsRemove=Entferne
|
||||
htmlHostManagerServlet.hostsStart=Start
|
||||
htmlHostManagerServlet.hostsStop=Stopp
|
||||
htmlHostManagerServlet.manager=Host-Manager
|
||||
htmlHostManagerServlet.messageLabel=Nachricht:
|
||||
htmlHostManagerServlet.serverOSArch=Betriebssystemarchitektur
|
||||
@@ -0,0 +1,84 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=añadir: Añadiendo máquina [{0}]
|
||||
hostManagerServlet.addFailed=FALLO - No pude añadir máquina [{0}]
|
||||
hostManagerServlet.addSuccess=OK - Máquina añadida [{0}]
|
||||
hostManagerServlet.alreadyHost=FALLO - Ya existe máquina con nombre de máquina [{0}]
|
||||
hostManagerServlet.alreadyStarted=FALLO - La máqiuina [{0}] ya ha arrancado
|
||||
hostManagerServlet.alreadyStopped=FALLO - La máquina [{0}] ya se ha parado
|
||||
hostManagerServlet.appBaseCreateFail=FALLO - No pude crear appBase [{0}] para la máquina [{1}]
|
||||
hostManagerServlet.cannotRemoveOwnHost=FALLO - No puedo quitar máquina propia [{0}]
|
||||
hostManagerServlet.cannotStartOwnHost=FALLO - No puedo empezar máquina propia [{0}]
|
||||
hostManagerServlet.cannotStopOwnHost=FALLO - No puedo para máquina propia [{0}]
|
||||
hostManagerServlet.configBaseCreateFail=FALLO - No pude identificar configBase para la máquina [{0}]
|
||||
hostManagerServlet.exception=FALLO - Encontrada excepción [{0}]
|
||||
hostManagerServlet.invalidHostName=FALLO - Se ha especificado un nombre inválido de máquina [{0}]
|
||||
hostManagerServlet.list=listar: Listando máquinas para motor [{0}]
|
||||
hostManagerServlet.listed=OK - Máquinas listadas
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=FALLO - no pude instalar manager.xml
|
||||
hostManagerServlet.noCommand=FALLO - No se ha especificado comando
|
||||
hostManagerServlet.noHost=FALLO - El nombre de máquina [{0}] no existe
|
||||
hostManagerServlet.noWrapper=El contenedor no ha llamado a setWrapper() para este servlet
|
||||
hostManagerServlet.postCommand=FALLO - Intenté usar el comando [{0}] vía un requerimiento GET pero es necesario POST
|
||||
hostManagerServlet.remove=quitar: Quitando máquina [{0}]
|
||||
hostManagerServlet.removeFailed=FALLO - No pude quitar máquina [{0}]
|
||||
hostManagerServlet.removeSuccess=OK - Máquina removida [{0}]
|
||||
hostManagerServlet.start=arrancar: Arrancando máquina con nombre [{0}]
|
||||
hostManagerServlet.startFailed=FALLO - No pude arrancar máquina [{0}]
|
||||
hostManagerServlet.started=OK - Máquina [{0}] arrancada
|
||||
hostManagerServlet.stop=parar: Parando máquina con nombre [{0}]
|
||||
hostManagerServlet.stopFailed=FALLO - No pude parar máquina [{0}]
|
||||
hostManagerServlet.stopped=OK - Máquina [{0}] parada
|
||||
hostManagerServlet.unknownCommand=FALLO - Comando desconocido [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=Aliases:
|
||||
htmlHostManagerServlet.addAppBase=App base:
|
||||
htmlHostManagerServlet.addAutoDeploy=AutoDeploy
|
||||
htmlHostManagerServlet.addButton=Añadir
|
||||
htmlHostManagerServlet.addDeployOnStartup=DeployOnStartup
|
||||
htmlHostManagerServlet.addDeployXML=DeployXML
|
||||
htmlHostManagerServlet.addHost=Maquina
|
||||
htmlHostManagerServlet.addManager=App de Gestor
|
||||
htmlHostManagerServlet.addName=Nombre:
|
||||
htmlHostManagerServlet.addTitle=Añadir Máquina Virtual
|
||||
htmlHostManagerServlet.addUnpackWARs=UnpackWARs
|
||||
htmlHostManagerServlet.helpHtmlManager=Ayuda de Gestor de Máquina HTML (¡En breve!)
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Ayuda de Gestor de Máquina
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=Aliases de Máquina
|
||||
htmlHostManagerServlet.hostName=Nombre de Máquina
|
||||
htmlHostManagerServlet.hostTasks=Comandos
|
||||
htmlHostManagerServlet.hostThis=Instalado Gestor de Máquinas - comandos deactivados
|
||||
htmlHostManagerServlet.hostsRemove=Quitar
|
||||
htmlHostManagerServlet.hostsStart=Iniciar
|
||||
htmlHostManagerServlet.hostsStop=Parar
|
||||
htmlHostManagerServlet.list=Lista de Máquinas Virtuales
|
||||
htmlHostManagerServlet.manager=Gestor de Máquina
|
||||
htmlHostManagerServlet.messageLabel=Mensaje:
|
||||
htmlHostManagerServlet.persistTitle=Configuración peristente
|
||||
htmlHostManagerServlet.serverJVMVendor=Vendedor JVM
|
||||
htmlHostManagerServlet.serverJVMVersion=Versión de JVM
|
||||
htmlHostManagerServlet.serverOSArch=Arquitectura del SO
|
||||
htmlHostManagerServlet.serverOSName=Nombre de SO
|
||||
htmlHostManagerServlet.serverOSVersion=Versión de SO
|
||||
htmlHostManagerServlet.serverTitle=Información de Servidor
|
||||
htmlHostManagerServlet.serverVersion=Versión de Tomcat
|
||||
htmlHostManagerServlet.title=Gestor de Máquina Virtual de Tomcat
|
||||
|
||||
statusServlet.complete=Completar Estado de Servidor
|
||||
statusServlet.title=Estado de Servidor
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=add: Ajouter l''hôte [{0}]
|
||||
hostManagerServlet.addFailed=ECHEC - L''hôte [{0}] n''a pas pu être ajouté
|
||||
hostManagerServlet.addSuccess=OK - L''hôte [{0}] a été ajouté
|
||||
hostManagerServlet.alreadyHost=ECHEC - Un hôte existe déjà pour le nom [{0}]
|
||||
hostManagerServlet.alreadyStarted=ECHEC - L''hôte [{0}] est déjà démarré
|
||||
hostManagerServlet.alreadyStopped=ECHEC - L''hôte [{0}] est déjà arrêté
|
||||
hostManagerServlet.appBaseCreateFail=ECHEC - Echec de création du répertoire de base (appBase) [{0}] de l''hôte [{1}]
|
||||
hostManagerServlet.cannotRemoveOwnHost=ECHEC - Impossible de retirer son propre hôte
|
||||
hostManagerServlet.cannotStartOwnHost=ECHEC - Ne peut pas démarrer son propre hôte
|
||||
hostManagerServlet.cannotStopOwnHost=ECHEC - Impossible d'arrêter son propre hôte
|
||||
hostManagerServlet.configBaseCreateFail=ECHEC - N''a pas pu trouver le configBase de l''hôte [{0}]
|
||||
hostManagerServlet.exception=ECHEC - Exception [{0}]
|
||||
hostManagerServlet.invalidHostName=ECHEC - Un nom d''hôte [{0}] invalide a été spécifié
|
||||
hostManagerServlet.list=list: Liste des hôte pour le moteur [{0}]
|
||||
hostManagerServlet.listed=OK - Liste des hôtes
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=ECHEC - "manager.xml" n'a pas pu être installé
|
||||
hostManagerServlet.noCommand=ECHEC - Aucune commande n'a été spécifiée
|
||||
hostManagerServlet.noHost=ECHEC - Le nom d''hôte [{0}] n''existe pas
|
||||
hostManagerServlet.noWrapper=Le conteneur n'a pas appelé setWrapper() pour ce Servlet
|
||||
hostManagerServlet.persist=persist: Persister la configuration actuelle
|
||||
hostManagerServlet.persistFailed=ECHEC - N'a pas pu persister la configuration
|
||||
hostManagerServlet.persisted=OK - Configuration persistée
|
||||
hostManagerServlet.postCommand=ECHEC - Essai d''utilisation de GET pour la commande [{0}] mais POST est nécessaire
|
||||
hostManagerServlet.remove=supprimer: suppression de l''hôte [{0}]
|
||||
hostManagerServlet.removeFailed=ECHEC - N''a pas pu retirer l''hôte [{0}]
|
||||
hostManagerServlet.removeSuccess=OK - L''hôte [{0}] a été enlevé
|
||||
hostManagerServlet.start=start: Démarrage de l''hôte [{0}]
|
||||
hostManagerServlet.startFailed=ECHEC - Impossible de démarrer l''hôte [{0}]
|
||||
hostManagerServlet.started=OK - L''hôte [{0}] est démarré
|
||||
hostManagerServlet.stop=stop: Arrêt de l''hôte [{0}]
|
||||
hostManagerServlet.stopFailed=ECHEC - L''arrêt de l''hôte [{0}] a échoué
|
||||
hostManagerServlet.stopped=OK - L''hôte [{0}] est arrêté
|
||||
hostManagerServlet.unknownCommand=ECHEC - Commande inconnue [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=Alias:
|
||||
htmlHostManagerServlet.addAppBase=Répertoire de base:
|
||||
htmlHostManagerServlet.addAutoDeploy=Déploiement automatique
|
||||
htmlHostManagerServlet.addButton=Ajouter
|
||||
htmlHostManagerServlet.addCopyXML=Copier le XML
|
||||
htmlHostManagerServlet.addDeployOnStartup=Déploiement au démarrage
|
||||
htmlHostManagerServlet.addDeployXML=Déployer le XML
|
||||
htmlHostManagerServlet.addHost=Hôte
|
||||
htmlHostManagerServlet.addManager=App gestionnaire
|
||||
htmlHostManagerServlet.addName=Nom:
|
||||
htmlHostManagerServlet.addTitle=Ajouter un hôte virtuel (Virtual Host)
|
||||
htmlHostManagerServlet.addUnpackWARs=Décompresser les WARs
|
||||
htmlHostManagerServlet.helpHtmlManager=Aide HTML du manager d'hôte
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Aide du Gestionnaire d'Hôtes
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=Alias de l'hôte
|
||||
htmlHostManagerServlet.hostName=Nom d'hôte
|
||||
htmlHostManagerServlet.hostTasks=Commandes
|
||||
htmlHostManagerServlet.hostThis=Gestionnaire d'Hôtes installé, commandes désactivées
|
||||
htmlHostManagerServlet.hostsRemove=Retirer
|
||||
htmlHostManagerServlet.hostsStart=Démarrer
|
||||
htmlHostManagerServlet.hostsStop=Arrêt
|
||||
htmlHostManagerServlet.list=Liste des Hôtes Virtuels
|
||||
htmlHostManagerServlet.manager=Gestionaire d'hôte ("Host Manager")
|
||||
htmlHostManagerServlet.messageLabel=Message:
|
||||
htmlHostManagerServlet.persistAll=Enregistrer la configuration, y compris les hôtes virtuels, dans server.xml et les fichiers context.xml pour chaque application
|
||||
htmlHostManagerServlet.persistAllButton=Tout
|
||||
htmlHostManagerServlet.persistTitle=Persister la configuration
|
||||
htmlHostManagerServlet.serverJVMVendor=Fournisseur de la JVM
|
||||
htmlHostManagerServlet.serverJVMVersion=Version de la JVM
|
||||
htmlHostManagerServlet.serverOSArch=Architecture du système
|
||||
htmlHostManagerServlet.serverOSName=Nom de l''OS
|
||||
htmlHostManagerServlet.serverOSVersion=Version de l'OS
|
||||
htmlHostManagerServlet.serverTitle=Information sur le serveur
|
||||
htmlHostManagerServlet.serverVersion=Version de Tomcat
|
||||
htmlHostManagerServlet.title=Gestionnaire d'Hôtes Virtuels de Tomcat
|
||||
|
||||
statusServlet.complete=Etat complet du serveur
|
||||
statusServlet.title=Etat du serveur
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=add:ホスト[{0}]を追加
|
||||
hostManagerServlet.addFailed=FAIL - ホスト [{0}] を追加できません。
|
||||
hostManagerServlet.addSuccess=OK - ホスト[{0}]を追加しました
|
||||
hostManagerServlet.alreadyHost=FAIL - ホスト名[{0}]のホストが既に存在します
|
||||
hostManagerServlet.alreadyStarted=FAIL - ホスト [{0}] はすでに開始しています。
|
||||
hostManagerServlet.alreadyStopped=FAIL - Host [{0}] はすでに停止しています。
|
||||
hostManagerServlet.appBaseCreateFail=FAIL - ホスト [{1}] の appBase [{0}] を作成できません。
|
||||
hostManagerServlet.cannotRemoveOwnHost=FAIL - 自身のホスト[{0}]を削除できません
|
||||
hostManagerServlet.cannotStartOwnHost=FAIL - 自身のホスト [{0}] は開始できません。
|
||||
hostManagerServlet.cannotStopOwnHost=FAIL - 自分自身のホスト [{0}] を停止できません。
|
||||
hostManagerServlet.configBaseCreateFail=FAIL - ホスト [{0}] の configBase が特定できません。
|
||||
hostManagerServlet.exception=FAIL - 例外[{0}]が発生しました
|
||||
hostManagerServlet.invalidHostName=FAIL - 無効なホスト名[{0}]が指定されました
|
||||
hostManagerServlet.list=リスト:Engine[{0}]のHostのリスト
|
||||
hostManagerServlet.listed=OK - 列挙されたHost
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=FAIL - manager.xml をインストールできませんでした。
|
||||
hostManagerServlet.noCommand=FAIL - コマンドが指定されませんでした。
|
||||
hostManagerServlet.noHost=FAIL - ホスト名 [{0}] は存在しません。
|
||||
hostManagerServlet.noWrapper=Container はこのサーブレットの setWrapper() を呼び出していません。
|
||||
hostManagerServlet.persist=永続化:現在の設定を保持する
|
||||
hostManagerServlet.persistFailed=FAIL - 構成を永続化できませんでした
|
||||
hostManagerServlet.persisted=OK - 構成が永続化されました
|
||||
hostManagerServlet.postCommand=FAIL - コマンド[{0}]をGETリクエストで使用しようとしましたが、POSTが必要です
|
||||
hostManagerServlet.remove=remove: ホスト [{0}] を削除します。
|
||||
hostManagerServlet.removeFailed=FAIL - Host [{0}] を削除できません。
|
||||
hostManagerServlet.removeSuccess=OK - ホスト[{0}]を削除しました
|
||||
hostManagerServlet.start=開始:名前[{0}]のホストを起動しています
|
||||
hostManagerServlet.startFailed=FAIL - ホスト[{0}]の起動に失敗しました
|
||||
hostManagerServlet.started=OK - Host [{0}] を開始しました。
|
||||
hostManagerServlet.stop=停止:名前[{0}]のホストを停止しています
|
||||
hostManagerServlet.stopFailed=FAIL- ホスト [{0}] を停止できません。
|
||||
hostManagerServlet.stopped=OK - Host[{0}]が停止しました
|
||||
hostManagerServlet.unknownCommand=FAIL - 不明なコマンド[{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=エイリアス:
|
||||
htmlHostManagerServlet.addAppBase=App base:
|
||||
htmlHostManagerServlet.addAutoDeploy=自動デプロイ
|
||||
htmlHostManagerServlet.addButton=追加
|
||||
htmlHostManagerServlet.addCopyXML=CopyXML
|
||||
htmlHostManagerServlet.addDeployOnStartup=DeployOnStartup
|
||||
htmlHostManagerServlet.addDeployXML=DeployXML
|
||||
htmlHostManagerServlet.addHost=ホスト
|
||||
htmlHostManagerServlet.addManager=Manager アプリケーション
|
||||
htmlHostManagerServlet.addName=名前:
|
||||
htmlHostManagerServlet.addTitle=仮想ホスト追加
|
||||
htmlHostManagerServlet.addUnpackWARs=UnpackWARs
|
||||
htmlHostManagerServlet.helpHtmlManager=HTMLホストマネージャ ヘルプ
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Host Manager ヘルプ
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=Hostエイリアス
|
||||
htmlHostManagerServlet.hostName=ホスト名
|
||||
htmlHostManagerServlet.hostTasks=コマンド
|
||||
htmlHostManagerServlet.hostThis=Host Managerがインストールされています - コマンドが無効です
|
||||
htmlHostManagerServlet.hostsRemove=削除
|
||||
htmlHostManagerServlet.hostsStart=起動
|
||||
htmlHostManagerServlet.hostsStop=停止
|
||||
htmlHostManagerServlet.list=仮想ホスト一覧
|
||||
htmlHostManagerServlet.manager=Host Manager
|
||||
htmlHostManagerServlet.messageLabel=メッセージ:
|
||||
htmlHostManagerServlet.persistAll=現在の設定(仮想ホストを含む)をserver.xmlおよびwebアプリケーションcontext.xmlファイルに保存します。
|
||||
htmlHostManagerServlet.persistAllButton=全て
|
||||
htmlHostManagerServlet.persistTitle=構成維持
|
||||
htmlHostManagerServlet.serverJVMVendor=JVMベンダ
|
||||
htmlHostManagerServlet.serverJVMVersion=JVM バージョン
|
||||
htmlHostManagerServlet.serverOSArch=OS アーキテクチャ
|
||||
htmlHostManagerServlet.serverOSName=OS 名
|
||||
htmlHostManagerServlet.serverOSVersion=OS バージョン
|
||||
htmlHostManagerServlet.serverTitle=Server情報
|
||||
htmlHostManagerServlet.serverVersion=Tomcatバージョン
|
||||
htmlHostManagerServlet.title=Tomcat仮想ホストマネージャ
|
||||
|
||||
statusServlet.complete=完全なサーバステータス
|
||||
statusServlet.title=サーバステータス
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=추가: 호스트 [{0}]을(를) 추가합니다.
|
||||
hostManagerServlet.addFailed=실패 - 호스트 [{0}]을(를) 추가하지 못했습니다.
|
||||
hostManagerServlet.addSuccess=OK - 호스트 [{0}]이(가) 추가되었습니다.
|
||||
hostManagerServlet.alreadyHost=실패 - 이름이 [{0}]인 호스트가 이미 존재합니다.
|
||||
hostManagerServlet.alreadyStarted=실패 - 호스트 [{0}]은(는) 이미 시작되었습니다.
|
||||
hostManagerServlet.alreadyStopped=실패 - 호스트 [{0}]은(는) 이미 중지되었습니다.
|
||||
hostManagerServlet.appBaseCreateFail=실패 - 호스트 [{1}]을(를) 위한 appBase [{0}]을(를) 생성하지 못했습니다.
|
||||
hostManagerServlet.cannotRemoveOwnHost=실패 - 자신의 호스트 [{0}]을(를) 제거할 수는 없습니다.
|
||||
hostManagerServlet.cannotStartOwnHost=실패 - 자기 자신의 호스트 [{0}]을(를) 시작할 수 없습니다.
|
||||
hostManagerServlet.cannotStopOwnHost=실패 - 자신의 호스트 [{0}]을(를) 중지시킬 수 없습니다.
|
||||
hostManagerServlet.configBaseCreateFail=실패 - 호스트 [{0}]을(를) 위한 configBase를 식별하지 못했습니다.
|
||||
hostManagerServlet.exception=실패 - 예외 발생 [{0}]
|
||||
hostManagerServlet.invalidHostName=실패 - 유효하지 않은 호스트 이름 [{0}]이(가) 지정되었습니다.
|
||||
hostManagerServlet.list=목록: 엔진 [{0}]을(를) 위한 호스트들의 목록을 표시합니다.
|
||||
hostManagerServlet.listed=OK - 호스트 목록
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=실패 - manager.xml을 설치할 수 없었습니다.
|
||||
hostManagerServlet.noCommand=실패 - 명령이 지정되지 않았습니다.
|
||||
hostManagerServlet.noHost=실패 - 호스트 이름 [{0}]은(는) 존재하지 않습니다.
|
||||
hostManagerServlet.noWrapper=이 서블릿을 위해, 컨테이너가 setWrapper()를 호출한 적이 없습니다.
|
||||
hostManagerServlet.persist=저장: 현재 설정을 저장합니다.
|
||||
hostManagerServlet.persistFailed=실패 - 설정을 저장하지 못했습니다.
|
||||
hostManagerServlet.persisted=OK - 설정이 저장되었습니다.
|
||||
hostManagerServlet.postCommand=실패 - GET 요청을 통해 명령 [{0}]을(를) 사용하려 시도했지만, POST 메소드가 필수적입니다.
|
||||
hostManagerServlet.remove=제거: 호스트 [{0}]을(를) 제거합니다.
|
||||
hostManagerServlet.removeFailed=실패 - 호스트 [{0}]을(를) 제거하지 못했습니다.
|
||||
hostManagerServlet.removeSuccess=OK - 호스트 [{0}]을(를) 제거했습니다.
|
||||
hostManagerServlet.start=시작: 이름이 [{0}]인 호스트를 시작합니다.
|
||||
hostManagerServlet.startFailed=실패 - 호스트 [{0}]을(를) 시작하지 못했습니다.
|
||||
hostManagerServlet.started=OK - 호스트 [{0}](이)가 시작되었습니다.
|
||||
hostManagerServlet.stop=중지: [{0}](이)라는 이름의 호스트를 중지합니다.
|
||||
hostManagerServlet.stopFailed=실패 - 호스트 [{0}]을(를) 중지시키지 못했습니다.
|
||||
hostManagerServlet.stopped=OK - 호스트 [{0}]이(가) 중지되었습니다.
|
||||
hostManagerServlet.unknownCommand=실패 - 알 수 없는 명령 [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=별칭들:
|
||||
htmlHostManagerServlet.addAppBase=앱 base:
|
||||
htmlHostManagerServlet.addAutoDeploy=자동배치
|
||||
htmlHostManagerServlet.addButton=추가
|
||||
htmlHostManagerServlet.addCopyXML=XML복사
|
||||
htmlHostManagerServlet.addDeployOnStartup=시작 시 배치하기
|
||||
htmlHostManagerServlet.addDeployXML=XML배치
|
||||
htmlHostManagerServlet.addHost=호스트
|
||||
htmlHostManagerServlet.addManager=매니저 앱
|
||||
htmlHostManagerServlet.addName=이름:
|
||||
htmlHostManagerServlet.addTitle=가상 호스트 추가
|
||||
htmlHostManagerServlet.addUnpackWARs=WAR들의 압축 풀기
|
||||
htmlHostManagerServlet.helpHtmlManager=HTML 호스트 매니저 도움말
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=호스트 매니저 도움말
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=호스트의 별칭들
|
||||
htmlHostManagerServlet.hostName=호스트 이름
|
||||
htmlHostManagerServlet.hostTasks=명령들
|
||||
htmlHostManagerServlet.hostThis=호스트 매니저가 설치되었습니다 - 명령들은 사용 불능 상태입니다.
|
||||
htmlHostManagerServlet.hostsRemove=제거
|
||||
htmlHostManagerServlet.hostsStart=시작
|
||||
htmlHostManagerServlet.hostsStop=중지
|
||||
htmlHostManagerServlet.list=가상 호스트들의 목록을 표시
|
||||
htmlHostManagerServlet.manager=호스트 관리자
|
||||
htmlHostManagerServlet.messageLabel=메시지:
|
||||
htmlHostManagerServlet.persistAll=현재 설정을 (가상 호스트들 포함) server.xml과 각 웹 애플리케이션의 context.xml 파일들에 저장합니다.
|
||||
htmlHostManagerServlet.persistAllButton=전부
|
||||
htmlHostManagerServlet.persistTitle=저장 환경 설정
|
||||
htmlHostManagerServlet.serverJVMVendor=JVM 벤더
|
||||
htmlHostManagerServlet.serverJVMVersion=JVM 버전
|
||||
htmlHostManagerServlet.serverOSArch=운영체제 아키첵처
|
||||
htmlHostManagerServlet.serverOSName=운영체제 이름
|
||||
htmlHostManagerServlet.serverOSVersion=운영체제 버전
|
||||
htmlHostManagerServlet.serverTitle=서버 정보
|
||||
htmlHostManagerServlet.serverVersion=Tomcat 버전
|
||||
htmlHostManagerServlet.title=Tomcat 가상 호스트 매니저
|
||||
|
||||
statusServlet.complete=서버 상태 전부
|
||||
statusServlet.title=서버 상태
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=add: Добавление сервера [{0}]
|
||||
hostManagerServlet.addFailed=Ошибка - Не удалось добавить сервер [{0}]
|
||||
hostManagerServlet.addSuccess=OK - Сервер [{0}] добавлен
|
||||
hostManagerServlet.alreadyHost=Ошибка - Уже есть сервер с таким именем [{0}]
|
||||
hostManagerServlet.alreadyStarted=Ошибка - Сервер [{0}] уже запущен
|
||||
hostManagerServlet.alreadyStopped=Ошибка - Сервер [{0}] уже остановлен
|
||||
hostManagerServlet.appBaseCreateFail=Ошибка - Не удалось создать директорию для приложений (appBase) [{0}] для сервера [{1}]
|
||||
hostManagerServlet.cannotRemoveOwnHost=Ошибка - Нельзя удалить свой собственный сервер [{0}]
|
||||
hostManagerServlet.cannotStartOwnHost=Ошибка - Нельзя запустить свой собственный сервер [{0}]
|
||||
hostManagerServlet.cannotStopOwnHost=Ошибка - Нельзя остановить свой собственный сервер {0}
|
||||
hostManagerServlet.configBaseCreateFail=Ошибка - Не удалось определить директорию с файлами конфигурации (configBase) для сервера [{0}]
|
||||
hostManagerServlet.exception=Ошибка - Необычная ситуация [{0}]
|
||||
hostManagerServlet.invalidHostName=Ошибка - Указано недопустимое имя сервера [{0}]
|
||||
hostManagerServlet.list=list: Список серверов для движка [{0}]
|
||||
hostManagerServlet.listed=OK - Список серверов
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=Ошибка - Не удалось создать файл manager.xml
|
||||
hostManagerServlet.noCommand=Ошибка - Команда не указана.
|
||||
hostManagerServlet.noHost=Ошибка - Сервер с указанным именем [{0}] не существует
|
||||
hostManagerServlet.noWrapper=Метод setWrapper() у данного сервлета ещё не был вызван контейнером
|
||||
hostManagerServlet.persist=persist: Сохранение текущей конфигурации
|
||||
hostManagerServlet.persistFailed=Ошибка - Не удалось сохранить конфигурацию
|
||||
hostManagerServlet.persisted=OK - Конфигурация сохранена
|
||||
hostManagerServlet.postCommand=Ошибка - Команда [{0}] была подана при помощи запроса GET, но требуется POST
|
||||
hostManagerServlet.remove=remove: Удаление сервера [{0}]
|
||||
hostManagerServlet.removeFailed=Ошибка - Не удалось удалить сервер [{0}]
|
||||
hostManagerServlet.removeSuccess=OK - Сервер удалён [{0}]
|
||||
hostManagerServlet.start=start: Запуск сервера с именем [{0}]
|
||||
hostManagerServlet.startFailed=Ошибка - Не удалось запустить сервер [{0}]
|
||||
hostManagerServlet.started=OK - Сервер [{0}] запущен
|
||||
hostManagerServlet.stop=stop: Остановка сервера с именем [{0}]
|
||||
hostManagerServlet.stopFailed=Ошибка - Не удалось остановить сервер [{0}]
|
||||
hostManagerServlet.stopped=OK - Сервер [{0}] остановлен
|
||||
hostManagerServlet.unknownCommand=Ошибка - Неизвестная команда [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=Псевдонимы:
|
||||
htmlHostManagerServlet.addAppBase=Директория для приложений (appBase):
|
||||
htmlHostManagerServlet.addAutoDeploy=Автоматическое развёртывание (AutoDeploy)
|
||||
htmlHostManagerServlet.addButton=Добавить
|
||||
htmlHostManagerServlet.addCopyXML=Включить опцию CopyXML
|
||||
htmlHostManagerServlet.addDeployOnStartup=Развёртывание при старте сервера (DeployOnStartup)
|
||||
htmlHostManagerServlet.addDeployXML=Включить опцию DeployXML
|
||||
htmlHostManagerServlet.addHost=Сервер
|
||||
htmlHostManagerServlet.addManager=Установить приложение Manager
|
||||
htmlHostManagerServlet.addName=Имя:
|
||||
htmlHostManagerServlet.addTitle=Добавить виртуальный сервер
|
||||
htmlHostManagerServlet.addUnpackWARs=Включить опцию UnpackWARs
|
||||
htmlHostManagerServlet.helpHtmlManager=Справка для пользователей приложения
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=Справка по API приложения
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=Псевдонимы сервера
|
||||
htmlHostManagerServlet.hostName=Имя сервера
|
||||
htmlHostManagerServlet.hostTasks=Управление
|
||||
htmlHostManagerServlet.hostThis=Приложение Host Manager установлено здесь - команды управления не поддерживаются
|
||||
htmlHostManagerServlet.hostsRemove=Удалить
|
||||
htmlHostManagerServlet.hostsStart=Старт
|
||||
htmlHostManagerServlet.hostsStop=Стоп
|
||||
htmlHostManagerServlet.list=Список виртуальных серверов
|
||||
htmlHostManagerServlet.manager=Управление cервером
|
||||
htmlHostManagerServlet.messageLabel=Сообщение:
|
||||
htmlHostManagerServlet.persistAll=Сохраняет текущие настройки (включая виртуальные хосты) в файл server.xml и в файлы context.xml для веб-приложений
|
||||
htmlHostManagerServlet.persistAllButton=Сохранить всё
|
||||
htmlHostManagerServlet.persistTitle=Сохранить настройки
|
||||
htmlHostManagerServlet.serverJVMVendor=Поставщик JVM
|
||||
htmlHostManagerServlet.serverJVMVersion=Версия JVM
|
||||
htmlHostManagerServlet.serverOSArch=Архитектура ОС
|
||||
htmlHostManagerServlet.serverOSName=ОС
|
||||
htmlHostManagerServlet.serverOSVersion=Версия ОС
|
||||
htmlHostManagerServlet.serverTitle=Информация о сервере
|
||||
htmlHostManagerServlet.serverVersion=Версия Tomcat
|
||||
htmlHostManagerServlet.title=Управление виртуальными серверами Tomcat
|
||||
|
||||
statusServlet.complete=Подробный отчёт о состоянии
|
||||
statusServlet.title=Состояние сервера
|
||||
@@ -0,0 +1,90 @@
|
||||
# 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.
|
||||
|
||||
hostManagerServlet.add=添加:添加主机[{0}]
|
||||
hostManagerServlet.addFailed=失败 - 添加主机 [{0}] 失败
|
||||
hostManagerServlet.addSuccess=确定-添加主机[{0}]
|
||||
hostManagerServlet.alreadyHost=失败 - 主机名称[{0}]已经存在
|
||||
hostManagerServlet.alreadyStarted=失败 - Host[{0}]已经启动。
|
||||
hostManagerServlet.alreadyStopped=失败 - 主机[{0}]已经停止
|
||||
hostManagerServlet.appBaseCreateFail=失败 - 创建appBase目录[{0}]失败,主机:[{1}]
|
||||
hostManagerServlet.cannotRemoveOwnHost=失败 - 无法移除你的主机[{0}]
|
||||
hostManagerServlet.cannotStartOwnHost=失败 - 无法启动主机[{0}]
|
||||
hostManagerServlet.cannotStopOwnHost=失败 - 无法停止主机[{0}]
|
||||
hostManagerServlet.configBaseCreateFail=失败 - 无法识别主机[{0}]的基础配置
|
||||
hostManagerServlet.exception=失败 - 出现异常[{0}]
|
||||
hostManagerServlet.invalidHostName=失败 - 指定的主机名称[{0}]无效
|
||||
hostManagerServlet.list=列表:列出引擎[{0}]的主机
|
||||
hostManagerServlet.listed=OK - 已列出Host
|
||||
hostManagerServlet.listitem=[{0}]:[{1}]
|
||||
hostManagerServlet.managerXml=FAIL - 无法安装manager.xml
|
||||
hostManagerServlet.noCommand=失败 - 未指定命令
|
||||
hostManagerServlet.noHost=失败 - 主机名称[{0}]不存在
|
||||
hostManagerServlet.noWrapper=容器未给当前servlet设置setWrapper()
|
||||
hostManagerServlet.persist=持久化: 正在持久化当前配置
|
||||
hostManagerServlet.persistFailed=失败 - 无法持久化配置
|
||||
hostManagerServlet.persisted=OK - 配置持久化了.
|
||||
hostManagerServlet.postCommand=失败 - 尝试通过GET请求使用命令[{0}],但是需要使用POST请求
|
||||
hostManagerServlet.remove=移除:正在移除主机 [{0}]
|
||||
hostManagerServlet.removeFailed=失败 - 无法移除主机 [{0}]
|
||||
hostManagerServlet.removeSuccess=确定-已删除主机[{0}]
|
||||
hostManagerServlet.start=启动:启动主机[{0}]
|
||||
hostManagerServlet.startFailed=失败 - 无法启动主机 [{0}]
|
||||
hostManagerServlet.started=OK - 主机 [{0}] 已启动
|
||||
hostManagerServlet.stop=停止:停止主机[{0}]
|
||||
hostManagerServlet.stopFailed=失败 - 无法停止主机 [{0}]
|
||||
hostManagerServlet.stopped=OK - 主机 [{0}] 已停止
|
||||
hostManagerServlet.unknownCommand=失败 - 未知命令 [{0}]
|
||||
|
||||
htmlHostManagerServlet.addAliases=别名:
|
||||
htmlHostManagerServlet.addAppBase=应用程序库:
|
||||
htmlHostManagerServlet.addAutoDeploy=自动.部署
|
||||
htmlHostManagerServlet.addButton=添加
|
||||
htmlHostManagerServlet.addCopyXML=拷贝XML
|
||||
htmlHostManagerServlet.addDeployOnStartup=启动.部署
|
||||
htmlHostManagerServlet.addDeployXML=部署XML
|
||||
htmlHostManagerServlet.addHost=主机
|
||||
htmlHostManagerServlet.addManager=管理 App
|
||||
htmlHostManagerServlet.addName=名称
|
||||
htmlHostManagerServlet.addTitle=添加.虚拟主机
|
||||
htmlHostManagerServlet.addUnpackWARs=解压WARs
|
||||
htmlHostManagerServlet.helpHtmlManager=HTML主机管理器帮助
|
||||
htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
|
||||
htmlHostManagerServlet.helpManager=主机管理器帮助
|
||||
htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
|
||||
htmlHostManagerServlet.hostAliases=主机别名
|
||||
htmlHostManagerServlet.hostName=主机名称
|
||||
htmlHostManagerServlet.hostTasks=命令
|
||||
htmlHostManagerServlet.hostThis=主机管理器已安装 - 命令不可用
|
||||
htmlHostManagerServlet.hostsRemove=移除
|
||||
htmlHostManagerServlet.hostsStart=启动
|
||||
htmlHostManagerServlet.hostsStop=停止
|
||||
htmlHostManagerServlet.list=列出虚拟主机
|
||||
htmlHostManagerServlet.manager=主机.管理器
|
||||
htmlHostManagerServlet.messageLabel=消息:
|
||||
htmlHostManagerServlet.persistAll=保存当前配置信息(包括虚拟主机)到server.xml和每个web应用程序context.xml文件里。
|
||||
htmlHostManagerServlet.persistAllButton=全部
|
||||
htmlHostManagerServlet.persistTitle=持久化配置
|
||||
htmlHostManagerServlet.serverJVMVendor=JVM供应商
|
||||
htmlHostManagerServlet.serverJVMVersion=JVM版本
|
||||
htmlHostManagerServlet.serverOSArch=操作系统架构
|
||||
htmlHostManagerServlet.serverOSName=操作系统名称
|
||||
htmlHostManagerServlet.serverOSVersion=操作系统版本
|
||||
htmlHostManagerServlet.serverTitle=服务器信息
|
||||
htmlHostManagerServlet.serverVersion=Tomcat版本
|
||||
htmlHostManagerServlet.title=Tomcat虚拟主机管理员
|
||||
|
||||
statusServlet.complete=服务器全部状态
|
||||
statusServlet.title=服务器状态
|
||||
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* 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.catalina.manager.util;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import org.apache.catalina.Session;
|
||||
|
||||
/**
|
||||
* Comparator which permits to compare on a session's content.
|
||||
*
|
||||
* @param <T> The type of the session content to be compared
|
||||
*
|
||||
* @author Cédrik LIME
|
||||
*/
|
||||
public abstract class BaseSessionComparator<T> implements Comparator<Session> {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public BaseSessionComparator() {
|
||||
super();
|
||||
}
|
||||
|
||||
public abstract Comparable<T> getComparableObject(Session session);
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public final int compare(Session s1, Session s2) {
|
||||
Comparable<T> c1 = getComparableObject(s1);
|
||||
Comparable<T> c2 = getComparableObject(s2);
|
||||
return c1==null ? (c2==null ? 0 : -1) : (c2==null ? 1 : c1.compareTo((T)c2));
|
||||
}
|
||||
}
|
||||
260
java/org/apache/catalina/manager/util/SessionUtils.java
Normal file
260
java/org/apache/catalina/manager/util/SessionUtils.java
Normal file
@@ -0,0 +1,260 @@
|
||||
/*
|
||||
* 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.catalina.manager.util;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.security.Principal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
import javax.security.auth.Subject;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.catalina.Session;
|
||||
import org.apache.tomcat.util.ExceptionUtils;
|
||||
|
||||
/**
|
||||
* Utility methods on HttpSessions...
|
||||
* @author Cédrik LIME
|
||||
*/
|
||||
public class SessionUtils {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private SessionUtils() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* The session attributes key under which the user's selected
|
||||
* <code>java.util.Locale</code> is stored, if any.
|
||||
*/
|
||||
// org.apache.struts.Globals.LOCALE_KEY
|
||||
private static final String STRUTS_LOCALE_KEY = "org.apache.struts.action.LOCALE";//$NON-NLS-1$
|
||||
// javax.servlet.jsp.jstl.core.Config.FMT_LOCALE
|
||||
private static final String JSTL_LOCALE_KEY = "javax.servlet.jsp.jstl.fmt.locale";//$NON-NLS-1$
|
||||
// org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME
|
||||
private static final String SPRING_LOCALE_KEY = "org.springframework.web.servlet.i18n.SessionLocaleResolver.LOCALE";//$NON-NLS-1$
|
||||
/**
|
||||
* Lower and upper-case strings will be dynamically generated. Put mid-capitalised strings here!
|
||||
*/
|
||||
private static final String[] LOCALE_TEST_ATTRIBUTES = new String[] {
|
||||
STRUTS_LOCALE_KEY, SPRING_LOCALE_KEY, JSTL_LOCALE_KEY, "Locale", "java.util.Locale" };
|
||||
/**
|
||||
* For efficient operation, list the attributes here with the typically used
|
||||
* capitalisation. This will be tried first and then the auto-generated
|
||||
* upper and lower case versions will be tried.
|
||||
*/
|
||||
private static final String[] USER_TEST_ATTRIBUTES = new String[] {
|
||||
"Login", "User", "userName", "UserName", "Utilisateur",
|
||||
"SPRING_SECURITY_LAST_USERNAME"};
|
||||
|
||||
/**
|
||||
* Try to get user locale from the session, if possible.
|
||||
* IMPLEMENTATION NOTE: this method has explicit support for Tapestry 3, Struts 1.x and Spring
|
||||
* JSF check the browser meta tag "accept languages" to choose what language to display.
|
||||
* @param in_session The session
|
||||
* @return the locale
|
||||
*/
|
||||
public static Locale guessLocaleFromSession(final Session in_session) {
|
||||
return guessLocaleFromSession(in_session.getSession());
|
||||
}
|
||||
public static Locale guessLocaleFromSession(final HttpSession in_session) {
|
||||
if (null == in_session) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
Locale locale = null;
|
||||
|
||||
// First search "known locations"
|
||||
for (int i = 0; i < LOCALE_TEST_ATTRIBUTES.length; ++i) {
|
||||
Object obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i]);
|
||||
if (obj instanceof Locale) {
|
||||
locale = (Locale) obj;
|
||||
break;
|
||||
}
|
||||
obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i].toLowerCase(Locale.ENGLISH));
|
||||
if (obj instanceof Locale) {
|
||||
locale = (Locale) obj;
|
||||
break;
|
||||
}
|
||||
obj = in_session.getAttribute(LOCALE_TEST_ATTRIBUTES[i].toUpperCase(Locale.ENGLISH));
|
||||
if (obj instanceof Locale) {
|
||||
locale = (Locale) obj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (null != locale) {
|
||||
return locale;
|
||||
}
|
||||
|
||||
// Tapestry 3.0: Engine stored in session under "org.apache.tapestry.engine:" + config.getServletName()
|
||||
// TODO: Tapestry 4+
|
||||
final List<Object> tapestryArray = new ArrayList<>();
|
||||
for (Enumeration<String> enumeration = in_session.getAttributeNames(); enumeration.hasMoreElements();) {
|
||||
String name = enumeration.nextElement();
|
||||
if (name.indexOf("tapestry") > -1 && name.indexOf("engine") > -1 && null != in_session.getAttribute(name)) {//$NON-NLS-1$ //$NON-NLS-2$
|
||||
tapestryArray.add(in_session.getAttribute(name));
|
||||
}
|
||||
}
|
||||
if (tapestryArray.size() == 1) {
|
||||
// found a potential Engine! Let's call getLocale() on it.
|
||||
Object probableEngine = tapestryArray.get(0);
|
||||
if (null != probableEngine) {
|
||||
try {
|
||||
Method readMethod = probableEngine.getClass().getMethod("getLocale", (Class<?>[])null);//$NON-NLS-1$
|
||||
// Call the property getter and return the value
|
||||
Object possibleLocale = readMethod.invoke(probableEngine, (Object[]) null);
|
||||
if (possibleLocale instanceof Locale) {
|
||||
locale = (Locale) possibleLocale;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Throwable t = ExceptionUtils
|
||||
.unwrapInvocationTargetException(e);
|
||||
ExceptionUtils.handleThrowable(t);
|
||||
// stay silent
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (null != locale) {
|
||||
return locale;
|
||||
}
|
||||
|
||||
// Last guess: iterate over all attributes, to find a Locale
|
||||
// If there is only one, consider it to be /the/ locale
|
||||
final List<Object> localeArray = new ArrayList<>();
|
||||
for (Enumeration<String> enumeration = in_session.getAttributeNames(); enumeration.hasMoreElements();) {
|
||||
String name = enumeration.nextElement();
|
||||
Object obj = in_session.getAttribute(name);
|
||||
if (obj instanceof Locale) {
|
||||
localeArray.add(obj);
|
||||
}
|
||||
}
|
||||
if (localeArray.size() == 1) {
|
||||
locale = (Locale) localeArray.get(0);
|
||||
}
|
||||
|
||||
return locale;
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to get user from the session, if possible.
|
||||
* @param in_session The session
|
||||
* @return the user
|
||||
*/
|
||||
public static Object guessUserFromSession(final Session in_session) {
|
||||
if (null == in_session) {
|
||||
return null;
|
||||
}
|
||||
if (in_session.getPrincipal() != null) {
|
||||
return in_session.getPrincipal().getName();
|
||||
}
|
||||
HttpSession httpSession = in_session.getSession();
|
||||
if (httpSession == null)
|
||||
return null;
|
||||
|
||||
try {
|
||||
Object user = null;
|
||||
// First search "known locations"
|
||||
for (int i = 0; i < USER_TEST_ATTRIBUTES.length; ++i) {
|
||||
Object obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i]);
|
||||
if (null != obj) {
|
||||
user = obj;
|
||||
break;
|
||||
}
|
||||
obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i].toLowerCase(Locale.ENGLISH));
|
||||
if (null != obj) {
|
||||
user = obj;
|
||||
break;
|
||||
}
|
||||
obj = httpSession.getAttribute(USER_TEST_ATTRIBUTES[i].toUpperCase(Locale.ENGLISH));
|
||||
if (null != obj) {
|
||||
user = obj;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (null != user) {
|
||||
return user;
|
||||
}
|
||||
|
||||
// Last guess: iterate over all attributes, to find a java.security.Principal or javax.security.auth.Subject
|
||||
// If there is only one, consider it to be /the/ user
|
||||
final List<Object> principalArray = new ArrayList<>();
|
||||
for (Enumeration<String> enumeration = httpSession.getAttributeNames(); enumeration.hasMoreElements();) {
|
||||
String name = enumeration.nextElement();
|
||||
Object obj = httpSession.getAttribute(name);
|
||||
if (obj instanceof Principal || obj instanceof Subject) {
|
||||
principalArray.add(obj);
|
||||
}
|
||||
}
|
||||
if (principalArray.size() == 1) {
|
||||
user = principalArray.get(0);
|
||||
}
|
||||
|
||||
if (null != user) {
|
||||
return user;
|
||||
}
|
||||
|
||||
return user;
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static long getUsedTimeForSession(Session in_session) {
|
||||
try {
|
||||
long diffMilliSeconds = in_session.getThisAccessedTime() - in_session.getCreationTime();
|
||||
return diffMilliSeconds;
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static long getTTLForSession(Session in_session) {
|
||||
try {
|
||||
long diffMilliSeconds = (1000*in_session.getMaxInactiveInterval()) - (System.currentTimeMillis() - in_session.getThisAccessedTime());
|
||||
return diffMilliSeconds;
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
public static long getInactiveTimeForSession(Session in_session) {
|
||||
try {
|
||||
long diffMilliSeconds = System.currentTimeMillis() - in_session.getThisAccessedTime();
|
||||
return diffMilliSeconds;
|
||||
} catch (IllegalStateException ise) {
|
||||
//ignore: invalidated session
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user