Author: markt
Date: Fri Aug 31 16:08:45 2018
New Revision: 1839765
URL: http://svn.apache.org/viewvc?rev=1839765&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=62666
Expand internationalisation support in the Manager application to include the
server status page and provide Russian translations in addition to English.
Patch provided by Artem Chebykin.
Modified:
tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
tomcat/trunk/java/org/apache/catalina/manager/LocalStrings_ru.properties
tomcat/trunk/java/org/apache/catalina/manager/StatusManagerServlet.java
tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties?rev=1839765&r1=1839764&r2=1839765&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
[UTF-8] (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/LocalStrings.properties
[UTF-8] Fri Aug 31 16:08:45 2018
@@ -136,3 +136,38 @@ managerServlet.unknownCommand=FAIL - Unk
managerServlet.vminfo=OK - VM info
statusServlet.title=Server Status
statusServlet.complete=Complete Server Status
+htmlManagerServlet.osPhysicalMemory=Physical memory:
+htmlManagerServlet.osAvailableMemory=Available memory:
+htmlManagerServlet.osTotalPageFile=Total page file:
+htmlManagerServlet.osFreePageFile=Free page file:
+htmlManagerServlet.osMemoryLoad=Memory load:
+htmlManagerServlet.osKernelTime=Process kernel time:
+htmlManagerServlet.osUserTime=Process user time:
+htmlManagerServlet.jvmFreeMemory=Free Memory:
+htmlManagerServlet.jvmMaxMemory=Max Memory:
+htmlManagerServlet.jvmTotalMemory=Total Memory:
+htmlManagerServlet.jvmTableTitleMemoryPool=Memory Pool
+htmlManagerServlet.jvmTableTitleType=Type
+htmlManagerServlet.jvmTableTitleInitial=Initial
+htmlManagerServlet.jvmTableTitleTotal=Total
+htmlManagerServlet.jvmTableTitleMaximum=Maximum
+htmlManagerServlet.jvmTableTitleUsed=Used
+htmlManagerServlet.connectorStateMaxThreads=Max threads:
+htmlManagerServlet.connectorStateThreadCount=Current thread count:
+htmlManagerServlet.connectorStateThreadBusy=Current thread busy:
+htmlManagerServlet.connectorStateAliveSocketCount=Keep alive sockets count:
+htmlManagerServlet.connectorStateMaxProcessingTime=Max processing time:
+htmlManagerServlet.connectorStateProcessingTime=Processing time:
+htmlManagerServlet.connectorStateRequestCount=Request count:
+htmlManagerServlet.connectorStateErrorCount=Error count:
+htmlManagerServlet.connectorStateBytesRecieved=Bytes received:
+htmlManagerServlet.connectorStateBytesSent=Bytes sent:
+htmlManagerServlet.connectorStateTableTitleStage=Stage
+htmlManagerServlet.connectorStateTableTitleTime=Time
+htmlManagerServlet.connectorStateTableTitleBSent=B Sent
+htmlManagerServlet.connectorStateTableTitleBRecv=B Recv
+htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwarded)
+htmlManagerServlet.connectorStateTableTitleClientAct=Client (Actual)
+htmlManagerServlet.connectorStateTableTitleVHost=VHost
+htmlManagerServlet.connectorStateTableTitleRequest=Request
+htmlManagerServlet.connectorStateHint=P: Parse and prepare request S: Service
F: Finishing R: Ready K: Keepalive
Modified:
tomcat/trunk/java/org/apache/catalina/manager/LocalStrings_ru.properties
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/LocalStrings_ru.properties?rev=1839765&r1=1839764&r2=1839765&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/LocalStrings_ru.properties
[UTF-8] (original)
+++ tomcat/trunk/java/org/apache/catalina/manager/LocalStrings_ru.properties
[UTF-8] Fri Aug 31 16:08:45 2018
@@ -136,3 +136,38 @@ managerServlet.unknownCommand=ОШИБК
managerServlet.vminfo=OK - VM инфо
statusServlet.title=Состояние сервера
statusServlet.complete=Состояние сервера
+htmlManagerServlet.osPhysicalMemory=Физическая память:
+htmlManagerServlet.osAvailableMemory=Доступная память:
+htmlManagerServlet.osTotalPageFile=Всего файловых страниц:
+htmlManagerServlet.osFreePageFile=Свободные файловые страницы:
+htmlManagerServlet.osMemoryLoad=Памяти Загружено:
+htmlManagerServlet.osKernelTime=Время Обработки процесса ядром:
+htmlManagerServlet.osUserTime=Время обработки пользователя:
+htmlManagerServlet.jvmFreeMemory=Свободная Память:
+htmlManagerServlet.jvmMaxMemory=Максимум памяти:
+htmlManagerServlet.jvmTotalMemory=Вся память:
+htmlManagerServlet.jvmTableTitleMemoryPool=Области памяти
+htmlManagerServlet.jvmTableTitleType=Тип
+htmlManagerServlet.jvmTableTitleInitial=Изначально
+htmlManagerServlet.jvmTableTitleTotal=Всего
+htmlManagerServlet.jvmTableTitleMaximum=Максимум
+htmlManagerServlet.jvmTableTitleUsed=Используется
+htmlManagerServlet.connectorStateMaxThreads=Максимум процессов:
+htmlManagerServlet.connectorStateThreadCount=Нынешнее число процессов:
+htmlManagerServlet.connectorStateThreadBusy=Нынешнее число занятых процессов:
+htmlManagerServlet.connectorStateAliveSocketCount=Количество всё ещё живых
сокетов:
+htmlManagerServlet.connectorStateMaxProcessingTime=Максимальное процессорное
время:
+htmlManagerServlet.connectorStateProcessingTime=Процессорное время:
+htmlManagerServlet.connectorStateRequestCount=Количество запросов:
+htmlManagerServlet.connectorStateErrorCount=Количество ошибок:
+htmlManagerServlet.connectorStateBytesRecieved=Байтов получено:
+htmlManagerServlet.connectorStateBytesSent=Байтов отправлено:
+htmlManagerServlet.connectorStateTableTitleStage=Этап
+htmlManagerServlet.connectorStateTableTitleTime=Время
+htmlManagerServlet.connectorStateTableTitleBSent=Б Отпрвлено
+htmlManagerServlet.connectorStateTableTitleBRecv=Б Получено
+htmlManagerServlet.connectorStateTableTitleClientForw=Клиент (Отосланый)
+htmlManagerServlet.connectorStateTableTitleClientAct=Клиент (Настоящий)
+htmlManagerServlet.connectorStateTableTitleVHost=ВХост
+htmlManagerServlet.connectorStateTableTitleRequest=Запросы
+htmlManagerServlet.connectorStateHint=P: Разбирается и готовится к отправки S:
Сервис F: Завершение R: Готов K: Продолжает существовать
Modified:
tomcat/trunk/java/org/apache/catalina/manager/StatusManagerServlet.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/StatusManagerServlet.java?rev=1839765&r1=1839764&r2=1839765&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/StatusManagerServlet.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/StatusManagerServlet.java Fri
Aug 31 16:08:45 2018
@@ -283,20 +283,59 @@ public class StatusManagerServlet
try {
// Display operating system statistics using APR if available
- StatusTransformer.writeOSState(writer,mode);
+ args = new Object[7];
+ args[0] = sm.getString("htmlManagerServlet.osPhysicalMemory");
+ args[1] = sm.getString("htmlManagerServlet.osAvailableMemory");
+ args[2] = sm.getString("htmlManagerServlet.osTotalPageFile");
+ args[3] = sm.getString("htmlManagerServlet.osFreePageFile");
+ args[4] = sm.getString("htmlManagerServlet.osMemoryLoad");
+ args[5] = sm.getString("htmlManagerServlet.osKernelTime");
+ args[6] = sm.getString("htmlManagerServlet.osUserTime");
+ StatusTransformer.writeOSState(writer, mode, args);
// Display virtual machine statistics
- StatusTransformer.writeVMState(writer,mode);
+ args = new Object[9];
+ args[0] = sm.getString("htmlManagerServlet.jvmFreeMemory");
+ args[1] = sm.getString("htmlManagerServlet.jvmTotalMemory");
+ args[2] = sm.getString("htmlManagerServlet.jvmMaxMemory");
+ args[3] =
sm.getString("htmlManagerServlet.jvmTableTitleMemoryPool");
+ args[4] = sm.getString("htmlManagerServlet.jvmTableTitleType");
+ args[5] = sm.getString("htmlManagerServlet.jvmTableTitleInitial");
+ args[6] = sm.getString("htmlManagerServlet.jvmTableTitleTotal");
+ args[7] = sm.getString("htmlManagerServlet.jvmTableTitleMaximum");
+ args[8] = sm.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] =
sm.getString("htmlManagerServlet.connectorStateMaxThreads");
+ args[1] =
sm.getString("htmlManagerServlet.connectorStateThreadCount");
+ args[2] =
sm.getString("htmlManagerServlet.connectorStateThreadBusy");
+ args[3] =
sm.getString("htmlManagerServlet.connectorStateAliveSocketCount");
+ args[4] =
sm.getString("htmlManagerServlet.connectorStateMaxProcessingTime");
+ args[5] =
sm.getString("htmlManagerServlet.connectorStateProcessingTime");
+ args[6] =
sm.getString("htmlManagerServlet.connectorStateRequestCount");
+ args[7] =
sm.getString("htmlManagerServlet.connectorStateErrorCount");
+ args[8] =
sm.getString("htmlManagerServlet.connectorStateBytesRecieved");
+ args[9] =
sm.getString("htmlManagerServlet.connectorStateBytesSent");
+ args[10] =
sm.getString("htmlManagerServlet.connectorStateTableTitleStage");
+ args[11] =
sm.getString("htmlManagerServlet.connectorStateTableTitleTime");
+ args[12] =
sm.getString("htmlManagerServlet.connectorStateTableTitleBSent");
+ args[13] =
sm.getString("htmlManagerServlet.connectorStateTableTitleBRecv");
+ args[14] =
sm.getString("htmlManagerServlet.connectorStateTableTitleClientForw");
+ args[15] =
sm.getString("htmlManagerServlet.connectorStateTableTitleClientAct");
+ args[16] =
sm.getString("htmlManagerServlet.connectorStateTableTitleVHost");
+ args[17] =
sm.getString("htmlManagerServlet.connectorStateTableTitleRequest");
+ args[18] =
sm.getString("htmlManagerServlet.connectorStateHint");
// use StatusTransformer to output status
StatusTransformer.writeConnectorState
(writer, objectName,
name, mBeanServer, globalRequestProcessors,
- requestProcessors, mode);
+ requestProcessors, mode, args);
}
if ((request.getPathInfo() != null)
Modified: tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java?rev=1839765&r1=1839764&r2=1839765&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java Fri
Aug 31 16:08:45 2018
@@ -147,9 +147,10 @@ public class StatusTransformer {
*
* @param writer The output writer
* @param mode Mode <code>0</code> will generate HTML.
- * Mode <code>1</code> will generate XML.
+ * Mode <code>1</code> will generate XML.
+ * @param args I18n labels for the OS state values
*/
- public static void writeOSState(PrintWriter writer, int mode) {
+ public static void writeOSState(PrintWriter writer, int mode, Object[]
args) {
long[] result = new long[16];
boolean ok = false;
try {
@@ -172,20 +173,20 @@ public class StatusTransformer {
writer.print("<h1>OS</h1>");
writer.print("<p>");
- writer.print(" Physical memory: ");
+ writer.print( args[0] );
writer.print(formatSize(Long.valueOf(result[0]), true));
- writer.print(" Available memory: ");
+ writer.print(" " + args[1]);
writer.print(formatSize(Long.valueOf(result[1]), true));
- writer.print(" Total page file: ");
+ writer.print(" " + args[2]);
writer.print(formatSize(Long.valueOf(result[2]), true));
- writer.print(" Free page file: ");
+ writer.print(" " + args[3]);
writer.print(formatSize(Long.valueOf(result[3]), true));
- writer.print(" Memory load: ");
+ writer.print(" " + args[4]);
writer.print(Long.valueOf(result[6]));
writer.print("<br>");
- writer.print(" Process kernel time: ");
+ writer.print(" " + args[5]);
writer.print(formatTime(Long.valueOf(result[11] / 1000),
true));
- writer.print(" Process user time: ");
+ writer.print(" " + args[6]);
writer.print(formatTime(Long.valueOf(result[12] / 1000),
true));
writer.print("</p>");
} else if (mode == 1){
@@ -200,10 +201,11 @@ public class StatusTransformer {
* Write the VM state.
* @param writer The output writer
* @param mode Mode <code>0</code> will generate HTML.
- * Mode <code>1</code> will generate XML.
+ * Mode <code>1</code> will generate XML.
+ * @param args I18n labels for the VM state values
* @throws Exception Propagated JMX error
*/
- public static void writeVMState(PrintWriter writer, int mode)
+ public static void writeVMState(PrintWriter writer, int mode, Object[]
args)
throws Exception {
SortedMap<String, MemoryPoolMXBean> memoryPoolMBeans = new TreeMap<>();
@@ -216,18 +218,18 @@ public class StatusTransformer {
writer.print("<h1>JVM</h1>");
writer.print("<p>");
- writer.print(" Free memory: ");
+ writer.print( args[0] );
writer.print(formatSize(
Long.valueOf(Runtime.getRuntime().freeMemory()), true));
- writer.print(" Total memory: ");
+ writer.print(" " + args[1] );
writer.print(formatSize(
Long.valueOf(Runtime.getRuntime().totalMemory()), true));
- writer.print(" Max memory: ");
+ writer.print(" " + args[2] );
writer.print(formatSize(
Long.valueOf(Runtime.getRuntime().maxMemory()), true));
writer.print("</p>");
- writer.write("<table border=\"0\"><thead><tr><th>Memory
Pool</th><th>Type</th><th>Initial</th><th>Total</th><th>Maximum</th><th>Used</th></tr></thead><tbody>");
+ writer.write("<table border=\"0\"><thead><tr><th>" + args[3] +
"</th><th>" + args[4] + "</th><th>" + args[5] + "</th><th>" + args[6] +
"</th><th>" + args[7] + "</th><th>" + args[8] + "</th></tr></thead><tbody>");
for (MemoryPoolMXBean memoryPoolMBean : memoryPoolMBeans.values())
{
MemoryUsage usage = memoryPoolMBean.getUsage();
writer.write("<tr><td>");
@@ -283,13 +285,14 @@ public class StatusTransformer {
* @param globalRequestProcessors MBean names for the global request
processors
* @param requestProcessors MBean names for the request processors
* @param mode Mode <code>0</code> will generate HTML.
- * Mode <code>1</code> will generate XML.
+ * Mode <code>1</code> will generate XML.
+ * @param args I18n labels for the Connector state values
* @throws Exception Propagated JMX error
*/
public static void writeConnectorState(PrintWriter writer,
ObjectName tpName, String name, MBeanServer mBeanServer,
Vector<ObjectName> globalRequestProcessors,
- Vector<ObjectName> requestProcessors, int mode) throws Exception {
+ Vector<ObjectName> requestProcessors, int mode, Object[] args)
throws Exception {
if (mode == 0) {
writer.print("<h1>");
@@ -297,15 +300,15 @@ public class StatusTransformer {
writer.print("</h1>");
writer.print("<p>");
- writer.print(" Max threads: ");
+ writer.print( args[0] );
writer.print(mBeanServer.getAttribute(tpName, "maxThreads"));
- writer.print(" Current thread count: ");
+ writer.print(" " + args[1]);
writer.print(mBeanServer.getAttribute(tpName,
"currentThreadCount"));
- writer.print(" Current thread busy: ");
+ writer.print(" " + args[2]);
writer.print(mBeanServer.getAttribute(tpName,
"currentThreadsBusy"));
try {
Object value = mBeanServer.getAttribute(tpName,
"keepAliveCount");
- writer.print(" Keep alive sockets count: ");
+ writer.print(" " + args[3]);
writer.print(value);
} catch (Exception e) {
// Ignore
@@ -328,25 +331,25 @@ public class StatusTransformer {
return;
}
- writer.print(" Max processing time: ");
+ writer.print( args[4] );
writer.print(formatTime(mBeanServer.getAttribute
(grpName, "maxTime"), false));
- writer.print(" Processing time: ");
+ writer.print(" " + args[5]);
writer.print(formatTime(mBeanServer.getAttribute
(grpName, "processingTime"), true));
- writer.print(" Request count: ");
+ writer.print(" " + args[6]);
writer.print(mBeanServer.getAttribute(grpName, "requestCount"));
- writer.print(" Error count: ");
+ writer.print(" " + args[7]);
writer.print(mBeanServer.getAttribute(grpName, "errorCount"));
- writer.print(" Bytes received: ");
+ writer.print(" " + args[8]);
writer.print(formatSize(mBeanServer.getAttribute
(grpName, "bytesReceived"), true));
- writer.print(" Bytes sent: ");
+ writer.print(" " + args[9]);
writer.print(formatSize(mBeanServer.getAttribute
(grpName, "bytesSent"), true));
writer.print("</p>");
- writer.print("<table
border=\"0\"><tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B
Recv</th><th>Client (Forwarded)</th><th>Client
(Actual)</th><th>VHost</th><th>Request</th></tr>");
+ writer.print("<table border=\"0\"><tr><th>"+ args[10] +
"</th><th>" + args[11] + "</th><th>" + args[12] +"</th><th>" + args[13]
+"</th><th>" + args[14] + "</th><th>" + args[15] + "</th><th>" + args[16] +
"</th><th>" + args[17] + "</th></tr>");
enumeration = requestProcessors.elements();
while (enumeration.hasMoreElements()) {
@@ -361,7 +364,7 @@ public class StatusTransformer {
writer.print("</table>");
writer.print("<p>");
- writer.print("P: Parse and prepare request S: Service F: Finishing
R: Ready K: Keepalive");
+ writer.print( args[18] );
writer.print("</p>");
} else if (mode == 1){
writer.write("<connector name='" + name + "'>");
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1839765&r1=1839764&r2=1839765&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Aug 31 16:08:45 2018
@@ -101,6 +101,12 @@
packaged in Tomcat 9.0.x is DBCP 2. Correct the names of some DBCP 2
configuration attributes that changed between 1.x and 2.x. (markt)
</fix>
+ <add>
+ <bug>62666</bug>: Expand internationalisation support in the Manager
+ application to include the server status page and provide Russian
+ translations in addition to English. Patch provided by Artem Chebykin.
+ (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Other">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]