You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2025/10/31 15:41:16 UTC
(tomcat) 02/03: Refactor AprStatus to o.a.t.jni package
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 5014379c108a9ac430c3f8fa72709e9e09375ea2
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Fri Oct 31 14:48:04 2025 +0000
Refactor AprStatus to o.a.t.jni package
The low-level connector code needs access to the status to correctly
perform clean-up without triggering a crash. See subsequent commits.
---
build.xml | 1 +
java/org/apache/catalina/connector/Connector.java | 2 +-
.../apache/catalina/core/AprLifecycleListener.java | 30 +++++++++++-----------
java/org/apache/catalina/core/AprStatus.java | 30 ++++++++++------------
.../{catalina/core => tomcat/jni}/AprStatus.java | 3 +--
.../tomcat/util/net/TestClientCertTls13.java | 2 +-
.../tomcat/util/net/openssl/TestOpenSSLConf.java | 2 +-
7 files changed, 34 insertions(+), 36 deletions(-)
diff --git a/build.xml b/build.xml
index 578fbb869a..401439ee44 100644
--- a/build.xml
+++ b/build.xml
@@ -561,6 +561,7 @@
<include name="org/apache/tomcat/util/scan/LocalStrings.properties" />
<!-- Minimize JNI to what doesn't throw an error -->
+ <include name="org/apache/tomcat/jni/AprStatus.class" />
<include name="org/apache/tomcat/jni/Library.class" />
<include name="org/apache/tomcat/jni/LibraryNotFoundError*" />
<exclude name="org/apache/tomcat/jni" />
diff --git a/java/org/apache/catalina/connector/Connector.java b/java/org/apache/catalina/connector/Connector.java
index 31418475b0..2d41b5ff03 100644
--- a/java/org/apache/catalina/connector/Connector.java
+++ b/java/org/apache/catalina/connector/Connector.java
@@ -28,7 +28,6 @@ import javax.management.ObjectName;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.LifecycleState;
import org.apache.catalina.Service;
-import org.apache.catalina.core.AprStatus;
import org.apache.catalina.util.LifecycleMBeanBase;
import org.apache.coyote.AbstractProtocol;
import org.apache.coyote.Adapter;
@@ -37,6 +36,7 @@ import org.apache.coyote.UpgradeProtocol;
import org.apache.coyote.http11.AbstractHttp11Protocol;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.jni.AprStatus;
import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.CharsetUtil;
diff --git a/java/org/apache/catalina/core/AprLifecycleListener.java b/java/org/apache/catalina/core/AprLifecycleListener.java
index 8393167160..c8d6976ec5 100644
--- a/java/org/apache/catalina/core/AprLifecycleListener.java
+++ b/java/org/apache/catalina/core/AprLifecycleListener.java
@@ -108,16 +108,16 @@ public class AprLifecycleListener implements LifecycleListener {
public static boolean isAprAvailable() {
// https://bz.apache.org/bugzilla/show_bug.cgi?id=48613
- if (AprStatus.isInstanceCreated()) {
+ if (org.apache.tomcat.jni.AprStatus.isInstanceCreated()) {
synchronized (lock) {
init();
}
}
- return AprStatus.isAprAvailable();
+ return org.apache.tomcat.jni.AprStatus.isAprAvailable();
}
public AprLifecycleListener() {
- AprStatus.setInstanceCreated(true);
+ org.apache.tomcat.jni.AprStatus.setInstanceCreated(true);
}
// ---------------------------------------------- LifecycleListener Methods
@@ -145,7 +145,7 @@ public class AprLifecycleListener implements LifecycleListener {
log.info(msg);
}
initInfoLogMessages.clear();
- if (AprStatus.isAprAvailable()) {
+ if (org.apache.tomcat.jni.AprStatus.isAprAvailable()) {
try {
initializeSSL();
} catch (Throwable t) {
@@ -172,7 +172,7 @@ public class AprLifecycleListener implements LifecycleListener {
// Still being used
return;
}
- if (!AprStatus.isAprAvailable()) {
+ if (!org.apache.tomcat.jni.AprStatus.isAprAvailable()) {
return;
}
try {
@@ -188,8 +188,8 @@ public class AprLifecycleListener implements LifecycleListener {
}
private static void terminateAPR() {
- AprStatus.setAprInitialized(false);
- AprStatus.setAprAvailable(false);
+ org.apache.tomcat.jni.AprStatus.setAprInitialized(false);
+ org.apache.tomcat.jni.AprStatus.setAprAvailable(false);
fipsModeActive = false;
sslInitialized = false; // terminate() will clean the pool
// There could be unreferenced SSL_CTX still waiting for GC
@@ -201,10 +201,10 @@ public class AprLifecycleListener implements LifecycleListener {
int rqver = TCN_REQUIRED_MAJOR * 1000 + TCN_REQUIRED_MINOR * 100 + TCN_REQUIRED_PATCH;
int rcver = TCN_RECOMMENDED_MAJOR * 1000 + TCN_RECOMMENDED_MINOR * 100 + TCN_RECOMMENDED_PV;
- if (AprStatus.isAprInitialized()) {
+ if (org.apache.tomcat.jni.AprStatus.isAprInitialized()) {
return;
}
- AprStatus.setAprInitialized(true);
+ org.apache.tomcat.jni.AprStatus.setAprInitialized(true);
try {
Library.initialize(null);
@@ -259,7 +259,7 @@ public class AprLifecycleListener implements LifecycleListener {
initInfoLogMessages
.add(sm.getString("aprListener.tcnValid", Library.versionString(), Library.aprVersionString()));
- AprStatus.setAprAvailable(true);
+ org.apache.tomcat.jni.AprStatus.setAprAvailable(true);
}
private static void initializeSSL() throws Exception {
@@ -289,7 +289,7 @@ public class AprLifecycleListener implements LifecycleListener {
method = clazz.getMethod(methodName, paramTypes);
method.invoke(null, paramValues);
- AprStatus.setOpenSSLVersion(SSL.version());
+ org.apache.tomcat.jni.AprStatus.setOpenSSLVersion(SSL.version());
// OpenSSL 3 onwards uses providers
boolean usingProviders = tcnMajor > 1 || (tcnVersion > 1233 && (SSL.version() & 0xF0000000L) > 0x20000000);
@@ -429,17 +429,17 @@ public class AprLifecycleListener implements LifecycleListener {
}
public void setUseOpenSSL(boolean useOpenSSL) {
- if (useOpenSSL != AprStatus.getUseOpenSSL()) {
- AprStatus.setUseOpenSSL(useOpenSSL);
+ if (useOpenSSL != org.apache.tomcat.jni.AprStatus.getUseOpenSSL()) {
+ org.apache.tomcat.jni.AprStatus.setUseOpenSSL(useOpenSSL);
}
}
public static boolean getUseOpenSSL() {
- return AprStatus.getUseOpenSSL();
+ return org.apache.tomcat.jni.AprStatus.getUseOpenSSL();
}
public static boolean isInstanceCreated() {
- return AprStatus.isInstanceCreated();
+ return org.apache.tomcat.jni.AprStatus.isInstanceCreated();
}
}
diff --git a/java/org/apache/catalina/core/AprStatus.java b/java/org/apache/catalina/core/AprStatus.java
index bbc4f0a90e..9e6a8893a6 100644
--- a/java/org/apache/catalina/core/AprStatus.java
+++ b/java/org/apache/catalina/core/AprStatus.java
@@ -18,58 +18,56 @@ package org.apache.catalina.core;
/**
* Holds APR status without the need to load other classes.
+ *
+ * @deprecated Unused. Use {@link org.apache.tomcat.jni.AprStatus} instead. This class will be removed in Tomcat 12
+ * onwards.
*/
+@Deprecated
public class AprStatus {
- private static volatile boolean aprInitialized = false;
- private static volatile boolean aprAvailable = false;
- private static volatile boolean useOpenSSL = true;
- private static volatile boolean instanceCreated = false;
- private static volatile int openSSLVersion = 0;
public static boolean isAprInitialized() {
- return aprInitialized;
+ return org.apache.tomcat.jni.AprStatus.isAprInitialized();
}
public static boolean isAprAvailable() {
- return aprAvailable;
+ return org.apache.tomcat.jni.AprStatus.isAprAvailable();
}
public static boolean getUseOpenSSL() {
- return useOpenSSL;
+ return org.apache.tomcat.jni.AprStatus.getUseOpenSSL();
}
public static boolean isInstanceCreated() {
- return instanceCreated;
+ return org.apache.tomcat.jni.AprStatus.isInstanceCreated();
}
public static void setAprInitialized(boolean aprInitialized) {
- AprStatus.aprInitialized = aprInitialized;
+ org.apache.tomcat.jni.AprStatus.setAprInitialized(aprInitialized);
}
public static void setAprAvailable(boolean aprAvailable) {
- AprStatus.aprAvailable = aprAvailable;
+ org.apache.tomcat.jni.AprStatus.setAprAvailable(aprAvailable);
}
public static void setUseOpenSSL(boolean useOpenSSL) {
- AprStatus.useOpenSSL = useOpenSSL;
+ org.apache.tomcat.jni.AprStatus.setUseOpenSSL(useOpenSSL);
}
public static void setInstanceCreated(boolean instanceCreated) {
- AprStatus.instanceCreated = instanceCreated;
+ org.apache.tomcat.jni.AprStatus.setInstanceCreated(instanceCreated);
}
/**
* @return the openSSLVersion
*/
public static int getOpenSSLVersion() {
- return openSSLVersion;
+ return org.apache.tomcat.jni.AprStatus.getOpenSSLVersion();
}
/**
* @param openSSLVersion the openSSLVersion to set
*/
public static void setOpenSSLVersion(int openSSLVersion) {
- AprStatus.openSSLVersion = openSSLVersion;
+ org.apache.tomcat.jni.AprStatus.setOpenSSLVersion(openSSLVersion);
}
-
}
diff --git a/java/org/apache/catalina/core/AprStatus.java b/java/org/apache/tomcat/jni/AprStatus.java
similarity index 98%
copy from java/org/apache/catalina/core/AprStatus.java
copy to java/org/apache/tomcat/jni/AprStatus.java
index bbc4f0a90e..d255b2ba76 100644
--- a/java/org/apache/catalina/core/AprStatus.java
+++ b/java/org/apache/tomcat/jni/AprStatus.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.catalina.core;
+package org.apache.tomcat.jni;
/**
* Holds APR status without the need to load other classes.
@@ -71,5 +71,4 @@ public class AprStatus {
public static void setOpenSSLVersion(int openSSLVersion) {
AprStatus.openSSLVersion = openSSLVersion;
}
-
}
diff --git a/test/org/apache/tomcat/util/net/TestClientCertTls13.java b/test/org/apache/tomcat/util/net/TestClientCertTls13.java
index 4cac01286a..0b103fa40c 100644
--- a/test/org/apache/tomcat/util/net/TestClientCertTls13.java
+++ b/test/org/apache/tomcat/util/net/TestClientCertTls13.java
@@ -31,9 +31,9 @@ import org.junit.runners.Parameterized.Parameter;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.connector.Connector;
-import org.apache.catalina.core.AprStatus;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.jni.AprStatus;
import org.apache.tomcat.util.buf.ByteChunk;
import org.apache.tomcat.util.net.openssl.OpenSSLStatus;
diff --git a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
index 46f07d0ac6..3183eae5bf 100644
--- a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
+++ b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java
@@ -39,11 +39,11 @@ import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.core.AprLifecycleListener;
-import org.apache.catalina.core.AprStatus;
import org.apache.catalina.core.OpenSSLLifecycleListener;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
+import org.apache.tomcat.jni.AprStatus;
import org.apache.tomcat.jni.SSLContext;
import org.apache.tomcat.util.net.SSLHostConfig;
import org.apache.tomcat.util.net.TesterSupport;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org