init
This commit is contained in:
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=服务器状态
|
||||
Reference in New Issue
Block a user