This is an automated email from the ASF dual-hosted git repository.

rmaucher pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/main by this push:
     new f539bede4e Javadoc fixes and improvements
f539bede4e is described below

commit f539bede4e3e28612d600e61cd20d2462853fa1b
Author: remm <[email protected]>
AuthorDate: Sat May 9 09:17:59 2026 +0200

    Javadoc fixes and improvements
    
    Final part.
    Coauthored by OpenCode.
---
 .../catalina/authenticator/SingleSignOnEntry.java  |  28 ++++
 .../authenticator/SingleSignOnListener.java        |   3 +
 .../authenticator/SingleSignOnSessionKey.java      |   9 ++
 .../catalina/core/ApplicationFilterConfig.java     |   8 +-
 .../catalina/deploy/NamingResourcesImpl.java       |   3 +
 java/org/apache/catalina/filters/CorsFilter.java   |   7 +-
 .../catalina/filters/CsrfPreventionFilter.java     |   3 +
 .../apache/catalina/filters/RemoteIpFilter.java    |  20 +++
 .../catalina/filters/RequestDumperFilter.java      |   7 +-
 .../org/apache/catalina/ha/deploy/FileMessage.java |   6 +
 .../apache/catalina/ha/deploy/UndeployMessage.java |   4 +
 .../catalina/ha/session/SessionMessageImpl.java    |   7 +
 .../catalina/manager/HTMLManagerServlet.java       |   2 +
 .../apache/catalina/realm/GenericPrincipal.java    |   4 +
 .../catalina/realm/X509SubjectDnRetriever.java     |   6 +
 java/org/apache/catalina/servlets/CGIServlet.java  |   3 +-
 .../apache/catalina/servlets/WebdavServlet.java    |   1 +
 .../org/apache/catalina/tribes/io/XByteBuffer.java | 157 +++++++++++++++++++++
 .../membership/StaticMembershipProvider.java       |   3 +
 java/org/apache/catalina/util/ParameterMap.java    |   2 +
 java/org/apache/catalina/util/XMLWriter.java       |   3 +
 java/org/apache/jasper/servlet/JspServlet.java     |   7 +-
 .../apache/tomcat/jni/LibraryNotFoundError.java    |   3 +
 java/org/apache/tomcat/util/MultiThrowable.java    |   3 +
 java/org/apache/tomcat/util/buf/ByteChunk.java     |  14 ++
 java/org/apache/tomcat/util/buf/CharChunk.java     |   3 +
 java/org/apache/tomcat/util/buf/MessageBytes.java  |  24 ++++
 .../tomcat/util/descriptor/XmlErrorHandler.java    |  25 ++++
 .../tomcat/util/descriptor/XmlIdentifiers.java     | 141 ++++++++++++++++++
 .../util/descriptor/web/ContextResource.java       |   3 +
 .../tomcat/util/descriptor/web/FilterMap.java      |   6 +
 .../util/descriptor/web/InjectionTarget.java       |   6 +
 .../tomcat/util/descriptor/web/MultipartDef.java   |  12 ++
 .../tomcat/util/descriptor/web/ResourceBase.java   |   3 +
 .../util/descriptor/web/XmlEncodingBase.java       |   6 +
 .../util/http/InvalidParameterException.java       |   3 +
 java/org/apache/tomcat/util/http/ServerCookie.java |   6 +
 .../apache/tomcat/util/http/WebdavIfHeader.java    |   3 +-
 .../impl/FileCountLimitExceededException.java      |   3 +
 .../apache/tomcat/util/modeler/ManagedBean.java    |   9 ++
 java/org/apache/tomcat/util/net/SSLHostConfig.java | 144 +++++++++++++++++++
 .../tomcat/util/net/SSLHostConfigCertificate.java  |  51 +++++++
 .../tomcat/util/net/openssl/OpenSSLConf.java       |   3 +
 .../tomcat/util/net/openssl/OpenSSLConfCmd.java    |   2 +
 .../websocket/ReadBufferOverflowException.java     |   1 +
 .../org/apache/tomcat/websocket/WsIOException.java |   1 +
 .../tomcat/websocket/WsWebSocketContainer.java     |   5 +
 .../tomcat/websocket/server/WsWriteTimeout.java    |  16 +++
 .../apache/tomcat/jdbc/pool/PoolProperties.java    |  52 +++++++
 .../org/apache/tomcat/jdbc/pool/XADataSource.java  |   3 +
 50 files changed, 835 insertions(+), 9 deletions(-)

