changeset 17735:83b8469d9ea3

8186932: Fix accessibility issues in the java.management module Reviewed-by: mchung
author jjg
date Wed, 30 Aug 2017 12:45:43 -0700
parents 4ab6d768430f
children 5a28f7ef36da
files src/java.management/share/classes/java/lang/management/LockInfo.java src/java.management/share/classes/java/lang/management/ManagementFactory.java src/java.management/share/classes/java/lang/management/ManagementPermission.java src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java src/java.management/share/classes/java/lang/management/MemoryUsage.java src/java.management/share/classes/java/lang/management/MonitorInfo.java src/java.management/share/classes/java/lang/management/RuntimeMXBean.java src/java.management/share/classes/java/lang/management/ThreadInfo.java src/java.management/share/classes/javax/management/Descriptor.java src/java.management/share/classes/javax/management/DescriptorKey.java src/java.management/share/classes/javax/management/MXBean.java src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java
diffstat 17 files changed, 397 insertions(+), 333 deletions(-) [+]
line wrap: on
line diff
--- a/src/java.management/share/classes/java/lang/management/LockInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/LockInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -104,23 +104,25 @@
      * Returns a {@code LockInfo} object represented by the
      * given {@code CompositeData}.
      * The given {@code CompositeData} must contain the following attributes:
-     * <blockquote>
-     * <table border="1">
+     * <table class="striped" style="margin-left:2em;">
      * <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
+     * <thead style="text-align:left">
      * <tr>
-     *   <th style="text-align:left">Attribute Name</th>
-     *   <th style="text-align:left">Type</th>
+     *   <th scope="col">Attribute Name</th>
+     *   <th scope="col">Type</th>
      * </tr>
+     * </thead>
+     * <tbody style="text-align:left">
      * <tr>
-     *   <td>className</td>
+     *   <th scope="row">className</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td>identityHashCode</td>
+     *   <th scope="row">identityHashCode</th>
      *   <td>{@code java.lang.Integer}</td>
      * </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @param cd {@code CompositeData} representing a {@code LockInfo}
      *
--- a/src/java.management/share/classes/java/lang/management/ManagementFactory.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/ManagementFactory.java	Wed Aug 30 12:45:43 2017 -0700
@@ -140,96 +140,102 @@
  * A Java virtual machine has a single instance of the following management
  * interfaces:
  *
- * <blockquote>
- * <table border="1">
+ * <table class="striped" style="margin-left:2em">
  * <caption style="display:none">The list of Management Interfaces and their single instances</caption>
+ * <thead>
  * <tr>
- * <th>Management Interface</th>
- * <th>ObjectName</th>
+ * <th scope="col">Management Interface</th>
+ * <th scope="col">ObjectName</th>
  * </tr>
+ * </thead>
+ * <tbody style="text-align:left;">
  * <tr>
- * <td> {@link ClassLoadingMXBean} </td>
+ * <th scope="row"> {@link ClassLoadingMXBean} </th>
  * <td> {@link #CLASS_LOADING_MXBEAN_NAME
  *             java.lang:type=ClassLoading}</td>
  * </tr>
  * <tr>
- * <td> {@link MemoryMXBean} </td>
+ * <th scope="row"> {@link MemoryMXBean} </th>
  * <td> {@link #MEMORY_MXBEAN_NAME
  *             java.lang:type=Memory}</td>
  * </tr>
  * <tr>
- * <td> {@link ThreadMXBean} </td>
+ * <th scope="row"> {@link ThreadMXBean} </th>
  * <td> {@link #THREAD_MXBEAN_NAME
  *             java.lang:type=Threading}</td>
  * </tr>
  * <tr>
- * <td> {@link RuntimeMXBean} </td>
+ * <th scope="row"> {@link RuntimeMXBean} </th>
  * <td> {@link #RUNTIME_MXBEAN_NAME
  *             java.lang:type=Runtime}</td>
  * </tr>
  * <tr>
- * <td> {@link OperatingSystemMXBean} </td>
+ * <th scope="row"> {@link OperatingSystemMXBean} </th>
  * <td> {@link #OPERATING_SYSTEM_MXBEAN_NAME
  *             java.lang:type=OperatingSystem}</td>
  * </tr>
  * <tr>
- * <td> {@link PlatformLoggingMXBean} </td>
+ * <th scope="row"> {@link PlatformLoggingMXBean} </th>
  * <td> {@link java.util.logging.LogManager#LOGGING_MXBEAN_NAME
  *             java.util.logging:type=Logging}</td>
  * </tr>
+ * </tbody>
  * </table>
- * </blockquote>
  *
  * <p>
  * A Java virtual machine has zero or a single instance of
  * the following management interfaces.
  *
- * <blockquote>
- * <table border="1">
+ * <table class="striped" style="margin-left:2em">
  * <caption style="display:none">The list of Management Interfaces and their single instances</caption>
+ * <thead>
  * <tr>
- * <th>Management Interface</th>
- * <th>ObjectName</th>
+ * <th scope="col">Management Interface</th>
+ * <th scope="col">ObjectName</th>
  * </tr>
+ * </thead>
+ * <tbody style="text-align:left;">
  * <tr>
- * <td> {@link CompilationMXBean} </td>
+ * <th scope="row"> {@link CompilationMXBean} </th>
  * <td> {@link #COMPILATION_MXBEAN_NAME
  *             java.lang:type=Compilation}</td>
  * </tr>
+ * </tbody>
  * </table>
- * </blockquote>
  *
  * <p>
  * A Java virtual machine may have one or more instances of the following
  * management interfaces.
- * <blockquote>
- * <table border="1">
+ * <table class="striped" style="margin-left:2em">
  * <caption style="display:none">The list of Management Interfaces and their single instances</caption>
+ * <thead>
  * <tr>
- * <th>Management Interface</th>
- * <th>ObjectName</th>
+ * <th scope="col">Management Interface</th>
+ * <th scope="col">ObjectName</th>
  * </tr>
+ * </thead>
+ * <tbody style="text-align:left;">
  * <tr>
- * <td> {@link GarbageCollectorMXBean} </td>
+ * <th scope="row"> {@link GarbageCollectorMXBean} </th>
  * <td> {@link #GARBAGE_COLLECTOR_MXBEAN_DOMAIN_TYPE
  *             java.lang:type=GarbageCollector}{@code ,name=}<i>collector's name</i></td>
  * </tr>
  * <tr>
- * <td> {@link MemoryManagerMXBean} </td>
+ * <th scope="row"> {@link MemoryManagerMXBean} </th>
  * <td> {@link #MEMORY_MANAGER_MXBEAN_DOMAIN_TYPE
  *             java.lang:type=MemoryManager}{@code ,name=}<i>manager's name</i></td>
  * </tr>
  * <tr>
- * <td> {@link MemoryPoolMXBean} </td>
+ * <th scope="row"> {@link MemoryPoolMXBean} </th>
  * <td> {@link #MEMORY_POOL_MXBEAN_DOMAIN_TYPE
  *             java.lang:type=MemoryPool}{@code ,name=}<i>pool's name</i></td>
  * </tr>
  * <tr>
- * <td> {@link BufferPoolMXBean} </td>
+ * <th scope="row"> {@link BufferPoolMXBean} </th>
  * <td> {@code java.nio:type=BufferPool,name=}<i>pool name</i></td>
  * </tr>
+ * </tbody>
  * </table>
- * </blockquote>
  *
  * @see <a href="../../../javax/management/package-summary.html">
  *      JMX Specification</a>
--- a/src/java.management/share/classes/java/lang/management/ManagementPermission.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/ManagementPermission.java	Wed Aug 30 12:45:43 2017 -0700
@@ -36,14 +36,17 @@
  *
  * <table class="striped">
  * <caption style="display:none">Table shows permission target name, what the permission allows, and associated risks</caption>
+ * <thead>
  * <tr>
- * <th>Permission Target Name</th>
- * <th>What the Permission Allows</th>
- * <th>Risks of Allowing this Permission</th>
+ * <th scope="col">Permission Target Name</th>
+ * <th scope="col">What the Permission Allows</th>
+ * <th scope="col">Risks of Allowing this Permission</th>
  * </tr>
