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: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org