diff --git a/java/org/apache/catalina/authenticator/SingleSignOnEntry.java 
b/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
index 4aa6a68796..ca82255023 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
@@ -45,17 +45,32 @@ public class SingleSignOnEntry implements Serializable {
 
     // ------------------------------------------------------ Instance Fields
 
+    /**
+     * The authentication type (BASIC, CLIENT_CERT, DIGEST or FORM).
+     */
     private String authType = null;
 
+    /**
+     * The password used for authentication.
+     */
     private String password = null;
 
     // Marked as transient so special handling can be applied to serialization
     private transient Principal principal = null;
 
+    /**
+     * Map of session keys associated with this SSO entry.
+     */
     private final Map<SingleSignOnSessionKey,SingleSignOnSessionKey> 
sessionKeys = new ConcurrentHashMap<>();
 
+    /**
+     * The username used for authentication.
+     */
     private String username = null;
 
+    /**
+     * Flag indicating whether re-authentication is supported.
+     */
     private boolean canReauthenticate = false;
 
     // --------------------------------------------------------- Constructors
@@ -188,6 +203,12 @@ public class SingleSignOnEntry implements Serializable {
     }
 
 
+    /**
+     * Custom serialization to handle the transient principal field.
+     *
+     * @param out the object output stream
+     * @throws IOException if an I/O error occurs
+     */
     @Serial
     private void writeObject(ObjectOutputStream out) throws IOException {
         out.defaultWriteObject();
@@ -199,6 +220,13 @@ public class SingleSignOnEntry implements Serializable {
         }
     }
 
+    /**
+     * Custom deserialization to restore the transient principal field.
+     *
+     * @param in the object input stream
+     * @throws IOException if an I/O error occurs
+     * @throws ClassNotFoundException if the principal class cannot be found
+     */
     @Serial
     private void readObject(ObjectInputStream in) throws IOException, 
ClassNotFoundException {
         in.defaultReadObject();
diff --git a/java/org/apache/catalina/authenticator/SingleSignOnListener.java 
b/java/org/apache/catalina/authenticator/SingleSignOnListener.java
index 33eb78bacc..00034e6824 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOnListener.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOnListener.java
@@ -34,6 +34,9 @@ public class SingleSignOnListener implements SessionListener, 
Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The SSO identifier associated with this listener.
+     */
     private final String ssoId;
 
     /**
diff --git a/java/org/apache/catalina/authenticator/SingleSignOnSessionKey.java 
b/java/org/apache/catalina/authenticator/SingleSignOnSessionKey.java
index 28e8e10bb9..cf19aa8c7f 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOnSessionKey.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOnSessionKey.java
@@ -32,8 +32,17 @@ public class SingleSignOnSessionKey implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The session ID.
+     */
     private final String sessionId;
+    /**
+     * The context name.
+     */
     private final String contextName;
+    /**
+     * The host name.
+     */
     private final String hostName;
 
     /**
diff --git a/java/org/apache/catalina/core/ApplicationFilterConfig.java 
b/java/org/apache/catalina/core/ApplicationFilterConfig.java
index 2cf88c7e65..cfc7728343 100644
--- a/java/org/apache/catalina/core/ApplicationFilterConfig.java
+++ b/java/org/apache/catalina/core/ApplicationFilterConfig.java
@@ -336,8 +336,12 @@ public final class ApplicationFilterConfig implements 
FilterConfig, Serializable
     }
 
 
-    /*
-     * Log objects are not Serializable.
+    /**
+     * Restores the transient log field after deserialization.
+     *
+     * @param ois the object input stream
+     * @throws ClassNotFoundException if the log class cannot be found
+     * @throws IOException if an I/O error occurs
      */
     @Serial
     private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
diff --git a/java/org/apache/catalina/deploy/NamingResourcesImpl.java 
b/java/org/apache/catalina/deploy/NamingResourcesImpl.java
index 5a4c614c30..3a9a796ca9 100644
--- a/java/org/apache/catalina/deploy/NamingResourcesImpl.java
+++ b/java/org/apache/catalina/deploy/NamingResourcesImpl.java
@@ -72,6 +72,9 @@ public class NamingResourcesImpl extends LifecycleMBeanBase 
implements Serializa
 
     private static final StringManager sm = 
StringManager.getManager(NamingResourcesImpl.class);
 
+    /**
+     * Flag that controls whether resources require explicit JMX registration.
+     */
     private volatile boolean resourceRequireExplicitRegistration = false;
 
     // ----------------------------------------------------------- Constructors
diff --git a/java/org/apache/catalina/filters/CorsFilter.java 
b/java/org/apache/catalina/filters/CorsFilter.java
index 0ff9be34e9..7e0c8dca74 100644
--- a/java/org/apache/catalina/filters/CorsFilter.java
+++ b/java/org/apache/catalina/filters/CorsFilter.java
@@ -770,9 +770,14 @@ public class CorsFilter extends GenericFilter {
     }
 
 
-    /*
+    /**
+     * Restores the transient log field after deserialization.
      * Log objects are not Serializable but this Filter is because it extends 
GenericFilter. Tomcat won't serialize a
      * Filter but in case something else does...
+     *
+     * @param ois the object input stream
+     * @throws ClassNotFoundException if the log class cannot be found
+     * @throws IOException if an I/O error occurs
      */
     @Serial
     private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilter.java 
b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
index 2067369a81..dd4e8dbf55 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
@@ -784,6 +784,9 @@ public class CsrfPreventionFilter extends 
CsrfPreventionFilterBase {
 
         // Although the internal implementation uses a Map, this cache
         // implementation is only concerned with the keys.
+        /**
+         * The internal cache map.
+         */
         private final Map<T,T> cache;
 
         /**
diff --git a/java/org/apache/catalina/filters/RemoteIpFilter.java 
b/java/org/apache/catalina/filters/RemoteIpFilter.java
index 5c54d25685..95f1a030b8 100644
--- a/java/org/apache/catalina/filters/RemoteIpFilter.java
+++ b/java/org/apache/catalina/filters/RemoteIpFilter.java
@@ -810,34 +810,48 @@ public class RemoteIpFilter extends GenericFilter {
      */
     protected static final String ENABLE_LOOKUPS_PARAMETER = "enableLookups";
 
+    /** The default HTTP server port. */
     private int httpServerPort = 80;
 
+    /** The default HTTPS server port. */
     private int httpsServerPort = 443;
 
+    /** The set of internal proxy addresses. */
     private NetMaskSet internalProxies =
             
NetMaskSet.parse("10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,169.254.0.0/16,100.64.0.0/10,127.0.0.0/8,"
 +
                     "::1/128,fe80::/10,fc00::/7");
 
+    /** The header used to determine the protocol. */
     private String protocolHeader = "X-Forwarded-Proto";
 
+    /** The protocol header value that indicates HTTPS. */
     private String protocolHeaderHttpsValue = "https";
 
+    /** The header used to determine the host. */
     private String hostHeader = null;
 
+    /** Whether to change the local name. */
     private boolean changeLocalName = false;
 
+    /** The header used to determine the port. */
     private String portHeader = null;
 
+    /** Whether to change the local port. */
     private boolean changeLocalPort = false;
 
+    /** The header used to determine the proxy chain. */
     private String proxiesHeader = "X-Forwarded-By";
 
+    /** The header used to determine the remote IP address. */
     private String remoteIpHeader = "X-Forwarded-For";
 
+    /** Whether to set request attributes. */
     private boolean requestAttributesEnabled = true;
 
+    /** The set of trusted proxy addresses. */
     private NetMaskSet trustedProxies = null;
 
+    /** Whether DNS lookups are enabled. */
     private boolean enableLookups;
 
 
@@ -1483,6 +1497,12 @@ public class RemoteIpFilter extends GenericFilter {
      * Log objects are not Serializable but this Filter is because it extends 
GenericFilter. Tomcat won't serialize a
      * Filter but in case something else does...
      */
+   /**
+     * Restores the log after deserialization.
+     * @param ois the object input stream
+     * @throws ClassNotFoundException if the class is not found
+     * @throws IOException if an I/O error occurs
+     */
     @Serial
     private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
         ois.defaultReadObject();
diff --git a/java/org/apache/catalina/filters/RequestDumperFilter.java 
b/java/org/apache/catalina/filters/RequestDumperFilter.java
index a42d0ea02c..4a0ba267d9 100644
--- a/java/org/apache/catalina/filters/RequestDumperFilter.java
+++ b/java/org/apache/catalina/filters/RequestDumperFilter.java
@@ -256,9 +256,14 @@ public class RequestDumperFilter extends GenericFilter {
     }
 
 
-    /*
+    /**
+     * Restores the log after deserialization.
      * Log objects are not Serializable but this Filter is because it extends 
GenericFilter. Tomcat won't serialize a
      * Filter but in case something else does...
+     *
+     * @param ois the object input stream
+     * @throws ClassNotFoundException if the class is not found
+     * @throws IOException if an I/O error occurs
      */
     @Serial
     private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
diff --git a/java/org/apache/catalina/ha/deploy/FileMessage.java 
b/java/org/apache/catalina/ha/deploy/FileMessage.java
index 5d23358942..d79afad64a 100644
--- a/java/org/apache/catalina/ha/deploy/FileMessage.java
+++ b/java/org/apache/catalina/ha/deploy/FileMessage.java
@@ -30,12 +30,18 @@ public class FileMessage extends ClusterMessageBase {
     @Serial
     private static final long serialVersionUID = 2L;
 
+    /** The message number within the file transfer. */
     private int messageNumber;
+    /** The file data payload. */
     private byte[] data;
+    /** The length of the data. */
     private int dataLength;
 
+    /** The total number of messages in the transfer. */
     private long totalNrOfMsgs;
+    /** The name of the file being transferred. */
     private final String fileName;
+    /** The context name associated with the file. */
     private final String contextName;
 
     /**
diff --git a/java/org/apache/catalina/ha/deploy/UndeployMessage.java 
b/java/org/apache/catalina/ha/deploy/UndeployMessage.java
index de1a8718f4..83d88e8484 100644
--- a/java/org/apache/catalina/ha/deploy/UndeployMessage.java
+++ b/java/org/apache/catalina/ha/deploy/UndeployMessage.java
@@ -28,9 +28,13 @@ public class UndeployMessage implements ClusterMessage {
     @Serial
     private static final long serialVersionUID = 2L;
 
+    /** The sender's member address. */
     private Member address;
+    /** The message timestamp. */
     private long timestamp;
+    /** The unique identifier for this message. */
     private final String uniqueId;
+    /** The context name to undeploy. */
     private final String contextName;
 
     /**
diff --git a/java/org/apache/catalina/ha/session/SessionMessageImpl.java 
b/java/org/apache/catalina/ha/session/SessionMessageImpl.java
index 2c498d5358..afedd8447f 100644
--- a/java/org/apache/catalina/ha/session/SessionMessageImpl.java
+++ b/java/org/apache/catalina/ha/session/SessionMessageImpl.java
@@ -33,13 +33,20 @@ public class SessionMessageImpl extends ClusterMessageBase 
implements SessionMes
     /*
      * Private serializable variables to keep the messages state
      */
+    /** The event type of the session message. */
     private final int mEvtType;
+    /** The serialized session data. */
     private final byte[] mSession;
+    /** The session identifier. */
     private final String mSessionID;
 
+    /** The context name for the session. */
     private final String mContextName;
+    /** The timestamp when the message was serialized. */
     private long serializationTimestamp;
+    /** Whether the timestamp has been explicitly set. */
     private boolean timestampSet = false;
+    /** The unique identifier for this message. */
     private String uniqueId;
 
 
diff --git a/java/org/apache/catalina/manager/HTMLManagerServlet.java 
b/java/org/apache/catalina/manager/HTMLManagerServlet.java
index ae7858009c..7352922397 100644
--- a/java/org/apache/catalina/manager/HTMLManagerServlet.java
+++ b/java/org/apache/catalina/manager/HTMLManagerServlet.java
@@ -85,7 +85,9 @@ public class HTMLManagerServlet extends ManagerServlet {
     static final String connectorCertsJspPath = 
"/WEB-INF/jsp/connectorCerts.jsp";
     static final String connectorTrustedCertsJspPath = 
"/WEB-INF/jsp/connectorTrustedCerts.jsp";
 
+    /** Whether to show proxy sessions in the output. */
     private boolean showProxySessions = false;
+    /** The HTML subtitle for the manager pages. */
     private String htmlSubTitle = null;
 
     // --------------------------------------------------------- Public Methods
diff --git a/java/org/apache/catalina/realm/GenericPrincipal.java 
b/java/org/apache/catalina/realm/GenericPrincipal.java
index 56e5285d24..7a3ce603b4 100644
--- a/java/org/apache/catalina/realm/GenericPrincipal.java
+++ b/java/org/apache/catalina/realm/GenericPrincipal.java
@@ -254,6 +254,10 @@ public class GenericPrincipal implements TomcatPrincipal, 
Serializable {
 
     // ----------------------------------------------------------- 
Serialization
 
+    /**
+     * Returns a serializable replacement for this principal.
+     * @return the serializable replacement
+     */
     @Serial
     private Object writeReplace() {
         return new SerializablePrincipal(name, roles, userPrincipal, 
attributes);
diff --git a/java/org/apache/catalina/realm/X509SubjectDnRetriever.java 
b/java/org/apache/catalina/realm/X509SubjectDnRetriever.java
index f8d3a4a976..cb3c054ae6 100644
--- a/java/org/apache/catalina/realm/X509SubjectDnRetriever.java
+++ b/java/org/apache/catalina/realm/X509SubjectDnRetriever.java
@@ -23,6 +23,12 @@ import java.security.cert.X509Certificate;
  */
 public class X509SubjectDnRetriever implements X509UsernameRetriever {
 
+    /**
+     * Default constructor.
+     */
+    public X509SubjectDnRetriever() {
+    }
+
     @Override
     public String getUsername(X509Certificate clientCert) {
         return clientCert.getSubjectX500Principal().toString();
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java 
b/java/org/apache/catalina/servlets/CGIServlet.java
index c797abfe33..0e860352c6 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -247,8 +247,9 @@ public final class CGIServlet extends HttpServlet {
     /** the encoding to use for parameters */
     private String parameterEncoding = System.getProperty("file.encoding", 
"UTF-8");
 
-    /* The HTTP methods this Servlet will pass to the CGI script */
+    /** The HTTP methods this servlet will pass to the CGI script. */
     private final Set<String> cgiMethods = new HashSet<>();
+    /** Whether all HTTP methods are allowed for CGI scripts. */
     private boolean cgiMethodsAll = false;
 
     private transient WebResourceRoot resources = null;
diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java 
b/java/org/apache/catalina/servlets/WebdavServlet.java
index 4ad86b815a..001f7e3d9d 100644
--- a/java/org/apache/catalina/servlets/WebdavServlet.java
+++ b/java/org/apache/catalina/servlets/WebdavServlet.java
@@ -263,6 +263,7 @@ public class WebdavServlet extends DefaultServlet 
implements PeriodicEventListen
     private int maxDepth = MAX_DEPTH;
 
 
+    /** The maximum size of the request body in bytes. */
     private int maxRequestBodySize = DEFAULT_MAX_REQUEST_BODY_SIZE;
 
 
diff --git a/java/org/apache/catalina/tribes/io/XByteBuffer.java 
b/java/org/apache/catalina/tribes/io/XByteBuffer.java
index a31951c9e8..a87f02df47 100644
--- a/java/org/apache/catalina/tribes/io/XByteBuffer.java
+++ b/java/org/apache/catalina/tribes/io/XByteBuffer.java
@@ -51,6 +51,9 @@ public class XByteBuffer implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private static final Log log = LogFactory.getLog(XByteBuffer.class);
+    /**
+     * String manager for this class.
+     */
     protected static final StringManager sm = 
StringManager.getManager(XByteBuffer.class);
 
     /**
@@ -91,10 +94,23 @@ public class XByteBuffer implements Serializable {
         this.discard = discard;
     }
 
+    /**
+     * Constructs a new XByteBuffer from the given data.
+     *
+     * @param data    the initial data
+     * @param discard Flag for discarding invalid packages
+     */
     public XByteBuffer(byte[] data, boolean discard) {
         this(data, data.length + 128, discard);
     }
 
+    /**
+     * Constructs a new XByteBuffer from the given data with a specific buffer 
size.
+     *
+     * @param data    the initial data
+     * @param size    the initial size of the byte buffer
+     * @param discard Flag for discarding invalid packages
+     */
     public XByteBuffer(byte[] data, int size, boolean discard) {
         int length = Math.max(data.length, size);
         buf = new byte[length];
@@ -103,10 +119,20 @@ public class XByteBuffer implements Serializable {
         this.discard = discard;
     }
 
+    /**
+     * Returns the current length of the data in the buffer.
+     *
+     * @return the current length
+     */
     public int getLength() {
         return bufSize;
     }
 
+    /**
+     * Sets the current length of the data in the buffer.
+     *
+     * @param size the new length
+     */
     public void setLength(int size) {
         if (size > buf.length) {
             throw new 
ArrayIndexOutOfBoundsException(sm.getString("xByteBuffer.size.larger.buffer"));
@@ -114,6 +140,11 @@ public class XByteBuffer implements Serializable {
         bufSize = size;
     }
 
+    /**
+     * Trims the specified number of bytes from the end of the buffer.
+     *
+     * @param length the number of bytes to trim
+     */
     public void trim(int length) {
         if ((bufSize - length) < 0) {
             throw new ArrayIndexOutOfBoundsException(
@@ -122,10 +153,18 @@ public class XByteBuffer implements Serializable {
         bufSize -= length;
     }
 
+    /**
+     * Resets the buffer length to zero.
+     */
     public void reset() {
         bufSize = 0;
     }
 
+    /**
+     * Returns the internal byte array directly, without copying.
+     *
+     * @return the internal byte array
+     */
     public byte[] getBytesDirect() {
         return this.buf;
     }
@@ -178,6 +217,12 @@ public class XByteBuffer implements Serializable {
 
     }
 
+    /**
+     * Appends a single byte to the buffer.
+     *
+     * @param i the byte to append
+     * @return always returns true
+     */
     public boolean append(byte i) {
         int newcount = bufSize + 1;
         if (newcount > buf.length) {
@@ -189,6 +234,12 @@ public class XByteBuffer implements Serializable {
     }
 
 
+    /**
+     * Appends a boolean value to the buffer.
+     *
+     * @param i the boolean to append
+     * @return always returns true
+     */
     public boolean append(boolean i) {
         int newcount = bufSize + 1;
         if (newcount > buf.length) {
@@ -199,6 +250,12 @@ public class XByteBuffer implements Serializable {
         return true;
     }
 
+    /**
+     * Appends a long value to the buffer.
+     *
+     * @param i the long to append
+     * @return always returns true
+     */
     public boolean append(long i) {
         int newcount = bufSize + 8;
         if (newcount > buf.length) {
@@ -209,6 +266,12 @@ public class XByteBuffer implements Serializable {
         return true;
     }
 
+    /**
+     * Appends an integer value to the buffer.
+     *
+     * @param i the integer to append
+     * @return always returns true
+     */
     public boolean append(int i) {
         int newcount = bufSize + 4;
         if (newcount > buf.length) {
@@ -219,6 +282,14 @@ public class XByteBuffer implements Serializable {
         return true;
     }
 
+    /**
+     * Appends a portion of a byte array to the buffer.
+     *
+     * @param b   the byte array
+     * @param off the offset in the byte array
+     * @param len the number of bytes to append
+     * @return true if data was appended, false if length is zero
+     */
     public boolean append(byte[] b, int off, int len) {
         if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > 
b.length) || ((off + len) < 0)) {
             throw new IndexOutOfBoundsException();
@@ -243,6 +314,11 @@ public class XByteBuffer implements Serializable {
         return true;
     }
 
+    /**
+     * Expands the internal buffer to accommodate the specified number of 
bytes.
+     *
+     * @param newcount the new minimum capacity required
+     */
     public void expand(int newcount) {
         // don't change the allocation strategy
         byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)];
@@ -250,6 +326,11 @@ public class XByteBuffer implements Serializable {
         buf = newbuf;
     }
 
+    /**
+     * Returns the current capacity of the internal buffer.
+     *
+     * @return the buffer capacity
+     */
     public int getCapacity() {
         return buf.length;
     }
@@ -264,6 +345,12 @@ public class XByteBuffer implements Serializable {
         return countPackages(false);
     }
 
+    /**
+     * Counts the number of complete packages in the buffer.
+     *
+     * @param first if true, only check for the first package
+     * @return the number of complete packages found
+     */
     public int countPackages(boolean first) {
         int cnt = 0;
         int pos = START_DATA.length;
@@ -339,6 +426,12 @@ public class XByteBuffer implements Serializable {
 
     }
 
+    /**
+     * Extracts a complete package from the buffer and deserializes it into a 
ChannelData object.
+     *
+     * @param clearFromBuffer if true, the extracted package will be removed 
from the buffer
+     * @return the deserialized ChannelData object
+     */
     public ChannelData extractPackage(boolean clearFromBuffer) {
         XByteBuffer xbuf = extractDataPackage(clearFromBuffer);
         return ChannelData.getDataFromPackage(xbuf);
@@ -369,6 +462,16 @@ public class XByteBuffer implements Serializable {
         return data;
     }
 
+    /**
+     * Creates a complete data package with header, size, data, and footer, 
writing to a provided buffer.
+     *
+     * @param data   the data to package
+     * @param doff   the offset in the data array
+     * @param dlength the length of the data
+     * @param buffer the output buffer
+     * @param bufoff the offset in the output buffer
+     * @return the output buffer
+     */
     public static byte[] createDataPackage(byte[] data, int doff, int dlength, 
byte[] buffer, int bufoff) {
         if ((buffer.length - bufoff) > getDataPackageLength(dlength)) {
             throw new 
ArrayIndexOutOfBoundsException(sm.getString("xByteBuffer.unableCreate"));
@@ -381,6 +484,12 @@ public class XByteBuffer implements Serializable {
     }
 
 
+    /**
+     * Calculates the total length of a data package including header, size 
indicator, data, and footer.
+     *
+     * @param datalength the length of the data portion
+     * @return the total package length
+     */
     public static int getDataPackageLength(int datalength) {
         return START_DATA.length + // header length
                 4 + // data length indicator
@@ -388,6 +497,12 @@ public class XByteBuffer implements Serializable {
                 END_DATA.length; // footer length
     }
 
+    /**
+     * Creates a complete data package from the given data.
+     *
+     * @param data the data to package
+     * @return a full package (header, size, data, footer)
+     */
     public static byte[] createDataPackage(byte[] data) {
         int length = getDataPackageLength(data.length);
         byte[] result = new byte[length];
@@ -558,10 +673,30 @@ public class XByteBuffer implements Serializable {
     }
 
 
+    /**
+     * Deserializes a Serializable object from the given byte array.
+     *
+     * @param data the byte array containing the serialized object
+     * @return the deserialized object
+     * @throws IOException if an I/O error occurs
+     * @throws ClassNotFoundException if the class of the serialized object 
cannot be found
+     * @throws ClassCastException if the deserialized object is not 
Serializable
+     */
     public static Serializable deserialize(byte[] data) throws IOException, 
ClassNotFoundException, ClassCastException {
         return deserialize(data, 0, data.length);
     }
 
+    /**
+     * Deserializes a Serializable object from a portion of the given byte 
array.
+     *
+     * @param data   the byte array containing the serialized object
+     * @param offset the offset in the byte array
+     * @param length the length of the data to deserialize
+     * @return the deserialized object
+     * @throws IOException if an I/O error occurs
+     * @throws ClassNotFoundException if the class of the serialized object 
cannot be found
+     * @throws ClassCastException if the deserialized object is not 
Serializable
+     */
     public static Serializable deserialize(byte[] data, int offset, int length)
             throws IOException, ClassNotFoundException, ClassCastException {
         return deserialize(data, offset, length, null);
@@ -569,6 +704,18 @@ public class XByteBuffer implements Serializable {
 
     private static final AtomicInteger invokecount = new AtomicInteger(0);
 
+    /**
+     * Deserializes a Serializable object from a portion of the given byte 
array using the specified class loaders.
+     *
+     * @param data   the byte array containing the serialized object
+     * @param offset the offset in the byte array
+     * @param length the length of the data to deserialize
+     * @param cls    the class loaders to use for deserialization
+     * @return the deserialized object
+     * @throws IOException if an I/O error occurs
+     * @throws ClassNotFoundException if the class of the serialized object 
cannot be found
+     * @throws ClassCastException if the deserialized object is not 
Serializable
+     */
     public static Serializable deserialize(byte[] data, int offset, int 
length, ClassLoader[] cls)
             throws IOException, ClassNotFoundException, ClassCastException {
         invokecount.addAndGet(1);
@@ -610,10 +757,20 @@ public class XByteBuffer implements Serializable {
         return outs.toByteArray();
     }
 
+    /**
+     * Sets the discard flag for invalid packages.
+     *
+     * @param discard the new discard flag value
+     */
     public void setDiscard(boolean discard) {
         this.discard = discard;
     }
 
+    /**
+     * Returns the discard flag for invalid packages.
+     *
+     * @return the discard flag value
+     */
     public boolean getDiscard() {
         return discard;
     }
diff --git 
a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java 
b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
index 01783eff8d..489c976a65 100644
--- a/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/StaticMembershipProvider.java
@@ -453,8 +453,11 @@ public class StaticMembershipProvider extends 
MembershipProviderBase
          * Message type for member ping.
          */
         public static final int MSG_PING = 3;
+        /** The type of this member message. */
         private final int msgtype;
+        /** The membership group identifier. */
         private final byte[] membershipId;
+        /** The member associated with this message. */
         private Member member;
 
         /**
diff --git a/java/org/apache/catalina/util/ParameterMap.java 
b/java/org/apache/catalina/util/ParameterMap.java
index 3cfb5ba72f..1e9a8d7991 100644
--- a/java/org/apache/catalina/util/ParameterMap.java
+++ b/java/org/apache/catalina/util/ParameterMap.java
@@ -39,8 +39,10 @@ public final class ParameterMap<K, V> implements Map<K,V>, 
Serializable {
     @Serial
     private static final long serialVersionUID = 2L;
 
+    /** The underlying map to which operations are delegated. */
     private final Map<K,V> delegatedMap;
 
+    /** An unmodifiable view of the delegated map. */
     private final Map<K,V> unmodifiableDelegatedMap;
 
 
diff --git a/java/org/apache/catalina/util/XMLWriter.java 
b/java/org/apache/catalina/util/XMLWriter.java
index d4ec9302bd..85e425bfff 100644
--- a/java/org/apache/catalina/util/XMLWriter.java
+++ b/java/org/apache/catalina/util/XMLWriter.java
@@ -60,6 +60,9 @@ public class XMLWriter {
     protected final Writer writer;
 
 
+    /**
+     * Flag to track whether the last write operation was an opening tag.
+     */
     protected boolean lastWriteWasOpen;
 
 
diff --git a/java/org/apache/jasper/servlet/JspServlet.java 
b/java/org/apache/jasper/servlet/JspServlet.java
index 122f1580b8..2b80a309cd 100644
--- a/java/org/apache/jasper/servlet/JspServlet.java
+++ b/java/org/apache/jasper/servlet/JspServlet.java
@@ -60,11 +60,14 @@ public class JspServlet extends HttpServlet implements 
PeriodicEventListener {
     private final transient Log log = LogFactory.getLog(JspServlet.class);
 
     private transient ServletContext context;
+    /** The servlet configuration. */
     private ServletConfig config;
     private transient Options options;
     private transient JspRuntimeContext rctxt;
-    // jspFile for a jsp configured explicitly as a servlet, in environments 
where this
-    // configuration is translated into an init-param for this servlet.
+    /**
+     * The JSP file for a JSP configured explicitly as a servlet, in 
environments where this
+     * configuration is translated into an init-param for this servlet.
+     */
     private String jspFile;
 
 
diff --git a/java/org/apache/tomcat/jni/LibraryNotFoundError.java 
b/java/org/apache/tomcat/jni/LibraryNotFoundError.java
index 6099337da9..a8d775b5e0 100644
--- a/java/org/apache/tomcat/jni/LibraryNotFoundError.java
+++ b/java/org/apache/tomcat/jni/LibraryNotFoundError.java
@@ -26,6 +26,9 @@ public class LibraryNotFoundError extends 
UnsatisfiedLinkError {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The names of the libraries that failed to load.
+     */
     private final String libraryNames;
 
     /**
diff --git a/java/org/apache/tomcat/util/MultiThrowable.java 
b/java/org/apache/tomcat/util/MultiThrowable.java
index 8192f3007c..6c40d84f15 100644
--- a/java/org/apache/tomcat/util/MultiThrowable.java
+++ b/java/org/apache/tomcat/util/MultiThrowable.java
@@ -38,6 +38,9 @@ public class MultiThrowable extends Throwable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The list of wrapped throwables.
+     */
     private final List<Throwable> throwables = new ArrayList<>();
 
     /**
diff --git a/java/org/apache/tomcat/util/buf/ByteChunk.java 
b/java/org/apache/tomcat/util/buf/ByteChunk.java
index 0d6e86fc22..e9011d5b30 100644
--- a/java/org/apache/tomcat/util/buf/ByteChunk.java
+++ b/java/org/apache/tomcat/util/buf/ByteChunk.java
@@ -109,6 +109,9 @@ public final class ByteChunk extends AbstractChunk {
     private transient Charset charset;
 
     // byte[]
+    /**
+     * The underlying byte buffer.
+     */
     private byte[] buff;
 
     // transient as serialization is primarily for values via, e.g. JMX
@@ -133,6 +136,11 @@ public final class ByteChunk extends AbstractChunk {
     }
 
 
+   /**
+     * Serializes this ByteChunk, writing the charset name.
+     * @param oos the object output stream
+     * @throws IOException if an I/O error occurs
+     */
     @Serial
     private void writeObject(ObjectOutputStream oos) throws IOException {
         oos.defaultWriteObject();
@@ -140,6 +148,12 @@ public final class ByteChunk extends AbstractChunk {
     }
 
 
+    /**
+     * Deserializes this ByteChunk, restoring the charset.
+     * @param ois the object input stream
+     * @throws ClassNotFoundException if the class is not found
+     * @throws IOException if an I/O error occurs
+     */
     @Serial
     private void readObject(ObjectInputStream ois) throws 
ClassNotFoundException, IOException {
         ois.defaultReadObject();
diff --git a/java/org/apache/tomcat/util/buf/CharChunk.java 
b/java/org/apache/tomcat/util/buf/CharChunk.java
index dc867bbc9d..b169f72d12 100644
--- a/java/org/apache/tomcat/util/buf/CharChunk.java
+++ b/java/org/apache/tomcat/util/buf/CharChunk.java
@@ -63,6 +63,9 @@ public final class CharChunk extends AbstractChunk implements 
CharSequence {
     // --------------------
 
     // char[]
+    /**
+     * The underlying character buffer.
+     */
     private char[] buff;
 
     // transient as serialization is primarily for values via, e.g. JMX
diff --git a/java/org/apache/tomcat/util/buf/MessageBytes.java 
b/java/org/apache/tomcat/util/buf/MessageBytes.java
index 5c54d8b610..06bfb60111 100644
--- a/java/org/apache/tomcat/util/buf/MessageBytes.java
+++ b/java/org/apache/tomcat/util/buf/MessageBytes.java
@@ -40,6 +40,9 @@ public final class MessageBytes implements Cloneable, 
Serializable {
     private static final long serialVersionUID = 1L;
 
     // primary type ( whatever is set as original value )
+    /**
+     * The primary data type of this MessageBytes instance.
+     */
     private int type = T_NULL;
 
     /**
@@ -64,15 +67,30 @@ public final class MessageBytes implements Cloneable, 
Serializable {
      */
     public static final char[] EMPTY_CHAR_ARRAY = new char[0];
 
+    /**
+     * The cached hash code value.
+     */
     private int hashCode = 0;
     // did we compute the hashcode ?
+    /**
+     * Whether the hash code has been computed.
+     */
     private boolean hasHashCode = false;
 
     // Internal objects to represent array + offset, and specific methods
+    /**
+     * The internal byte chunk for byte array representation.
+     */
     private final ByteChunk byteC = new ByteChunk();
+    /**
+     * The internal char chunk for character array representation.
+     */
     private final CharChunk charC = new CharChunk();
 
     // String
+    /**
+     * The cached string value.
+     */
     private String strValue;
 
     /**
@@ -574,7 +592,13 @@ public final class MessageBytes implements Cloneable, 
Serializable {
     }
 
     // efficient long
+    /**
+     * The cached long value.
+     */
     private long longValue;
+    /**
+     * Whether the long value has been computed.
+     */
     private boolean hasLongValue = false;
 
     /**
diff --git a/java/org/apache/tomcat/util/descriptor/XmlErrorHandler.java 
b/java/org/apache/tomcat/util/descriptor/XmlErrorHandler.java
index 9365787041..f6161ca866 100644
--- a/java/org/apache/tomcat/util/descriptor/XmlErrorHandler.java
+++ b/java/org/apache/tomcat/util/descriptor/XmlErrorHandler.java
@@ -25,8 +25,17 @@ import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
+/**
+ * SAX error handler that collects warnings and errors for later processing.
+ */
 public class XmlErrorHandler implements ErrorHandler {
 
+    /**
+     * Default constructor.
+     */
+    public XmlErrorHandler() {
+    }
+
     private static final StringManager sm = 
StringManager.getManager(Constants.PACKAGE_NAME);
 
     private final List<SAXParseException> errors = new ArrayList<>();
@@ -51,16 +60,32 @@ public class XmlErrorHandler implements ErrorHandler {
         warnings.add(exception);
     }
 
+    /**
+     * Returns the list of collected parsing errors.
+     *
+     * @return the list of errors
+     */
     public List<SAXParseException> getErrors() {
         // Internal use only - don't worry about immutability
         return errors;
     }
 
+    /**
+     * Returns the list of collected parsing warnings.
+     *
+     * @return the list of warnings
+     */
     public List<SAXParseException> getWarnings() {
         // Internal use only - don't worry about immutability
         return warnings;
     }
 
+    /**
+     * Logs all collected warnings and errors to the specified log.
+     *
+     * @param log    the log to use
+     * @param source the source of the XML being parsed
+     */
     public void logFindings(Log log, String source) {
         for (SAXParseException e : getWarnings()) {
             log.warn(sm.getString("xmlErrorHandler.warning", e.getMessage(), 
source));
diff --git a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java 
b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
index 7e2b45aa80..33b8530c84 100644
--- a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
+++ b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java
@@ -22,74 +22,215 @@ package org.apache.tomcat.util.descriptor;
 public final class XmlIdentifiers {
 
     // from W3C
+    /**
+     * W3C XML Schema XSD identifier.
+     */
     public static final String XML_2001_XSD = "http://www.w3.org/2001/xml.xsd";;
+    /**
+     * W3C datatypes public identifier.
+     */
     public static final String DATATYPES_PUBLIC = "datatypes";
+    /**
+     * W3C XML Schema 1.0 public identifier.
+     */
     public static final String XSD_10_PUBLIC = "-//W3C//DTD XMLSCHEMA 
200102//EN";
 
     // from J2EE 1.2
+    /**
+     * Web Application 2.2 public identifier.
+     */
     public static final String WEB_22_PUBLIC = "-//Sun Microsystems, Inc.//DTD 
Web Application 2.2//EN";
+    /**
+     * Web Application 2.2 system identifier.
+     */
     public static final String WEB_22_SYSTEM = 
"http://java.sun.com/dtd/web-app_2_2.dtd";;
+    /**
+     * JSP Tag Library 1.1 public identifier.
+     */
     public static final String TLD_11_PUBLIC = "-//Sun Microsystems, Inc.//DTD 
JSP Tag Library 1.1//EN";
+    /**
+     * JSP Tag Library 1.1 system identifier.
+     */
     public static final String TLD_11_SYSTEM = 
"http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd";;
 
     // from J2EE 1.3
+    /**
+     * Web Application 2.3 public identifier.
+     */
     public static final String WEB_23_PUBLIC = "-//Sun Microsystems, Inc.//DTD 
Web Application 2.3//EN";
+    /**
+     * Web Application 2.3 system identifier.
+     */
     public static final String WEB_23_SYSTEM = 
"http://java.sun.com/dtd/web-app_2_3.dtd";;
+    /**
+     * JSP Tag Library 1.2 public identifier.
+     */
     public static final String TLD_12_PUBLIC = "-//Sun Microsystems, Inc.//DTD 
JSP Tag Library 1.2//EN";
+    /**
+     * JSP Tag Library 1.2 system identifier.
+     */
     public static final String TLD_12_SYSTEM = 
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd";;
 
     // from J2EE 1.4
+    /**
+     * Java EE 1.4 namespace.
+     */
     public static final String JAVAEE_1_4_NS = 
"http://java.sun.com/xml/ns/j2ee";;
+    /**
+     * Web Application 2.4 XSD.
+     */
     public static final String WEB_24_XSD = JAVAEE_1_4_NS + "/web-app_2_4.xsd";
+    /**
+     * JSP Tag Library 2.0 XSD.
+     */
     public static final String TLD_20_XSD = JAVAEE_1_4_NS + 
"/web-jsptaglibrary_2_0.xsd";
+    /**
+     * Web Services 1.1 XSD.
+     */
     public static final String WEBSERVICES_11_XSD = 
"http://www.ibm.com/webservices/xsd/j2ee_web_services_1_1.xsd";;
 
     // from JavaEE 5
+    /**
+     * Java EE 5 namespace.
+     */
     public static final String JAVAEE_5_NS = 
"http://java.sun.com/xml/ns/javaee";;
+    /**
+     * Web Application 2.5 XSD.
+     */
     public static final String WEB_25_XSD = JAVAEE_5_NS + "/web-app_2_5.xsd";
+    /**
+     * JSP Tag Library 2.1 XSD.
+     */
     public static final String TLD_21_XSD = JAVAEE_5_NS + 
"/web-jsptaglibrary_2_1.xsd";
+    /**
+     * Web Services 1.2 XSD.
+     */
     public static final String WEBSERVICES_12_XSD = JAVAEE_5_NS + 
"javaee_web_services_1_2.xsd";
 
     // from JavaEE 6
+    /**
+     * Java EE 6 namespace.
+     */
     public static final String JAVAEE_6_NS = JAVAEE_5_NS;
+    /**
+     * Web Application 3.0 XSD.
+     */
     public static final String WEB_30_XSD = JAVAEE_6_NS + "/web-app_3_0.xsd";
+    /**
+     * Web Fragment 3.0 XSD.
+     */
     public static final String WEB_FRAGMENT_30_XSD = JAVAEE_6_NS + 
"/web-fragment_3_0.xsd";
+    /**
+     * Web Services 1.3 XSD.
+     */
     public static final String WEBSERVICES_13_XSD = JAVAEE_6_NS + 
"/javaee_web_services_1_3.xsd";
 
     // from JavaEE 7
+    /**
+     * Java EE 7 namespace.
+     */
     public static final String JAVAEE_7_NS = 
"http://xmlns.jcp.org/xml/ns/javaee";;
+    /**
+     * Web Application 3.1 XSD.
+     */
     public static final String WEB_31_XSD = JAVAEE_7_NS + "/web-app_3_1.xsd";
+    /**
+     * Web Fragment 3.1 XSD.
+     */
     public static final String WEB_FRAGMENT_31_XSD = JAVAEE_7_NS + 
"/web-fragment_3_1.xsd";
+    /**
+     * Web Services 1.4 XSD.
+     */
     public static final String WEBSERVICES_14_XSD = JAVAEE_7_NS + 
"/javaee_web_services_1_4.xsd";
 
     // from JavaEE 8
+    /**
+     * Java EE 8 namespace.
+     */
     public static final String JAVAEE_8_NS = JAVAEE_7_NS;
+    /**
+     * Web Application 4.0 XSD.
+     */
     public static final String WEB_40_XSD = JAVAEE_8_NS + "/web-app_4_0.xsd";
+    /**
+     * Web Fragment 4.0 XSD.
+     */
     public static final String WEB_FRAGMENT_40_XSD = JAVAEE_8_NS + 
"/web-fragment_4_0.xsd";
 
     // from Jakarta EE 9
+    /**
+     * Jakarta EE 9 namespace.
+     */
     public static final String JAKARTAEE_9_NS = 
"https://jakarta.ee/xml/ns/jakartaee";;
+    /**
+     * Web Application 5.0 XSD.
+     */
     public static final String WEB_50_XSD = JAKARTAEE_9_NS + 
"/web-app_5_0.xsd";
+    /**
+     * Web Fragment 5.0 XSD.
+     */
     public static final String WEB_FRAGMENT_50_XSD = JAKARTAEE_9_NS + 
"/web-fragment_5_0.xsd";
+    /**
+     * JSP Tag Library 3.0 XSD.
+     */
     public static final String TLD_30_XSD = JAKARTAEE_9_NS + 
"/web-jsptaglibrary_3_0.xsd";
+    /**
+     * Web Services 2.0 XSD.
+     */
     public static final String WEBSERVICES_20_XSD = JAKARTAEE_9_NS + 
"/jakartaee_web_services_2_0.xsd";
 
     // from Jakarta EE 10
+    /**
+     * Jakarta EE 10 namespace.
+     */
     public static final String JAKARTAEE_10_NS = JAKARTAEE_9_NS;
+    /**
+     * Web Application 6.0 XSD.
+     */
     public static final String WEB_60_XSD = JAKARTAEE_10_NS + 
"/web-app_6_0.xsd";
+    /**
+     * Web Fragment 6.0 XSD.
+     */
     public static final String WEB_FRAGMENT_60_XSD = JAKARTAEE_10_NS + 
"/web-fragment_6_0.xsd";
+    /**
+     * JSP Tag Library 3.1 XSD.
+     */
     public static final String TLD_31_XSD = JAKARTAEE_10_NS + 
"/web-jsptaglibrary_3_1.xsd";
 
     // from Jakarta EE 11
+    /**
+     * Jakarta EE 11 namespace.
+     */
     public static final String JAKARTAEE_11_NS = JAKARTAEE_10_NS;
+    /**
+     * Web Application 6.1 XSD.
+     */
     public static final String WEB_61_XSD = JAKARTAEE_11_NS + 
"/web-app_6_1.xsd";
+    /**
+     * Web Fragment 6.1 XSD.
+     */
     public static final String WEB_FRAGMENT_61_XSD = JAKARTAEE_11_NS + 
"/web-fragment_6_1.xsd";
+    /**
+     * JSP Tag Library 4.0 XSD.
+     */
     public static final String TLD_40_XSD = JAKARTAEE_11_NS + 
"/web-jsptaglibrary_4_0.xsd";
 
     // from Jakarta EE 12
+    /**
+     * Jakarta EE 12 namespace.
+     */
     public static final String JAKARTAEE_12_NS = JAKARTAEE_11_NS;
+    /**
+     * Web Application 6.2 XSD.
+     */
     public static final String WEB_62_XSD = JAKARTAEE_12_NS + 
"/web-app_6_2.xsd";
+    /**
+     * Web Fragment 6.2 XSD.
+     */
     public static final String WEB_FRAGMENT_62_XSD = JAKARTAEE_12_NS + 
"/web-fragment_6_2.xsd";
+    /**
+     * JSP Tag Library 4.1 XSD.
+     */
     public static final String TLD_41_XSD = JAKARTAEE_12_NS + 
"/web-jsptaglibrary_4_1.xsd";
 
     private XmlIdentifiers() {
diff --git a/java/org/apache/tomcat/util/descriptor/web/ContextResource.java 
b/java/org/apache/tomcat/util/descriptor/web/ContextResource.java
index dd5a6c96db..d5b51f99be 100644
--- a/java/org/apache/tomcat/util/descriptor/web/ContextResource.java
+++ b/java/org/apache/tomcat/util/descriptor/web/ContextResource.java
@@ -114,6 +114,9 @@ public class ContextResource extends ResourceBase {
      * This method must only speed up the clean-up of resources that would 
otherwise happen via garbage collection.
      */
     private String closeMethod = null;
+    /**
+     * Whether the close method has been explicitly configured.
+     */
     private boolean closeMethodConfigured = false;
 
     /**
diff --git a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java 
b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
index b92750dd0b..fccce05123 100644
--- a/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
+++ b/java/org/apache/tomcat/util/descriptor/web/FilterMap.java
@@ -72,8 +72,14 @@ public class FilterMap extends XmlEncodingBase implements 
Serializable {
     // as equal to a REQUEST
     private static final int NOT_SET = 0;
 
+    /**
+     * The dispatcher mapping bitmask for this filter mapping.
+     */
     private int dispatcherMapping = NOT_SET;
 
+    /**
+     * The name of the filter associated with this mapping.
+     */
     private String filterName = null;
 
     /**
diff --git a/java/org/apache/tomcat/util/descriptor/web/InjectionTarget.java 
b/java/org/apache/tomcat/util/descriptor/web/InjectionTarget.java
index 9c6eee34b0..89fe462c3d 100644
--- a/java/org/apache/tomcat/util/descriptor/web/InjectionTarget.java
+++ b/java/org/apache/tomcat/util/descriptor/web/InjectionTarget.java
@@ -27,7 +27,13 @@ public class InjectionTarget implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The fully qualified class name of the injection target.
+     */
     private String targetClass;
+    /**
+     * The name of the field or method to inject into.
+     */
     private String targetName;
 
 
diff --git a/java/org/apache/tomcat/util/descriptor/web/MultipartDef.java 
b/java/org/apache/tomcat/util/descriptor/web/MultipartDef.java
index 1f18ed8bf6..bff2ad32b5 100644
--- a/java/org/apache/tomcat/util/descriptor/web/MultipartDef.java
+++ b/java/org/apache/tomcat/util/descriptor/web/MultipartDef.java
@@ -35,6 +35,9 @@ public class MultipartDef implements Serializable {
     }
 
     // ------------------------------------------------------------- Properties
+    /**
+     * The location for temporary file storage.
+     */
     private String location;
 
     /**
@@ -54,6 +57,9 @@ public class MultipartDef implements Serializable {
     }
 
 
+    /**
+     * The maximum allowed file size.
+     */
     private String maxFileSize;
 
     /**
@@ -73,6 +79,9 @@ public class MultipartDef implements Serializable {
     }
 
 
+    /**
+     * The maximum allowed request size.
+     */
     private String maxRequestSize;
 
     /**
@@ -92,6 +101,9 @@ public class MultipartDef implements Serializable {
     }
 
 
+    /**
+     * The file size threshold for switching to disk storage.
+     */
     private String fileSizeThreshold;
 
     /**
diff --git a/java/org/apache/tomcat/util/descriptor/web/ResourceBase.java 
b/java/org/apache/tomcat/util/descriptor/web/ResourceBase.java
index 1ea9f2b5ee..daca36ff01 100644
--- a/java/org/apache/tomcat/util/descriptor/web/ResourceBase.java
+++ b/java/org/apache/tomcat/util/descriptor/web/ResourceBase.java
@@ -180,6 +180,9 @@ public class ResourceBase implements Serializable, 
Injectable {
         return properties.keySet().iterator();
     }
 
+    /**
+     * The list of injection targets for this resource.
+     */
     private final List<InjectionTarget> injectionTargets = new ArrayList<>();
 
     @Override
diff --git a/java/org/apache/tomcat/util/descriptor/web/XmlEncodingBase.java 
b/java/org/apache/tomcat/util/descriptor/web/XmlEncodingBase.java
index 642e10ed87..9c8f96c89f 100644
--- a/java/org/apache/tomcat/util/descriptor/web/XmlEncodingBase.java
+++ b/java/org/apache/tomcat/util/descriptor/web/XmlEncodingBase.java
@@ -24,6 +24,12 @@ import java.nio.charset.StandardCharsets;
  */
 public abstract class XmlEncodingBase {
 
+    /**
+     * Default constructor.
+     */
+    public XmlEncodingBase() {
+    }
+
     private Charset charset = StandardCharsets.UTF_8;
 
 
diff --git a/java/org/apache/tomcat/util/http/InvalidParameterException.java 
b/java/org/apache/tomcat/util/http/InvalidParameterException.java
index d12650495a..3c79900ce4 100644
--- a/java/org/apache/tomcat/util/http/InvalidParameterException.java
+++ b/java/org/apache/tomcat/util/http/InvalidParameterException.java
@@ -31,6 +31,9 @@ public class InvalidParameterException extends 
IllegalStateException {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The HTTP error code associated with this exception.
+     */
     private final int errorCode;
 
 
diff --git a/java/org/apache/tomcat/util/http/ServerCookie.java 
b/java/org/apache/tomcat/util/http/ServerCookie.java
index 7fb727cb72..9f04068289 100644
--- a/java/org/apache/tomcat/util/http/ServerCookie.java
+++ b/java/org/apache/tomcat/util/http/ServerCookie.java
@@ -35,7 +35,13 @@ public class ServerCookie implements Serializable {
     private static final long serialVersionUID = 1L;
 
     // RFC 6265
+    /**
+     * The cookie name.
+     */
     private final MessageBytes name = MessageBytes.newInstance();
+    /**
+     * The cookie value.
+     */
     private final MessageBytes value = MessageBytes.newInstance();
 
     /**
diff --git a/java/org/apache/tomcat/util/http/WebdavIfHeader.java 
b/java/org/apache/tomcat/util/http/WebdavIfHeader.java
index 7b169dc30c..1f31790f42 100644
--- a/java/org/apache/tomcat/util/http/WebdavIfHeader.java
+++ b/java/org/apache/tomcat/util/http/WebdavIfHeader.java
@@ -704,8 +704,7 @@ public class WebdavIfHeader {
      * <pre>
      *    IfList = { [ "Not" ] ( ("&lt;" Word "&gt;" ) | ( "[" Word "]" ) ) } .
      * </pre>
-     * <p>
-     */
+      */
     private static class IfList extends ArrayList<IfListEntry> {
 
         @Serial
diff --git 
a/java/org/apache/tomcat/util/http/fileupload/impl/FileCountLimitExceededException.java
 
b/java/org/apache/tomcat/util/http/fileupload/impl/FileCountLimitExceededException.java
index 958f681276..ebedbe8ef8 100644
--- 
a/java/org/apache/tomcat/util/http/fileupload/impl/FileCountLimitExceededException.java
+++ 
b/java/org/apache/tomcat/util/http/fileupload/impl/FileCountLimitExceededException.java
@@ -26,6 +26,9 @@ public class FileCountLimitExceededException extends 
FileUploadException {
 
     private static final long serialVersionUID = 2408766352570556046L;
 
+    /**
+     * The file count limit that was exceeded.
+     */
     private final long limit;
 
     /**
diff --git a/java/org/apache/tomcat/util/modeler/ManagedBean.java 
b/java/org/apache/tomcat/util/modeler/ManagedBean.java
index 6d38562d37..a5d555b56a 100644
--- a/java/org/apache/tomcat/util/modeler/ManagedBean.java
+++ b/java/org/apache/tomcat/util/modeler/ManagedBean.java
@@ -57,14 +57,23 @@ public class ManagedBean implements java.io.Serializable {
     static final Class<?>[] NO_ARGS_PARAM_SIG = new Class[0];
 
 
+    /**
+     * Lock for thread-safe access to the MBeanInfo cache.
+     */
     private final ReadWriteLock mBeanInfoLock = new ReentrantReadWriteLock();
     /**
      * The <code>ModelMBeanInfo</code> object that corresponds to this 
<code>ManagedBean</code> instance.
      */
     private transient volatile MBeanInfo info = null;
 
+    /**
+     * The map of attribute descriptors by name.
+     */
     private final Map<String,AttributeInfo> attributes = new HashMap<>();
 
+    /**
+     * The map of operation descriptors by key.
+     */
     private final Map<String,OperationInfo> operations = new HashMap<>();
 
     /**
diff --git a/java/org/apache/tomcat/util/net/SSLHostConfig.java 
b/java/org/apache/tomcat/util/net/SSLHostConfig.java
index 0febd14c85..340a768192 100644
--- a/java/org/apache/tomcat/util/net/SSLHostConfig.java
+++ b/java/org/apache/tomcat/util/net/SSLHostConfig.java
@@ -91,72 +91,216 @@ public class SSLHostConfig implements Serializable {
         SSL_PROTO_ALL_SET.add(Constants.SSL_PROTO_TLSv1_3);
     }
 
+    /**
+     * The detected configuration type (JSSE or OpenSSL).
+     */
     private Type configType = null;
+    /**
+     * The detected trust configuration type (JSSE or OpenSSL).
+     */
     private Type trustConfigType = null;
 
+    /**
+     * The name of the virtual host.
+     */
     private String hostName = DEFAULT_SSL_HOST_NAME;
 
+    /**
+     * The native OpenSSL configuration context pointer.
+     */
     private transient volatile Long openSslConfContext = Long.valueOf(0);
     // OpenSSL can handle multiple certs in a single config so the reference to
     // the context is here at the virtual host level. JSSE can't so the
     // reference is held on the certificate.
+    /**
+     * The native OpenSSL SSL context pointer.
+     */
     private transient volatile Long openSslContext = Long.valueOf(0);
 
+    /**
+     * Whether TLS 1.3 renegotiation is available.
+     */
     private boolean tls13RenegotiationAvailable = false;
 
     // Configuration properties
 
     // Internal
+    /**
+     * The ciphers enabled by the SSL engine.
+     */
     private String[] enabledCiphers;
+    /**
+     * The protocols enabled by the SSL engine.
+     */
     private String[] enabledProtocols;
+    /**
+     * The JMX object name.
+     */
     private ObjectName oname;
     // Need to know if TLS 1.3 has been explicitly requested as a warning needs
     // to generated if it is explicitly requested for a JVM that does not
     // support it. Uses a set so it is extensible for TLS 1.4 etc.
+    /**
+     * The set of protocols explicitly requested by the user.
+     */
     private final Set<String> explicitlyRequestedProtocols = new HashSet<>();
     // Nested
+    /**
+     * The default certificate configuration.
+     */
     private SSLHostConfigCertificate defaultCertificate = null;
+    /**
+     * The set of certificate configurations.
+     */
     private final Set<SSLHostConfigCertificate> certificates = new 
LinkedHashSet<>(4);
     // Common
+    /**
+     * The path to the certificate revocation list file.
+     */
     private String certificateRevocationListFile;
+    /**
+     * The client certificate verification mode.
+     */
     private CertificateVerification certificateVerification = 
CertificateVerification.NONE;
+    /**
+     * The depth for certificate chain verification.
+     */
     private int certificateVerificationDepth = 10;
     // Used to track if certificateVerificationDepth has been explicitly set
+    /**
+     * Whether the certificate verification depth was explicitly configured.
+     */
     private boolean certificateVerificationDepthConfigured = false;
+    /**
+     * The cipher configuration for TLS 1.2 and below (OpenSSL format).
+     */
     private String ciphers = DEFAULT_TLS_CIPHERS_12;
+    /**
+     * The cipher suite configuration for TLS 1.3.
+     */
     private String cipherSuites = DEFAULT_TLS_CIPHERS_13;
+    /**
+     * The parsed cipher list for TLS 1.2 and below.
+     */
     private LinkedHashSet<Cipher> cipherList = null;
+    /**
+     * The parsed cipher suite list for TLS 1.3.
+     */
     private LinkedHashSet<Cipher> cipherSuiteList = null;
+    /**
+     * The JSSE cipher names derived from the configuration.
+     */
     private List<String> jsseCipherNames = null;
+    /**
+     * Whether to honor the server's cipher order preference.
+     */
     private boolean honorCipherOrder = false;
+    /**
+     * Whether OCSP stapling is enabled.
+     */
     private boolean ocspEnabled = false;
+    /**
+     * Whether OCSP soft fail is enabled.
+     */
     private boolean ocspSoftFail = true;
+    /**
+     * The OCSP request timeout in milliseconds.
+     */
     private int ocspTimeout = 15000;
+    /**
+     * The OCSP verification flags.
+     */
     private int ocspVerifyFlags = 0;
+    /**
+     * The set of enabled SSL/TLS protocols.
+     */
     private final Set<String> protocols = new HashSet<>();
     // Values <0 mean use the implementation default
+    /**
+     * The SSL session cache size.
+     */
     private int sessionCacheSize = -1;
+    /**
+     * The SSL session timeout in seconds.
+     */
     private int sessionTimeout = 86400;
     // JSSE
+    /**
+     * The key manager algorithm.
+     */
     private String keyManagerAlgorithm = 
KeyManagerFactory.getDefaultAlgorithm();
+    /**
+     * Whether CRL/OCSP revocation checking is enabled.
+     */
     private boolean revocationEnabled = false;
+    /**
+     * The JSSE SSL protocol name.
+     */
     private String sslProtocol = Constants.SSL_PROTO_TLS;
+    /**
+     * The trust manager class name.
+     */
     private String trustManagerClassName;
+    /**
+     * The truststore algorithm.
+     */
     private String truststoreAlgorithm = 
TrustManagerFactory.getDefaultAlgorithm();
+    /**
+     * The truststore file path.
+     */
     private String truststoreFile = 
System.getProperty("javax.net.ssl.trustStore");
+    /**
+     * The truststore password.
+     */
     private String truststorePassword = 
System.getProperty("javax.net.ssl.trustStorePassword");
+    /**
+     * The truststore provider.
+     */
     private String truststoreProvider = 
System.getProperty("javax.net.ssl.trustStoreProvider");
+    /**
+     * The truststore type.
+     */
     private String truststoreType = 
System.getProperty("javax.net.ssl.trustStoreType");
+    /**
+     * The truststore instance.
+     */
     private transient KeyStore truststore = null;
+    /**
+     * The configured TLS named groups.
+     */
     private String groups = System.getProperty("jdk.tls.namedGroups");
+    /**
+     * The parsed group list.
+     */
     private LinkedHashSet<Group> groupList = null;
     // OpenSSL
+    /**
+     * The path to the certificate revocation list directory.
+     */
     private String certificateRevocationListPath;
+    /**
+     * The path to the CA certificate file.
+     */
     private String caCertificateFile;
+    /**
+     * The path to the CA certificate directory.
+     */
     private String caCertificatePath;
+    /**
+     * Whether TLS compression is disabled.
+     */
     private boolean disableCompression = true;
+    /**
+     * Whether TLS session tickets are disabled.
+     */
     private boolean disableSessionTickets = false;
+    /**
+     * Whether insecure renegotiation is allowed.
+     */
     private boolean insecureRenegotiation = false;
+    /**
+     * The OpenSSL configuration.
+     */
     private OpenSSLConf openSslConf = null;
 
     /**
diff --git a/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java 
b/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
index 0faddb29dd..edd52cda0f 100644
--- a/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
+++ b/java/org/apache/tomcat/util/net/SSLHostConfigCertificate.java
@@ -56,6 +56,9 @@ public class SSLHostConfigCertificate implements Serializable 
{
     private static final String DEFAULT_KEYSTORE_FILE = 
System.getProperty("user.home") + File.separator + ".keystore";
 
     // Internal
+    /**
+     * The JMX object name for this certificate.
+     */
     private ObjectName oname;
 
     /*
@@ -68,27 +71,75 @@ public class SSLHostConfigCertificate implements 
Serializable {
 
 
     // Common
+    /**
+     * The parent SSL host configuration.
+     */
     private final SSLHostConfig sslHostConfig;
+    /**
+     * The type of this certificate.
+     */
     private final Type type;
+    /**
+     * The password for the certificate's private key.
+     */
     private String certificateKeyPassword = null;
+    /**
+     * The path to the file containing the certificate key password.
+     */
     private String certificateKeyPasswordFile = null;
 
     // JSSE
+    /**
+     * The alias of the key entry in the keystore.
+     */
     private String certificateKeyAlias;
+    /**
+     * The password used to access the keystore.
+     */
     private String certificateKeystorePassword = null;
+    /**
+     * The path to the file containing the keystore password.
+     */
     private String certificateKeystorePasswordFile = null;
+    /**
+     * The path to the keystore file.
+     */
     private String certificateKeystoreFile = DEFAULT_KEYSTORE_FILE;
+    /**
+     * The provider of the keystore.
+     */
     private String certificateKeystoreProvider = DEFAULT_KEYSTORE_PROVIDER;
+    /**
+     * The type of the keystore.
+     */
     private String certificateKeystoreType = DEFAULT_KEYSTORE_TYPE;
+    /**
+     * The Java KeyStore for this certificate.
+     */
     private transient KeyStore certificateKeystore = null;
+    /**
+     * The X509KeyManager for this certificate.
+     */
     private transient X509KeyManager certificateKeyManager = null;
 
     // OpenSSL
+    /**
+     * The path to the certificate chain file.
+     */
     private String certificateChainFile;
+    /**
+     * The path to the certificate file.
+     */
     private String certificateFile;
+    /**
+     * The path to the private key file.
+     */
     private String certificateKeyFile;
 
     // Certificate store type
+    /**
+     * The type of certificate store (KEYSTORE or PEM).
+     */
     private StoreType storeType = null;
 
     /**
diff --git a/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java 
b/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
index dfa255a35d..dee8a650fa 100644
--- a/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
+++ b/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java
@@ -35,6 +35,9 @@ public class OpenSSLConf implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /**
+     * The list of OpenSSL configuration commands.
+     */
     private final List<OpenSSLConfCmd> commands = new ArrayList<>();
 
     /**
diff --git a/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java 
b/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java
index f0be87d87f..c6215c1661 100644
--- a/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java
+++ b/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java
@@ -37,7 +37,9 @@ public class OpenSSLConfCmd implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /** The command name. */
     private String name = null;
+    /** The command value. */
     private String value = null;
 
     /**
diff --git a/java/org/apache/tomcat/websocket/ReadBufferOverflowException.java 
b/java/org/apache/tomcat/websocket/ReadBufferOverflowException.java
index 5acd15ece0..33ece7d095 100644
--- a/java/org/apache/tomcat/websocket/ReadBufferOverflowException.java
+++ b/java/org/apache/tomcat/websocket/ReadBufferOverflowException.java
@@ -27,6 +27,7 @@ public class ReadBufferOverflowException extends IOException {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /** The minimum buffer size required. */
     private final int minBufferSize;
 
     /**
diff --git a/java/org/apache/tomcat/websocket/WsIOException.java 
b/java/org/apache/tomcat/websocket/WsIOException.java
index fef6998d62..7ce0548c93 100644
--- a/java/org/apache/tomcat/websocket/WsIOException.java
+++ b/java/org/apache/tomcat/websocket/WsIOException.java
@@ -30,6 +30,7 @@ public class WsIOException extends IOException {
     @Serial
     private static final long serialVersionUID = 1L;
 
+    /** The WebSocket close reason. */
     private final CloseReason closeReason;
 
     /**
diff --git a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java 
b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
index 0870f35043..12b38ea992 100644
--- a/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
+++ b/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
@@ -124,6 +124,11 @@ public class WsWebSocketContainer implements 
WebSocketContainer, BackgroundProce
         return InstanceManagerBindings.get(classLoader);
     }
 
+    /**
+     * Sets the instance manager for this container.
+     *
+     * @param instanceManager the instance manager
+     */
     protected void setInstanceManager(InstanceManager instanceManager) {
         this.instanceManager = instanceManager;
     }
diff --git a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java 
b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
index be844e1a34..99ca213465 100644
--- a/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
+++ b/java/org/apache/tomcat/websocket/server/WsWriteTimeout.java
@@ -31,6 +31,12 @@ import org.apache.tomcat.websocket.BackgroundProcessManager;
  */
 public class WsWriteTimeout implements BackgroundProcess {
 
+    /**
+     * Default constructor.
+     */
+    public WsWriteTimeout() {
+    }
+
     /**
      * Note: The comparator imposes orderings that are inconsistent with equals
      */
@@ -82,6 +88,11 @@ public class WsWriteTimeout implements BackgroundProcess {
     }
 
 
+    /**
+     * Registers an endpoint for timeout tracking.
+     *
+     * @param endpoint the endpoint to register
+     */
     public void register(WsRemoteEndpointImplServer endpoint) {
         boolean result = endpoints.add(endpoint);
         if (result) {
@@ -93,6 +104,11 @@ public class WsWriteTimeout implements BackgroundProcess {
     }
 
 
+    /**
+     * Unregisters an endpoint from timeout tracking.
+     *
+     * @param endpoint the endpoint to unregister
+     */
     public void unregister(WsRemoteEndpointImplServer endpoint) {
         boolean result = endpoints.remove(endpoint);
         if (result) {
diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
index bde736eec8..dec13f524c 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/PoolProperties.java
@@ -54,57 +54,109 @@ public class PoolProperties implements PoolConfiguration, 
Cloneable, Serializabl
      * Counter for tracking the number of pools created.
      */
     protected static final AtomicInteger poolCounter = new AtomicInteger(0);
+    /** Database-specific properties. */
     private volatile Properties dbProperties = new Properties();
+    /** The JDBC connection URL. */
     private volatile String url = null;
+    /** The JDBC driver class name. */
     private volatile String driverClassName = null;
+    /** The default auto-commit setting for connections. */
     private volatile Boolean defaultAutoCommit = null;
+    /** The default read-only setting for connections. */
     private volatile Boolean defaultReadOnly = null;
+    /** The default transaction isolation level. */
     private volatile int defaultTransactionIsolation = 
DataSourceFactory.UNKNOWN_TRANSACTIONISOLATION;
+    /** The default catalog for connections. */
     private volatile String defaultCatalog = null;
+    /** Additional connection properties. */
     private volatile String connectionProperties;
+    /** The initial number of connections in the pool. */
     private volatile int initialSize = 10;
+    /** The maximum number of active connections. */
     private volatile int maxActive = DEFAULT_MAX_ACTIVE;
+    /** The maximum number of idle connections. */
     private volatile int maxIdle = maxActive;
+    /** The minimum number of idle connections. */
     private volatile int minIdle = initialSize;
+    /** The maximum wait time in milliseconds for a connection. */
     private volatile int maxWait = 30000;
+    /** The SQL query used for validation. */
     private volatile String validationQuery;
+    /** The validation query timeout in seconds. */
     private volatile int validationQueryTimeout = -1;
+    /** The fully qualified class name of the validator. */
     private volatile String validatorClassName;
+    /** The validator instance. */
     private transient volatile Validator validator;
+    /** Whether to validate connections on borrow. */
     private volatile boolean testOnBorrow = false;
+    /** Whether to validate connections on return. */
     private volatile boolean testOnReturn = false;
+    /** Whether to validate idle connections. */
     private volatile boolean testWhileIdle = false;
+    /** The time between eviction runs in milliseconds. */
     private volatile int timeBetweenEvictionRunsMillis = 5000;
+    /** The number of connections to test per eviction run. */
     private volatile int numTestsPerEvictionRun;
+    /** The minimum idle time before a connection is eligible for eviction. */
     private volatile int minEvictableIdleTimeMillis = 60000;
+    /** Whether to allow access to the underlying connection. */
     private volatile boolean accessToUnderlyingConnectionAllowed = true;
+    /** Whether to remove abandoned connections. */
     private volatile boolean removeAbandoned = false;
+    /** The timeout in seconds for abandoned connection removal. */
     private volatile int removeAbandonedTimeout = 60;
+    /** Whether to log abandoned connections. */
     private volatile boolean logAbandoned = false;
+    /** The pool name. */
     private volatile String name = "Tomcat Connection 
Pool["+(poolCounter.addAndGet(1))+"-"+System.identityHashCode(PoolProperties.class)+"]";
+    /** The database password. */
     private volatile String password;
+    /** The database username. */
     private volatile String username;
+    /** The validation interval in milliseconds. */
     private volatile long validationInterval = 3000;
+    /** Whether JMX registration is enabled. */
     private volatile boolean jmxEnabled = true;
+    /** The SQL to execute on connection creation. */
     private volatile String initSQL;
+    /** Whether to validate connections on creation. */
     private volatile boolean testOnConnect =false;
+    /** The JDBC interceptors configuration. */
     private volatile String jdbcInterceptors=null;
+    /** Whether to use a fair queue for connection requests. */
     private volatile boolean fairQueue = true;
+    /** Whether to use equals for object comparison. */
     private volatile boolean useEquals = true;
+    /** The percentage threshold for abandoning connections. */
     private volatile int abandonWhenPercentageFull = 0;
+    /** The maximum age of a connection in milliseconds. */
     private volatile long maxAge = 0;
+    /** Whether to use locking for thread safety. */
     private volatile boolean useLock = false;
+    /** The interceptor definitions. */
     private volatile InterceptorDefinition[] interceptors = null;
+    /** The suspect timeout in seconds. */
     private volatile int suspectTimeout = 0;
+    /** The underlying data source. */
     private volatile Object dataSource = null;
+    /** The JNDI name of the data source. */
     private volatile String dataSourceJNDI = null;
+    /** Whether alternate usernames are allowed. */
     private volatile boolean alternateUsernameAllowed = false;
+    /** Whether to commit on connection return. */
     private volatile boolean commitOnReturn = false;
+    /** Whether to rollback on connection return. */
     private volatile boolean rollbackOnReturn = false;
+    /** Whether to use a disposable connection facade. */
     private volatile boolean useDisposableConnectionFacade = true;
+    /** Whether to log validation errors. */
     private volatile boolean logValidationErrors = false;
+    /** Whether to propagate interrupt state. */
     private volatile boolean propagateInterruptState = false;
+    /** Whether to ignore exceptions during pre-load. */
     private volatile boolean ignoreExceptionOnPreLoad = false;
+    /** Whether to use a statement facade. */
     private volatile boolean useStatementFacade = true;
 
     @Override
diff --git 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/XADataSource.java 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/XADataSource.java
index dfd836c440..427368746d 100644
--- 
a/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/XADataSource.java
+++ 
b/modules/jdbc-pool/src/main/java/org/apache/tomcat/jdbc/pool/XADataSource.java
@@ -16,6 +16,9 @@
  */
 package org.apache.tomcat.jdbc.pool;
 
+/**
+ * XA-enabled data source for distributed transaction support.
+ */
 public class XADataSource extends DataSource implements javax.sql.XADataSource 
{
 
     /**


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to