+ * </thead>
+ * <tbody style="text=align:left">
  *
  * <tr>
- *   <td>control</td>
+ *   <th scope="row">control</th>
  *   <td>Ability to control the runtime characteristics of the Java virtual
  *       machine, for example, enabling and disabling the verbose output for
  *       the class loading or memory system, setting the threshold of a memory
@@ -59,7 +62,7 @@
  *   </td>
  * </tr>
  * <tr>
- *   <td>monitor</td>
+ *   <th scope="row">monitor</th>
  *   <td>Ability to retrieve runtime information about
  *       the Java virtual machine such as thread
  *       stack trace, a list of all loaded class names, and input arguments
@@ -68,6 +71,7 @@
  *       uncover vulnerabilities.</td>
  * </tr>
  *
+ * </tbody>
  * </table>
  *
  * <p>
--- a/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/MemoryNotificationInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -211,27 +211,29 @@
      * given {@code CompositeData}.
      * The given {@code CompositeData} must contain
      * the following attributes:
-     * <blockquote>
-     * <table border="1">
+     * <table class="striped" style="margin-left:2em">
      * <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
+     * <thead>
      * <tr>
-     *   <th style="text-align:left">Attribute Name</th>
-     *   <th style="text-align:left">Type</th>
+     *   <th scope="col">Attribute Name</th>
+     *   <th scope="col">Type</th>
      * </tr>
+     * </thead>
+     * <tbody style="text-align:left">
      * <tr>
-     *   <td>poolName</td>
+     *   <th scope="row">poolName</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td>usage</td>
+     *   <th scope="row">usage</th>
      *   <td>{@code javax.management.openmbean.CompositeData}</td>
      * </tr>
      * <tr>
-     *   <td>count</td>
+     *   <th scope="row">count</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @param cd {@code CompositeData} representing a
      *           {@code MemoryNotificationInfo}
--- a/src/java.management/share/classes/java/lang/management/MemoryUsage.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/MemoryUsage.java	Wed Aug 30 12:45:43 2017 -0700
@@ -36,10 +36,14 @@
  * the heap or non-heap memory of the Java virtual machine as a whole.
  *
  * <p> A {@code MemoryUsage} object contains four values:
- * <table>
+ * <table class="striped">
  * <caption style="display:none">Describes the MemoryUsage object content</caption>
+ * <thead>
+ * <tr><th scope="col">Value</th><th scope="col">Description</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
  * <tr>
- * <td style="vertical-align:top"> {@code init} </td>
+ * <th scope="row" style="vertical-align:top"> {@code init} </th>
  * <td style="vertical-align:top"> represents the initial amount of memory (in bytes) that
  *      the Java virtual machine requests from the operating system
  *      for memory management during startup.  The Java virtual machine
@@ -49,12 +53,12 @@
  * </td>
  * </tr>
  * <tr>
- * <td style="vertical-align:top"> {@code used} </td>
+ * <th scope="row" style="vertical-align:top"> {@code used} </th>
  * <td style="vertical-align:top"> represents the amount of memory currently used (in bytes).
  * </td>
  * </tr>
  * <tr>
- * <td style="vertical-align:top"> {@code committed} </td>
+ * <th scope="row" style="vertical-align:top"> {@code committed} </th>
  * <td style="vertical-align:top"> represents the amount of memory (in bytes) that is
  *      guaranteed to be available for use by the Java virtual machine.
  *      The amount of committed memory may change over time (increase
@@ -65,7 +69,7 @@
  * </td>
  * </tr>
  * <tr>
- * <td style="vertical-align:top"> {@code max} </td>
+ * <th scope="row" style="vertical-align:top"> {@code max} </th>
  * <td style="vertical-align:top"> represents the maximum amount of memory (in bytes)
  *      that can be used for memory management. Its value may be undefined.
  *      The maximum amount of memory may change over time if defined.
@@ -77,6 +81,7 @@
  *      when the system is low on virtual memory).
  * </td>
  * </tr>
+ * </tbody>
  * </table>
  *
  * Below is a picture showing an example of a memory pool:
@@ -252,31 +257,33 @@
      * given {@code CompositeData}. The given {@code CompositeData}
      * must contain the following attributes:
      *
-     * <blockquote>
-     * <table border="1">
+     * <table class="striped" style="margin-left:2em;">
      * <caption style="display:none">The attributes and the types the given CompositeData contains</caption>
+     * <thead>
      * <tr>
-     *   <th style="text-align:left">Attribute Name</th>
-     *   <th style="text-align:left">Type</th>
+     *   <th scope="col">Attribute Name</th>
+     *   <th scope="col">Type</th>
      * </tr>
+     * </thead>
+     * <tbody style="text-align:left">
      * <tr>
-     *   <td>init</td>
+     *   <th scope="row">init</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>used</td>
+     *   <th scope="row">used</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>committed</td>
+     *   <th scope="row">committed</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>max</td>
+     *   <th scope="row">max</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @param cd {@code CompositeData} representing a {@code MemoryUsage}
      *
--- a/src/java.management/share/classes/java/lang/management/MonitorInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/MonitorInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -105,15 +105,17 @@
      * as well as the attributes specified in the
      * <a href="LockInfo.html#MappedType">
      * mapped type</a> for the {@link LockInfo} class:
-     * <blockquote>
-     * <table border="1">
+     * <table class="striped" style="margin-left:2em">
      * <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
+     * <thead>
      * <tr>
-     *   <th style="text-align:left">Attribute Name</th>
-     *   <th style="text-align:left">Type</th>
+     *   <th scope="col">Attribute Name</th>
+     *   <th scope="col">Type</th>
      * </tr>
+     * </thead>
+     * <tbody style="text-align:left">
      * <tr>
-     *   <td>lockedStackFrame</td>
+     *   <th scope="row">lockedStackFrame</th>
      *   <td><code>CompositeData as specified in the
      *       <a href="ThreadInfo.html#StackTrace">stackTrace</a>
      *       attribute defined in the {@link ThreadInfo#from
@@ -121,11 +123,11 @@
      *       </code></td>
      * </tr>
      * <tr>
-     *   <td>lockedStackDepth</td>
+     *   <th scope="row">lockedStackDepth</th>
      *   <td>{@code java.lang.Integer}</td>
      * </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @param cd {@code CompositeData} representing a {@code MonitorInfo}
      *
--- a/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/RuntimeMXBean.java	Wed Aug 30 12:45:43 2017 -0700
@@ -311,23 +311,25 @@
      * The mapped type of {@code Map<String,String>} is
      * {@link javax.management.openmbean.TabularData TabularData}
      * with two items in each row as follows:
-     * <blockquote>
-     * <table border="1">
+     * <table class="striped" style="margin-left:2em">
      * <caption style="display:none">Name and Type for each item</caption>
+     * <thead>
      * <tr>
-     *   <th>Item Name</th>
-     *   <th>Item Type</th>
+     *   <th scope="col">Item Name</th>
+     *   <th scope="col">Item Type</th>
      *   </tr>
-     * <tr>
-     *   <td>{@code key}</td>
+     * </thead>
+     * <tbody>
+     * <tr style="text-align:left">
+     *   <th scope="row">{@code key}</th>
      *   <td>{@code String}</td>
      *   </tr>
      * <tr>
-     *   <td>{@code value}</td>
+     *   <th scope="row">{@code value}</th>
      *   <td>{@code String}</td>
      *   </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @return a map of names and values of all system properties.
      *
--- a/src/java.management/share/classes/java/lang/management/ThreadInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/java/lang/management/ThreadInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -694,51 +694,53 @@
      * given {@code CompositeData}.
      * The given {@code CompositeData} must contain the following attributes
      * unless otherwise specified below:
-     * <blockquote>
-     * <table class="plain">
+     * <table class="striped" style="margin-left:2em">
      * <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
+     * <thead>
      * <tr>
-     *   <th style="text-align:left">Attribute Name</th>
-     *   <th style="text-align:left">Type</th>
+     *   <th scope="col">Attribute Name</th>
+     *   <th scope="col">Type</th>
      * </tr>
+     * </thead>
+     * <tbody style="text-align:left">
      * <tr>
-     *   <td>threadId</td>
+     *   <th scope="row">threadId</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>threadName</td>
+     *   <th scope="row">threadName</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td>threadState</td>
+     *   <th scope="row">threadState</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td>suspended</td>
+     *   <th scope="row">suspended</th>
      *   <td>{@code java.lang.Boolean}</td>
      * </tr>
      * <tr>
-     *   <td>inNative</td>
+     *   <th scope="row">inNative</th>
      *   <td>{@code java.lang.Boolean}</td>
      * </tr>
      * <tr>
-     *   <td>blockedCount</td>
+     *   <th scope="row">blockedCount</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>blockedTime</td>
+     *   <th scope="row">blockedTime</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>waitedCount</td>
+     *   <th scope="row">waitedCount</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>waitedTime</td>
+     *   <th scope="row">waitedTime</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>lockInfo</td>
+     *   <th scope="row">lockInfo</th>
      *   <td>{@code javax.management.openmbean.CompositeData}
      *       - the mapped type for {@link LockInfo} as specified in the
      *         {@link LockInfo#from} method.
@@ -748,64 +750,66 @@
      *       the value of the {@code lockName} attribute. </td>
      * </tr>
      * <tr>
-     *   <td>lockName</td>
+     *   <th scope="row">lockName</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td>lockOwnerId</td>
+     *   <th scope="row">lockOwnerId</th>
      *   <td>{@code java.lang.Long}</td>
      * </tr>
      * <tr>
-     *   <td>lockOwnerName</td>
+     *   <th scope="row">lockOwnerName</th>
      *   <td>{@code java.lang.String}</td>
      * </tr>
      * <tr>
-     *   <td><a id="StackTrace">stackTrace</a></td>
+     *   <th scope="row"><a id="StackTrace">stackTrace</a></th>
      *   <td>{@code javax.management.openmbean.CompositeData[]}
      *       <p>
      *       Each element is a {@code CompositeData} representing
      *       StackTraceElement containing the following attributes:
-     *       <blockquote>
-     *       <table class="borderless">
+     *       <table class="striped" style="margin-left:2em">
      *       <caption style="display:none">The attributes and their types the given CompositeData contains</caption>
+     *       <thead style="text-align:center">
      *       <tr>
-     *         <th style="text-align:left">Attribute Name</th>
-     *         <th style="text-align:left">Type</th>
+     *         <th scope="col">Attribute Name</th>
+     *         <th scope="col">Type</th>
      *       </tr>
+     *       </thead>
+     *       <tbody style="text-align:left">
      *       <tr>
-     *         <td>moduleName</td>
+     *         <th scope="row">moduleName</th>
      *         <td>{@code java.lang.String}</td>
      *       </tr>
      *       <tr>
-     *         <td>moduleVersion</td>
+     *         <th scope="row">moduleVersion</th>
      *         <td>{@code java.lang.String}</td>
      *       </tr>
      *       <tr>
-     *         <td>className</td>
+     *         <th scope="row">className</th>
      *         <td>{@code java.lang.String}</td>
      *       </tr>
      *       <tr>
-     *         <td>methodName</td>
+     *         <th scope="row">methodName</th>
      *         <td>{@code java.lang.String}</td>
      *       </tr>
      *       <tr>
-     *         <td>fileName</td>
+     *         <th scope="row">fileName</th>
      *         <td>{@code java.lang.String}</td>
      *       </tr>
      *       <tr>
-     *         <td>lineNumber</td>
+     *         <th scope="row">lineNumber</th>
      *         <td>{@code java.lang.Integer}</td>
      *       </tr>
      *       <tr>
-     *         <td>nativeMethod</td>
+     *         <th scope="row">nativeMethod</th>
      *         <td>{@code java.lang.Boolean}</td>
      *       </tr>
+     *       </tbody>
      *       </table>
-     *       </blockquote>
      *   </td>
      * </tr>
      * <tr>
-     *   <td>lockedMonitors</td>
+     *   <th scope="row">lockedMonitors</th>
      *   <td>{@code javax.management.openmbean.CompositeData[]}
      *       whose element type is the mapped type for
      *       {@link MonitorInfo} as specified in the
@@ -815,7 +819,7 @@
      *       this attribute will be set to an empty array. </td>
      * </tr>
      * <tr>
-     *   <td>lockedSynchronizers</td>
+     *   <th scope="row">lockedSynchronizers</th>
      *   <td>{@code javax.management.openmbean.CompositeData[]}
      *       whose element type is the mapped type for
      *       {@link LockInfo} as specified in the {@link LockInfo#from} method.
@@ -824,15 +828,15 @@
      *       this attribute will be set to an empty array. </td>
      * </tr>
      * <tr>
-     *   <td>daemon</td>
+     *   <th scope="row">daemon</th>
      *   <td>{@code java.lang.Boolean}</td>
      * </tr>
      * <tr>
-     *   <td>priority</td>
+     *   <th scope="row">priority</th>
      *   <td>{@code java.lang.Integer}</td>
      * </tr>
+     * </tbody>
      * </table>
-     * </blockquote>
      *
      * @param cd {@code CompositeData} representing a {@code ThreadInfo}
      *
--- a/src/java.management/share/classes/javax/management/Descriptor.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/Descriptor.java	Wed Aug 30 12:45:43 2017 -0700
@@ -98,16 +98,21 @@
  *
  * <table class="striped">
  * <caption style="display:none">Descriptor Fields</caption>
+ * <thead>
+ * <tr><th scope="col">Name</th>
+ *     <th scope="col">Type</th>
+ *     <th scope="col">Used in</th>
+ *     <th scope="col">Meaning</th></tr>
+ * </thead>
  *
- * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
- *
- * <tr id="defaultValue"><td><i>defaultValue</i><td>Object</td>
+ * <tbody style="text-align:left">
+ * <tr id="defaultValue"><th scope="row"><i>defaultValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Default value for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr><td>deprecated</td><td>String</td><td>Any</td>
+ * <tr><th scope="row">deprecated</th><td>String</td><td>Any</td>
  *
  * <td>An indication that this element of the information model is no
  * longer recommended for use.  A set of MBeans defined by an
@@ -118,8 +123,8 @@
  * deprecation, for example {@code "1.3 Replaced by the Capacity
  * attribute"}.</td>
  *
- * <tr><td id="descriptionResourceBundleBaseName">descriptionResource<br>
- * BundleBaseName</td><td>String</td><td>Any</td>
+ * <tr><th scope="row" id="descriptionResourceBundleBaseName">descriptionResource<br>
+ * BundleBaseName</th><td>String</td><td>Any</td>
  *
  * <td>The base name for the {@link ResourceBundle} in which the key given in
  * the {@code descriptionResourceKey} field can be found, for example
@@ -127,7 +132,7 @@
  * field is defined by this specification but the field is not set or
  * used by the JMX API itself.</td>
  *
- * <tr><td id="descriptionResourceKey">descriptionResourceKey</td>
+ * <tr><th scope="row" id="descriptionResourceKey">descriptionResourceKey</th>
  * <td>String</td><td>Any</td>
  *
  * <td>A resource key for the description of this element.  In
@@ -136,7 +141,7 @@
  * The meaning of this field is defined by this specification but the
  * field is not set or used by the JMX API itself.</td>
  *
- * <tr><td>enabled</td><td>String</td>
+ * <tr><th scope="row">enabled</th><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanNotificationInfo<br>MBeanOperationInfo</td>
  *
  * <td>The string {@code "true"} or {@code "false"} according as this
@@ -148,7 +153,7 @@
  * might be disabled if it cannot currently be emitted but could be in
  * other circumstances.</td>
  *
- * <tr id="exceptions"><td>exceptions<td>String[]</td>
+ * <tr id="exceptions"><th scope="row">exceptions<td>String[]</td>
  * <td>MBeanAttributeInfo, MBeanConstructorInfo, MBeanOperationInfo</td>
  *
  * <td>The class names of the exceptions that can be thrown when invoking a
@@ -158,7 +163,7 @@
  * setting an attribute are specified by the field
  * <a href="#setExceptions">{@code setExceptions}</a>.
  *
- * <tr id="immutableInfo"><td><i>immutableInfo</i><td>String</td>
+ * <tr id="immutableInfo"><th scope="row"><i>immutableInfo</i><td>String</td>
  * <td>MBeanInfo</td>
  *
  * <td>The string {@code "true"} or {@code "false"} according as this
@@ -171,7 +176,7 @@
  * href="MBeanInfo.html#info-changed">{@code "jmx.mbean.info.changed"}</a>
  * notification.</td>
  *
- * <tr id="infoTimeout"><td>infoTimeout</td><td>String<br>Long</td><td>MBeanInfo</td>
+ * <tr id="infoTimeout"><th scope="row">infoTimeout</th><td>String<br>Long</td><td>MBeanInfo</td>
  *
  * <td>The time in milli-seconds that the MBeanInfo can reasonably be
  * expected to be unchanged.  The value can be a {@code Long} or a
@@ -184,7 +189,7 @@
  * href="MBeanInfo.html#info-changed">{@code "jmx.mbean.info.changed"}</a> in
  * its {@link MBeanNotificationInfo} array.</td></tr>
  *
- * <tr id="interfaceClassName"><td><i>interfaceClassName</i></td>
+ * <tr id="interfaceClassName"><th scope="row"><i>interfaceClassName</i></th>
  * <td>String</td><td>MBeanInfo</td>
  *
  * <td>The Java interface name for a Standard MBean or MXBean, as
@@ -193,26 +198,26 @@
  * StandardMBean} class will have this field in its MBeanInfo
  * Descriptor.</td>
  *
- * <tr id="legalValues"><td><i>legalValues</i></td>
+ * <tr id="legalValues"><th scope="row"><i>legalValues</i></th>
  * <td>{@literal Set<?>}</td><td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Legal values for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr id="locale"><td>locale</td>
+ * <tr id="locale"><th scope="row">locale</th>
  * <td>String</td><td>Any</td>
  *
  * <td>The {@linkplain Locale locale} of the description in this
  * {@code MBeanInfo}, {@code MBeanAttributeInfo}, etc, as returned
  * by {@link Locale#toString()}.</td>
  *
- * <tr id="maxValue"><td><i>maxValue</i><td>Object</td>
+ * <tr id="maxValue"><th scope="row"><i>maxValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Maximum legal value for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr id="metricType"><td>metricType</td><td>String</td>
+ * <tr id="metricType"><th scope="row">metricType</th><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo</td>
  *
  * <td>The type of a metric, one of the strings "counter" or "gauge".
@@ -225,13 +230,13 @@
  * that can increase or decrease.  Examples might be the number of
  * open connections or a cache hit rate or a temperature reading.
  *
- * <tr id="minValue"><td><i>minValue</i><td>Object</td>
+ * <tr id="minValue"><th scope="row"><i>minValue</i><td>Object</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo</td>
  *
  * <td>Minimum legal value for an attribute or parameter.  See
  * {@link javax.management.openmbean}.</td>
  *
- * <tr id="mxbean"><td><i>mxbean</i><td>String</td>
+ * <tr id="mxbean"><th scope="row"><i>mxbean</i><td>String</td>
  * <td>MBeanInfo</td>
  *
  * <td>The string {@code "true"} or {@code "false"} according as this
@@ -240,7 +245,7 @@
  * StandardMBean} class will have this field in its MBeanInfo
  * Descriptor.</td>
  *
- * <tr id="openType"><td><i>openType</i><td>{@link OpenType}</td>
+ * <tr id="openType"><th scope="row"><i>openType</i><td>{@link OpenType}</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo<br>MBeanParameterInfo</td>
  *
  * <td><p>The Open Type of this element.  In the case of {@code
@@ -257,7 +262,7 @@
  * which case it indicates the Open Type that the {@link
  * Notification#getUserData() user data} will have.</td>
  *
- * <tr id="originalType"><td><i>originalType</i><td>String</td>
+ * <tr id="originalType"><th scope="row"><i>originalType</i><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanOperationInfo<br>MBeanParameterInfo</td>
  *
  * <td><p>The original Java type of this element as it appeared in the
@@ -273,7 +278,7 @@
  * href="MXBean.html#type-names">Type Names</a> of the MXBean
  * specification.</p>
  *
- * <tr id="setExceptions"><td><i>setExceptions</i><td>String[]</td>
+ * <tr id="setExceptions"><th scope="row"><i>setExceptions</i><td>String[]</td>
  * <td>MBeanAttributeInfo</td>
  *
  * <td>The class names of the exceptions that can be thrown when setting
@@ -282,7 +287,7 @@
  * JMX API itself.  Exceptions thrown when getting an attribute are specified
  * by the field <a href="#exceptions">{@code exceptions}</a>.
  *
- * <tr><td>severity</td><td>String<br>Integer</td>
+ * <tr><th scope="row">severity</th><td>String<br>Integer</td>
  * <td>MBeanNotificationInfo</td>
  *
  * <td>The severity of this notification.  It can be 0 to mean
@@ -290,7 +295,7 @@
  * levels of severity.  It can be represented as a decimal string or
  * an {@code Integer}.</td>
  *
- * <tr><td>since</td><td>String</td><td>Any</td>
+ * <tr><th scope="row">since</th><td>String</td><td>Any</td>
  *
  * <td>The version of the information model in which this element
  * was introduced.  A set of MBeans defined by an application is
@@ -299,13 +304,14 @@
  * {@code "since"} field to record the version in which an element
  * first appeared.</td>
  *
- * <tr><td>units</td><td>String</td>
+ * <tr><th scope="row">units</th><td>String</td>
  * <td>MBeanAttributeInfo<br>MBeanParameterInfo<br>MBeanOperationInfo</td>
  *
  * <td>The units in which an attribute, parameter, or operation return
  * value is measured, for example {@code "bytes"} or {@code
  * "seconds"}.</td>
  *
+ * </tbody>
  * </table>
  *
  * <p>Some additional fields are defined by Model MBeans.  See the
@@ -334,106 +340,113 @@
  * <table class="striped">
  * <caption style="display:none">ModelMBean Fields</caption>
  *
- * <tr><th>Name</th><th>Type</th><th>Used in</th><th>Meaning</th></tr>
+ * <thead>
+ * <tr><th scope="col">Name</th>
+ *     <th scope="col">Type</th>
+ *     <th scope="col">Used in</th>
+ *     <th scope="col">Meaning</th></tr>
+ * </thead>
  *
- * <tr><td>class</td><td>String</td><td>ModelMBeanOperationInfo</td>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">class</th><td>String</td><td>ModelMBeanOperationInfo</td>
  *     <td>Class where method is defined (fully qualified).</td></tr>
  *
- * <tr><td>currencyTimeLimit</td><td>Number</td>
+ * <tr><th scope="row">currencyTimeLimit</th><td>Number</td>
  *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
  *     <td>How long cached value is valid: &lt;0 never, =0 always,
  *         &gt;0 seconds.</td></tr>
  *
- * <tr><td>default</td><td>Object</td><td>ModelMBeanAttributeInfo</td>
+ * <tr><th scope="row">default</th><td>Object</td><td>ModelMBeanAttributeInfo</td>
  *     <td>Default value for attribute.</td></tr>
  *
- * <tr><td>descriptorType</td><td>String</td><td>Any</td>
+ * <tr><th scope="row">descriptorType</th><td>String</td><td>Any</td>
  *     <td>Type of descriptor, "mbean", "attribute", "constructor", "operation",
  *         or "notification".</td></tr>
  *
- * <tr id="displayName"><td>displayName</td><td>String</td><td>Any</td>
+ * <tr id="displayName"><th scope="row">displayName</th><td>String</td><td>Any</td>
  *     <td>Human readable name of this item.</td></tr>
  *
- * <tr><td>export</td><td>String</td><td>ModelMBeanInfo</td>
+ * <tr><th scope="row">export</th><td>String</td><td>ModelMBeanInfo</td>
  *     <td>Name to be used to export/expose this MBean so that it is
  *         findable by other JMX Agents.</td></tr>
  *
- * <tr><td>getMethod</td><td>String</td><td>ModelMBeanAttributeInfo</td>
+ * <tr><th scope="row">getMethod</th><td>String</td><td>ModelMBeanAttributeInfo</td>
  *     <td>Name of operation descriptor for get method.</td></tr>
  *
- * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ * <tr><th scope="row">lastUpdatedTimeStamp</th><td>Number</td>
  *     <td>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
  *     <td>When <a href="#value-field">value</a> was set.</td></tr>
  *
- * <tr><td>log</td><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
+ * <tr><th scope="row">log</th><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
  *     <td>t or T: log all notifications, f or F: log no notifications.</td></tr>
  *
- * <tr><td>logFile</td><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
+ * <tr><th scope="row">logFile</th><td>String</td><td>ModelMBeanInfo<br>ModelMBeanNotificationInfo</td>
  *     <td>Fully qualified filename to log events to.</td></tr>
  *
- * <tr><td>messageID</td><td>String</td><td>ModelMBeanNotificationInfo</td>
+ * <tr><th scope="row">messageID</th><td>String</td><td>ModelMBeanNotificationInfo</td>
  *     <td>Unique key for message text (to allow translation, analysis).</td></tr>
  *
- * <tr><td>messageText</td><td>String</td><td>ModelMBeanNotificationInfo</td>
+ * <tr><th scope="row">messageText</th><td>String</td><td>ModelMBeanNotificationInfo</td>
  *     <td>Text of notification.</td></tr>
  *
- * <tr><td>name</td><td>String</td><td>Any</td>
+ * <tr><th scope="row">name</th><td>String</td><td>Any</td>
  *     <td>Name of this item.</td></tr>
  *
- * <tr><td>persistFile</td><td>String</td><td>ModelMBeanInfo</td>
+ * <tr><th scope="row">persistFile</th><td>String</td><td>ModelMBeanInfo</td>
  *     <td>File name into which the MBean should be persisted.</td></tr>
  *
- * <tr><td>persistLocation</td><td>String</td><td>ModelMBeanInfo</td>
+ * <tr><th scope="row">persistLocation</th><td>String</td><td>ModelMBeanInfo</td>
  *     <td>The fully qualified directory name where the MBean should be
  *         persisted (if appropriate).</td></tr>
  *
- * <tr><td>persistPeriod</td><td>Number</td>
+ * <tr><th scope="row">persistPeriod</th><td>Number</td>
  *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo</td>
  *     <td>Frequency of persist cycle in seconds. Used when persistPolicy is
  *         "OnTimer" or "NoMoreOftenThan".</td></tr>
  *
- * <tr><td>persistPolicy</td><td>String</td>
+ * <tr><th scope="row">persistPolicy</th><td>String</td>
  *     <td>ModelMBeanInfo<br>ModelMBeanAttributeInfo</td>
  *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
  *         See the section "MBean Descriptor Fields" in the JMX specification
  *         document.</td></tr>
  *
- * <tr><td>presentationString</td><td>String</td><td>Any</td>
+ * <tr><th scope="row">presentationString</th><td>String</td><td>Any</td>
  *     <td>XML formatted string to allow presentation of data.</td></tr>
  *
- * <tr><td>protocolMap</td><td>Descriptor</td><td>ModelMBeanAttributeInfo</td>
+ * <tr><th scope="row">protocolMap</th><td>Descriptor</td><td>ModelMBeanAttributeInfo</td>
  *     <td>See the section "Protocol Map Support" in the JMX specification
  *         document.  Mappings must be appropriate for the attribute and entries
  *         can be updated or augmented at runtime.</td></tr>
  *
- * <tr><td>role</td><td>String</td>
+ * <tr><th scope="row">role</th><td>String</td>
  *     <td>ModelMBeanConstructorInfo<br>ModelMBeanOperationInfo</td>
  *     <td>One of "constructor", "operation", "getter", or "setter".</td></tr>
  *
- * <tr><td>setMethod</td><td>String</td><td>ModelMBeanAttributeInfo</td>
+ * <tr><th scope="row">setMethod</th><td>String</td><td>ModelMBeanAttributeInfo</td>
  *     <td>Name of operation descriptor for set method.</td></tr>
  *
- * <tr id="severity"><td>severity</td><td>Number</td>
+ * <tr id="severity"><th scope="row">severity</th><td>Number</td>
  *     <td>ModelMBeanNotificationInfo</td>
  *     <td>0-6 where 0: unknown; 1: non-recoverable;
  *         2: critical, failure; 3: major, severe;
  *         4: minor, marginal, error; 5: warning;
  *         6: normal, cleared, informative</td></tr>
  *
- * <tr><td>targetObject</td><td>Object</td><td>ModelMBeanOperationInfo</td>
+ * <tr><th scope="row">targetObject</th><td>Object</td><td>ModelMBeanOperationInfo</td>
  *     <td>Object on which to execute this method.</td></tr>
  *
- * <tr><td>targetType</td><td>String</td><td>ModelMBeanOperationInfo</td>
+ * <tr><th scope="row">targetType</th><td>String</td><td>ModelMBeanOperationInfo</td>
  *     <td>type of object reference for targetObject. Can be:
  *         ObjectReference | Handle | EJBHandle | IOR | RMIReference.</td></tr>
  *
- * <tr id="value-field"><td>value</td><td>Object</td>
+ * <tr id="value-field"><th scope="row">value</th><td>Object</td>
  *     <td>ModelMBeanAttributeInfo<br>ModelMBeanOperationInfo</td>
  *     <td>Current (cached) value for attribute or operation.</td></tr>
  *
- * <tr id="visibility"><td>visibility</td><td>Number</td><td>Any</td>
+ * <tr id="visibility"><th scope="row">visibility</th><td>Number</td><td>Any</td>
  *     <td>1-4 where 1: always visible, 4: rarely visible.</td></tr>
  *
+ * </tbody>
  * </table>
  *
  * @since 1.5
--- a/src/java.management/share/classes/javax/management/DescriptorKey.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/DescriptorKey.java	Wed Aug 30 12:45:43 2017 -0700
@@ -94,13 +94,17 @@
  * <p>then the resulting {@code Descriptor} will contain the following
  * fields:</p>
  *
- * <table border="1">
+ * <table class="striped">
  * <caption style="display:none">Descriptor Fields</caption>
- * <tr><th>Name</th><th>Value</th></tr>
- * <tr><td>units</td><td>"bytes"</td></tr>
- * <tr><td>descriptionResourceKey</td><td>"bytes.key"</td></tr>
- * <tr><td>descriptionResourceBundleBaseName</td>
+ * <thead>
+ * <tr><th scope="col">Name</th><th scope="col">Value</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">units</th><td>"bytes"</td></tr>
+ * <tr><th scope="row">descriptionResourceKey</th><td>"bytes.key"</td></tr>
+ * <tr><th scope="row">descriptionResourceBundleBaseName</th>
  *     <td>"com.example.foo.MBeanResources"</td></tr>
+ * </tbody>
  * </table>
  *
  * <p>An annotation such as {@code @Units} can be applied to:</p>
@@ -144,24 +148,28 @@
  * or an array of annotations.  The value of the field is derived from
  * the value of the annotation element as follows:</p>
  *
- * <table border="1">
+ * <table class="striped">
  * <caption style="display:none">Descriptor Field Types</caption>
- * <tr><th>Annotation element</th><th>Descriptor field</th></tr>
- * <tr><td>Primitive value ({@code 5}, {@code false}, etc)</td>
+ * <thead>
+ * <tr><th scope="col">Annotation element</th><th scope="col">Descriptor field</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">Primitive value ({@code 5}, {@code false}, etc)</th>
  *     <td>Wrapped value ({@code Integer.valueOf(5)},
  *         {@code Boolean.FALSE}, etc)</td></tr>
- * <tr><td>Class constant (e.g. {@code Thread.class})</td>
+ * <tr><th scope="row">Class constant (e.g. {@code Thread.class})</th>
  *     <td>Class name from {@link Class#getName()}
  *         (e.g. {@code "java.lang.Thread"})</td></tr>
- * <tr><td>Enum constant (e.g. {@link ElementType#FIELD})</td>
+ * <tr><th scope="row">Enum constant (e.g. {@link ElementType#FIELD})</th>
  *     <td>Constant name from {@link Enum#name()}
  *         (e.g. {@code "FIELD"})</td></tr>
- * <tr><td>Array of class constants or enum constants</td>
+ * <tr><th scope="row">Array of class constants or enum constants</th>
  *     <td>String array derived by applying these rules to each
  *         element</td></tr>
- * <tr><td>Value of any other type<br>
- *         ({@code String}, {@code String[]}, {@code int[]}, etc)</td>
+ * <tr><th scope="row">Value of any other type<br>
+ *         ({@code String}, {@code String[]}, {@code int[]}, etc)</th>
  *     <td>The same value</td></tr>
+ * </tbody>
  * </table>
  *
  * @since 1.6
--- a/src/java.management/share/classes/javax/management/MXBean.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/MXBean.java	Wed Aug 30 12:45:43 2017 -0700
@@ -93,28 +93,26 @@
       Standard MBean concept.  Here is how a managed object might be
       represented as a Standard MBean, and as an MXBean:</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 public interface MemoryPool<b>MBean</b> {
     String getName();
     MemoryUsage getUsage();
     // ...
 }
-          </pre></td>
-        <td><pre>
+          </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 public interface MemoryPool<b>MXBean</b> {
     String getName();
     MemoryUsage getUsage();
     // ...
 }
-          </pre></td>
-      </tr>
-    </table>
+          </pre>
+    </div>
 
     <p>As you can see, the definitions are very similar.  The only
       difference is that the convention for naming the interface is to use
@@ -134,13 +132,9 @@
 
     <p>So, we might define <code>MemoryUsage</code> like this:</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 public class MemoryUsage <b>implements Serializable</b> {
     // standard JavaBean conventions with getters
 
@@ -151,8 +145,11 @@
     long getCommitted() {...}
     long getMax() {...}
 }
-          </pre></td>
-        <td><pre>
+        </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 public class MemoryUsage {
     // standard JavaBean conventions with getters
     <b>&#64;ConstructorParameters({"init", "used", "committed", "max"})</b>
@@ -163,9 +160,8 @@
     long getCommitted() {...}
     long getMax() {...}
 }
-          </pre></td>
-      </tr>
-    </table>
+        </pre>
+    </div>
 
     <p>The definitions are the same in the two cases, except
       that with the MXBean, <code>MemoryUsage</code> no longer needs to
@@ -197,29 +193,28 @@
     <p>This becomes clearer if we compare what the clients of the two
       models might look like:</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 String name = (String)
     mbeanServer.{@link MBeanServer#getAttribute
     getAttribute}(objectName, "Name");
 <b>MemoryUsage</b> usage = (<b>MemoryUsage</b>)
     mbeanServer.getAttribute(objectName, "Usage");
 <b>long used = usage.getUsed();</b>
-          </pre></td>
-        <td><pre>
+        </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 String name = (String)
     mbeanServer.{@link MBeanServer#getAttribute
     getAttribute}(objectName, "Name");
 <b>{@link CompositeData}</b> usage = (<b>CompositeData</b>)
     mbeanServer.getAttribute(objectName, "Usage");
 <b>long used = (Long) usage.{@link CompositeData#get get}("used");</b>
-          </pre></td>
-    </table>
+        </pre>
+    </div>
 
     <p>For attributes with simple types like <code>String</code>, the
       code is the same.  But for attributes with complex types, the
@@ -235,13 +230,9 @@
       managed objects when you know the model beforehand, regardless
       of whether you are using Standard MBeans or MXBeans:</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 MemoryPool<b>MBean</b> proxy =
     JMX.<b>{@link JMX#newMBeanProxy(MBeanServerConnection, ObjectName,
               Class) newMBeanProxy}</b>(
@@ -251,8 +242,11 @@
 String name = proxy.getName();
 MemoryUsage usage = proxy.getUsage();
 long used = usage.getUsed();
-          </pre></td>
-        <td><pre>
+          </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 MemoryPool<b>MXBean</b> proxy =
     JMX.<b>{@link JMX#newMXBeanProxy(MBeanServerConnection, ObjectName,
               Class) newMXBeanProxy}</b>(
@@ -262,63 +256,58 @@
 String name = proxy.getName();
 MemoryUsage usage = proxy.getUsage();
 long used = usage.getUsed();
-          </pre></td>
-      </tr>
-    </table>
+          </pre>
+    </div>
 
     <p>Implementing the MemoryPool object works similarly for both
       Standard MBeans and MXBeans.</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 public class MemoryPool
         implements MemoryPool<b>MBean</b> {
     public String getName() {...}
     public MemoryUsage getUsage() {...}
     // ...
 }
-          </pre></td>
-        <td><pre>
+        </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 public class MemoryPool
         implements MemoryPool<b>MXBean</b> {
     public String getName() {...}
     public MemoryUsage getUsage() {...}
     // ...
 }
-          </pre></td>
-      </tr>
-    </table>
+        </pre>
+    </div>
 
     <p>Registering the MBean in the MBean Server works in the same way
       in both cases:</p>
 
-    <table class="plain">
-    <caption style="display:none">Standard Bean vs. MXBean</caption>
-      <tr>
-        <th>Standard MBean</th><th>MXBean</th>
-      </tr>
-      <tr>
-        <td><pre>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>Standard MBean</h4>
+        <pre>
 {
     MemoryPool<b>MBean</b> pool = new MemoryPool();
     mbeanServer.{@link MBeanServer#registerMBean
     registerMBean}(pool, objectName);
 }
-          </pre></td>
-        <td><pre>
+        </pre>
+    </div>
+    <div style="display:inline-block; margin: 0 3em">
+        <h4>MXBean</h4>
+        <pre>
 {
     MemoryPool<b>MXBean</b> pool = new MemoryPool();
     mbeanServer.{@link MBeanServer#registerMBean
     registerMBean}(pool, objectName);
 }
-          </pre></td>
-      </tr>
-    </table>
+        </pre>
+    </div>
 
 
     <h2 id="mxbean-def">Definition of an MXBean</h2>
@@ -486,70 +475,71 @@
 
     <table class="striped">
     <caption style="display:none">Type Mapping Rules</caption>
+      <thead>
       <tr>
-        <th>Java type <em>J</em></th>
-        <th><em>opentype(J)</em></th>
-        <th><em>opendata(J)</em></th>
+        <th scope="col">Java type <em>J</em></th>
+        <th scope="col"><em>opentype(J)</em></th>
+        <th scope="col"><em>opendata(J)</em></th>
       </tr>
-      <tbody style="vertical-align:top">
+      </thead>
+      <tbody style="text-align:left; vertical-align:top">
         <tr>
-          <td>{@code int}, {@code boolean}, etc<br>
-            (the 8 primitive Java types)</td>
+          <th scope="row">{@code int}, {@code boolean}, etc<br>
+            (the 8 primitive Java types)</th>
           <td>{@code SimpleType.INTEGER},<br>
             {@code SimpleType.BOOLEAN}, etc</td>
           <td>{@code Integer}, {@code Boolean}, etc<br>
             (the corresponding boxed types)</td>
         </tr>
         <tr>
-          <td>{@code Integer}, {@code ObjectName}, etc<br>
-            (the types covered by {@link SimpleType})</td>
+          <th scope="row">{@code Integer}, {@code ObjectName}, etc<br>
+            (the types covered by {@link SimpleType})</th>
           <td>the corresponding {@code SimpleType}</td>
           <td><em>J</em>, the same type</td>
         </tr>
         <tr>
-          <td>{@code int[]} etc<br>
-            (a one-dimensional array with<br>
-            primitive element type)</td>
+          <th scope="row">{@code int[]} etc<br>
+            (a one-dimensional array with primitive element type)</th>
           <td>{@code ArrayType.getPrimitiveArrayType(int[].class)} etc</td>
           <td><em>J</em>, the same type</td>
         <tr>
-          <td><em>E</em>{@code []}<br>
+          <th scope="row"><em>E</em>{@code []}<br>
             (an array with non-primitive element type <em>E</em>;
-              this includes {@code int[][]}, where <em>E</em> is {@code int[]})</td>
+              this includes {@code int[][]}, where <em>E</em> is {@code int[]})</th>
           <td>{@code ArrayType.getArrayType(}<em>opentype(E)</em>{@code )}</td>
           <td><em>opendata(E)</em>{@code []}</td>
         </tr>
         <tr>
-          <td>{@code List<}<em>E</em>{@code >}<br>
+          <th scope="row">{@code List<}<em>E</em>{@code >}<br>
             {@code Set<}<em>E</em>{@code >}<br>
-            {@code SortedSet<}<em>E</em>{@code >} (see below)</td>
+            {@code SortedSet<}<em>E</em>{@code >} (see below)</th>
           <td>same as for <em>E</em>{@code []}</td>
           <td>same as for <em>E</em>{@code []}</td>
         </tr>
         <tr>
-          <td>An enumeration <em>E</em><br>
+          <th scope="row">An enumeration <em>E</em><br>
             (declared in Java as {@code enum }<em>E</em>
-            {@code {...}})</td>
+            {@code {...}})</th>
           <td>{@code SimpleType.STRING}</td>
           <td>{@code String}</td>
         </tr>
         <tr>
-          <td>{@code Map<}<em>K</em>,<em>V</em>{@code >}<br>
-            {@code SortedMap<}<em>K</em>,<em>V</em>{@code >}</td>
+          <th scope="row">{@code Map<}<em>K</em>,<em>V</em>{@code >}<br>
+            {@code SortedMap<}<em>K</em>,<em>V</em>{@code >}</th>
           <td>{@link TabularType}<br>
             (see below)</td>
           <td>{@link TabularData}<br>
             (see below)</td>
         </tr>
         <tr>
-          <td>An MXBean interface</td>
+          <th scope="row">An MXBean interface</th>
           <td>{@code SimpleType.OBJECTNAME}<br>
             (see below)</td>
           <td>{@link ObjectName}<br>
             (see below)</td>
         </tr>
         <tr>
-          <td>Any other type</td>
+          <th scope="row">Any other type</th>
           <td>{@link CompositeType},
             if possible<br>
             (see below)</td>
--- a/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanAttributeInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -59,41 +59,45 @@
  *
  * <table class="striped">
  * <caption style="display:none">ModelMBeanAttributeInfo Fields</caption>
- * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
- * <tr><td>name</td><td>String</td>
+ * <thead>
+ * <tr><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Meaning</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">name</th><td>String</td>
  *     <td>Attribute name.</td></tr>
- * <tr><td>descriptorType</td><td>String</td>
+ * <tr><th scope="row">descriptorType</th><td>String</td>
  *     <td>Must be "attribute".</td></tr>
- * <tr id="value-field"><td>value</td><td>Object</td>
+ * <tr id="value-field"><th scope="row">value</th><td>Object</td>
  *     <td>Current (cached) value for attribute.</td></tr>
- * <tr><td>default</td><td>Object</td>
+ * <tr><th scope="row">default</th><td>Object</td>
  *     <td>Default value for attribute.</td></tr>
- * <tr><td>displayName</td><td>String</td>
+ * <tr><th scope="row">displayName</th><td>String</td>
  *     <td>Name of attribute to be used in displays.</td></tr>
- * <tr><td>getMethod</td><td>String</td>
+ * <tr><th scope="row">getMethod</th><td>String</td>
  *     <td>Name of operation descriptor for get method.</td></tr>
- * <tr><td>setMethod</td><td>String</td>
+ * <tr><th scope="row">setMethod</th><td>String</td>
  *     <td>Name of operation descriptor for set method.</td></tr>
- * <tr><td>protocolMap</td><td>Descriptor</td>
+ * <tr><th scope="row">protocolMap</th><td>Descriptor</td>
  *     <td>See the section "Protocol Map Support" in the JMX specification
  *         document.  Mappings must be appropriate for the attribute and entries
  *         can be updated or augmented at runtime.</td></tr>
- * <tr><td>persistPolicy</td><td>String</td>
+ * <tr><th scope="row">persistPolicy</th><td>String</td>
  *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
  *         See the section "MBean Descriptor Fields" in the JMX specification
  *         document.</td></tr>
- * <tr><td>persistPeriod</td><td>Number</td>
+ * <tr><th scope="row">persistPeriod</th><td>Number</td>
  *     <td>Frequency of persist cycle in seconds. Used when persistPolicy is
  *         "OnTimer" or "NoMoreOftenThan".</td></tr>
- * <tr><td>currencyTimeLimit</td><td>Number</td>
- *     <td>How long <a href="#value=field">value</a> is valid: &lt;0 never,
+ * <tr><th scope="row">currencyTimeLimit</th><td>Number</td>
+ *     <td>How long <a href="#value-field">value</a> is valid: &lt;0 never,
  *         =0 always, &gt;0 seconds.</td></tr>
- * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ * <tr><th scope="row">lastUpdatedTimeStamp</th><td>Number</td>
  *     <td>When <a href="#value-field">value</a> was set.</td></tr>
- * <tr><td>visibility</td><td>Number</td>
+ * <tr><th scope="row">visibility</th><td>Number</td>
  *     <td>1-4 where 1: always visible, 4: rarely visible.</td></tr>
- * <tr><td>presentationString</td><td>String</td>
+ * <tr><th scope="row">presentationString</th><td>String</td>
  *     <td>XML formatted string to allow presentation of data.</td></tr>
+ * </tbody>
  * </table>
  *
  * <p>The default descriptor contains the name, descriptorType and displayName
--- a/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanConstructorInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -60,19 +60,23 @@
  *
  * <table class="striped">
  * <caption style="display:none">ModelMBeanConstructorInfo Fields</caption>
- * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
- * <tr><td>name</td><td>String</td>
+ * <thead>
+ * <tr><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Meaning</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">name</th><td>String</td>
  *     <td>Constructor name.</td></tr>
- * <tr><td>descriptorType</td><td>String</td>
+ * <tr><th scope="row">descriptorType</th><td>String</td>
  *     <td>Must be "operation".</td></tr>
- * <tr><td>role</td><td>String</td>
+ * <tr><th scope="row">role</th><td>String</td>
  *     <td>Must be "constructor".</td></tr>
- * <tr><td>displayName</td><td>String</td>
+ * <tr><th scope="row">displayName</th><td>String</td>
  *     <td>Human readable name of constructor.</td></tr>
- * <tr><td>visibility</td><td>Number</td>
+ * <tr><th scope="row">visibility</th><td>Number</td>
  *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
- * <tr><td>presentationString</td><td>String</td>
+ * <tr><th scope="row">presentationString</th><td>String</td>
  *     <td>XML formatted string to describe how to present operation</td></tr>
+ * </tbody>
  * </table>
  *
  * <p>The {@code persistPolicy} and {@code currencyTimeLimit} fields
--- a/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -167,40 +167,44 @@
      *
      * <table class="striped">
      * <caption style="display:none">ModelMBean Fields</caption>
-     * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
-     * <tr><td>name</td><td>String</td>
+     * <thead>
+     * <tr><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Meaning</th></tr>
+     * </thead>
+     * <tbody style="text-align:left">
+     * <tr><th scope="row">name</th><td>String</td>
      *     <td>MBean name.</td></tr>
-     * <tr><td>descriptorType</td><td>String</td>
+     * <tr><th scope="row">descriptorType</th><td>String</td>
      *     <td>Must be "mbean".</td></tr>
-     * <tr><td>displayName</td><td>String</td>
+     * <tr><th scope="row">displayName</th><td>String</td>
      *     <td>Name of MBean to be used in displays.</td></tr>
-     * <tr><td>persistPolicy</td><td>String</td>
+     * <tr><th scope="row">persistPolicy</th><td>String</td>
      *     <td>One of: OnUpdate|OnTimer|NoMoreOftenThan|OnUnregister|Always|Never.
      *         See the section "MBean Descriptor Fields" in the JMX specification
      *         document.</td></tr>
-     * <tr><td>persistLocation</td><td>String</td>
+     * <tr><th scope="row">persistLocation</th><td>String</td>
      *     <td>The fully qualified directory name where the MBean should be
      *         persisted (if appropriate).</td></tr>
-     * <tr><td>persistFile</td><td>String</td>
+     * <tr><th scope="row">persistFile</th><td>String</td>
      *     <td>File name into which the MBean should be persisted.</td></tr>
-     * <tr><td>persistPeriod</td><td>Number</td>
+     * <tr><th scope="row">persistPeriod</th><td>Number</td>
      *     <td>Frequency of persist cycle in seconds, for OnTime and
      *         NoMoreOftenThan PersistPolicy</td></tr>
-     * <tr><td>currencyTimeLimit</td><td>Number</td>
+     * <tr><th scope="row">currencyTimeLimit</th><td>Number</td>
      *     <td>How long cached value is valid: &lt;0 never, =0 always,
      *         &gt;0 seconds.</td></tr>
-     * <tr><td>log</td><td>String</td>
+     * <tr><th scope="row">log</th><td>String</td>
      *     <td>t: log all notifications, f: log no notifications.</td></tr>
-     * <tr><td>logfile</td><td>String</td>
+     * <tr><th scope="row">logfile</th><td>String</td>
      *     <td>Fully qualified filename to log events to.</td></tr>
-     * <tr><td>visibility</td><td>Number</td>
+     * <tr><th scope="row">visibility</th><td>Number</td>
      *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
-     * <tr><td>export</td><td>String</td>
+     * <tr><th scope="row">export</th><td>String</td>
      *     <td>Name to be used to export/expose this MBean so that it is
      *         findable by other JMX Agents.</td></tr>
-     * <tr><td>presentationString</td><td>String</td>
+     * <tr><th scope="row">presentationString</th><td>String</td>
      *     <td>XML formatted string to allow presentation of data to be
      *         associated with the MBean.</td></tr>
+     * </tbody>
      * </table>
      *
      * <P>
--- a/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanNotificationInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -58,28 +58,32 @@
  *
  * <table class="striped">
  * <caption style="display:none">ModelMBeanNotificationInfo Fields</caption>
- * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
- * <tr><td>name</td><td>String</td>
+ * <thead>
+ * <tr><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Meaning</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">name</th><td>String</td>
  *     <td>Notification name.</td></tr>
- * <tr><td>descriptorType</td><td>String</td>
+ * <tr><th scope="row">descriptorType</th><td>String</td>
  *     <td>Must be "notification".</td></tr>
- * <tr><td>severity</td><td>Number</td>
+ * <tr><th scope="row">severity</th><td>Number</td>
  *     <td>0-6 where 0: unknown; 1: non-recoverable;
  *         2: critical, failure; 3: major, severe;
  *         4: minor, marginal, error; 5: warning;
  *         6: normal, cleared, informative</td></tr>
- * <tr><td>messageID</td><td>String</td>
+ * <tr><th scope="row">messageID</th><td>String</td>
  *     <td>Unique key for message text (to allow translation, analysis).</td></tr>
- * <tr><td>messageText</td><td>String</td>
+ * <tr><th scope="row">messageText</th><td>String</td>
  *     <td>Text of notification.</td></tr>
- * <tr><td>log</td><td>String</td>
+ * <tr><th scope="row">log</th><td>String</td>
  *     <td>T - log message, F - do not log message.</td></tr>
- * <tr><td>logfile</td><td>String</td>
+ * <tr><th scope="row">logfile</th><td>String</td>
  *     <td>fully qualified file name appropriate for operating system.</td></tr>
- * <tr><td>visibility</td><td>Number</td>
+ * <tr><th scope="row">visibility</th><td>Number</td>
  *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
- * <tr><td>presentationString</td><td>String</td>
+ * <tr><th scope="row">presentationString</th><td>String</td>
  *     <td>XML formatted string to allow presentation of data.</td></tr>
+ * </tbody>
  * </table>
  *
  * <p>The default descriptor contains the name, descriptorType,
--- a/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/modelmbean/ModelMBeanOperationInfo.java	Wed Aug 30 12:45:43 2017 -0700
@@ -61,32 +61,36 @@
  *
  * <table class="striped">
  * <caption style="display:none">ModelMBeanOperationInfo Fields</caption>
- * <tr><th>Name</th><th>Type</th><th>Meaning</th></tr>
- * <tr><td>name</td><td>String</td>
+ * <thead>
+ * <tr><th scope="col">Name</th><th scope="col">Type</th><th scope="col">Meaning</th></tr>
+ * </thead>
+ * <tbody style="text-align:left">
+ * <tr><th scope="row">name</th><td>String</td>
  *     <td>Operation name.</td></tr>
- * <tr><td>descriptorType</td><td>String</td>
+ * <tr><th scope="row">descriptorType</th><td>String</td>
  *     <td>Must be "operation".</td></tr>
- * <tr><td>class</td><td>String</td>
+ * <tr><th scope="row">class</th><td>String</td>
  *     <td>Class where method is defined (fully qualified).</td></tr>
- * <tr><td>role</td><td>String</td>
+ * <tr><th scope="row">role</th><td>String</td>
  *     <td>Must be "operation", "getter", or "setter".</td></tr>
- * <tr><td>targetObject</td><td>Object</td>
+ * <tr><th scope="row">targetObject</th><td>Object</td>
  *     <td>Object on which to execute this method.</td></tr>
- * <tr><td>targetType</td><td>String</td>
+ * <tr><th scope="row">targetType</th><td>String</td>
  *     <td>type of object reference for targetObject. Can be:
  *         ObjectReference | Handle | EJBHandle | IOR | RMIReference.</td></tr>
- * <tr><td>value</td><td>Object</td>
+ * <tr><th scope="row">value</th><td>Object</td>
  *     <td>Cached value for operation.</td></tr>
- * <tr><td>displayName</td><td>String</td>
+ * <tr><th scope="row">displayName</th><td>String</td>
  *     <td>Human readable display name of the operation.</td>
- * <tr><td>currencyTimeLimit</td><td>Number</td>
+ * <tr><th scope="row">currencyTimeLimit</th><td>Number</td>
  *     <td>How long cached value is valid.</td></tr>
- * <tr><td>lastUpdatedTimeStamp</td><td>Number</td>
+ * <tr><th scope="row">lastUpdatedTimeStamp</th><td>Number</td>
  *     <td>When cached value was set.</td></tr>
- * <tr><td>visibility</td><td>Number</td>
+ * <tr><th scope="row">visibility</th><td>Number</td>
  *     <td>1-4 where 1: always visible 4: rarely visible.</td></tr>
- * <tr><td>presentationString</td><td>String</td>
+ * <tr><th scope="row">presentationString</th><td>String</td>
  *     <td>XML formatted string to describe how to present operation</td></tr>
+ * </tbody>
  * </table>
  *
  * <p>The default descriptor will have name, descriptorType, displayName and
--- a/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java	Wed Aug 30 11:37:48 2017 -0700
+++ b/src/java.management/share/classes/javax/management/remote/JMXConnectionNotification.java	Wed Aug 30 12:45:43 2017 -0700
@@ -40,34 +40,38 @@
  *
  * <p>The notification type is one of the following:</p>
  *
- * <table>
+ * <table class="striped">
  * <caption style="display:none">JMXConnectionNotification Types</caption>
  *
+ * <thead style="text-align:left">
  * <tr>
- * <th style="text-align:left">Type</th>
- * <th style="text-align:left">Meaning</th>
+ * <th scope="col">Type</th>
+ * <th scope="col">Meaning</th>
  * </tr>
+ * </thead>
  *
+ * <tbody style="text-align:left">
  * <tr>
- * <td><code>jmx.remote.connection.opened</code></td>
+ * <th scope="row"><code>jmx.remote.connection.opened</code></th>
  * <td>A new client connection has been opened.</td>
  * </tr>
  *
  * <tr>
- * <td><code>jmx.remote.connection.closed</code></td>
+ * <th scope="row"><code>jmx.remote.connection.closed</code></th>
  * <td>A client connection has been closed.</td>
  * </tr>
  *
  * <tr>
- * <td><code>jmx.remote.connection.failed</code></td>
+ * <th scope="row"><code>jmx.remote.connection.failed</code></th>
  * <td>A client connection has failed unexpectedly.</td>
  * </tr>
  *
  * <tr>
- * <td><code>jmx.remote.connection.notifs.lost</code></td>
+ * <th scope="row"><code>jmx.remote.connection.notifs.lost</code></th>
  * <td>A client connection has potentially lost notifications.  This
  * notification only appears on the client side.</td>
  * </tr>
+ * </tbody>
  * </table>
  *
  * <p>The <code>timeStamp</code> of the notification is a time value