This is an automated email from the ASF dual-hosted git repository.
markt-asf pushed a commit to branch 11.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/11.0.x by this push:
new 2a05326096 Use Files API to create temporary docBase with
antiLockingDocBase
2a05326096 is described below
commit 2a0532609657ca2d92c01d921fc85316a8d1ac5e
Author: Mark Thomas <[email protected]>
AuthorDate: Fri Jun 26 15:20:48 2026 +0100
Use Files API to create temporary docBase with antiLockingDocBase
---
.../org/apache/catalina/startup/ContextConfig.java | 22 +++++++++++-----------
.../catalina/startup/LocalStrings.properties | 2 +-
.../catalina/startup/LocalStrings_fr.properties | 1 -
.../catalina/startup/LocalStrings_ja.properties | 1 -
.../catalina/startup/LocalStrings_ko.properties | 1 -
.../catalina/startup/LocalStrings_zh_CN.properties | 1 -
webapps/docs/changelog.xml | 4 ++++
7 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/java/org/apache/catalina/startup/ContextConfig.java
b/java/org/apache/catalina/startup/ContextConfig.java
index 31bb2c9d8a..60b630200c 100644
--- a/java/org/apache/catalina/startup/ContextConfig.java
+++ b/java/org/apache/catalina/startup/ContextConfig.java
@@ -27,6 +27,7 @@ import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
+import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -955,19 +956,18 @@ public class ContextConfig implements LifecycleListener {
return;
}
ContextName cn = new ContextName(path, context.getWebappVersion());
- docBase = cn.getBaseName();
- String tmp = System.getProperty("java.io.tmpdir");
- File tmpFile = new File(tmp);
- if (!tmpFile.isDirectory()) {
- log.error(sm.getString("contextConfig.noAntiLocking", tmp,
context.getName()));
- return;
- }
+ String prefix = "tomcat-" + deploymentCount++ + "-" +
cn.getBaseName();
- if (originalDocBase.toLowerCase(Locale.ENGLISH).endsWith(".war")) {
- antiLockingDocBase = new File(tmpFile, deploymentCount++ + "-"
+ docBase + ".war");
- } else {
- antiLockingDocBase = new File(tmpFile, deploymentCount++ + "-"
+ docBase);
+ try {
+ if
(originalDocBase.toLowerCase(Locale.ENGLISH).endsWith(".war")) {
+ antiLockingDocBase = Files.createTempFile(prefix,
".war").toFile();
+ } else {
+ antiLockingDocBase =
Files.createTempDirectory(prefix).toFile();
+ }
+ } catch (IOException ioe) {
+ log.error(sm.getString("contextConfig.noAntiLocking",
context.getName()), ioe);
+ return;
}
antiLockingDocBase = antiLockingDocBase.getAbsoluteFile();
diff --git a/java/org/apache/catalina/startup/LocalStrings.properties
b/java/org/apache/catalina/startup/LocalStrings.properties
index fa8898aded..c60fff8c48 100644
--- a/java/org/apache/catalina/startup/LocalStrings.properties
+++ b/java/org/apache/catalina/startup/LocalStrings.properties
@@ -79,7 +79,7 @@ contextConfig.jspFile.error=JSP file [{0}] must start with a
''/''
contextConfig.jspFile.warning=WARNING: JSP file [{0}] must start with a ''/''
in Servlet 2.4
contextConfig.loadError=Error loading generated code
contextConfig.missingRealm=No Realm has been configured to authenticate against
-contextConfig.noAntiLocking=The value [{0}] configured for java.io.tmpdir does
not point to a valid directory. The antiResourceLocking setting for the web
application [{1}] will be ignored.
+contextConfig.noAntiLocking=Failed to create temporary docBase for [{0}]. The
antiResourceLocking setting will be ignored.
contextConfig.noJsp=Skipping JSP property group for URL [{0}], no JSP Servlet
found for name [{1}]
contextConfig.processAnnotationsDir.debug=Scanning directory for class files
with annotations [{0}]
contextConfig.processAnnotationsInParallelFailure=Parallel execution failed
diff --git a/java/org/apache/catalina/startup/LocalStrings_fr.properties
b/java/org/apache/catalina/startup/LocalStrings_fr.properties
index e385e85753..4200e88105 100644
--- a/java/org/apache/catalina/startup/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_fr.properties
@@ -77,7 +77,6 @@ contextConfig.jspFile.error=Le fichier JSP [{0}] doit
commencer par un ''/''
contextConfig.jspFile.warning=WARNING : Le fichier JSP [{0}] doit commencer
par un ''/'' dans l''API Servlet 2.4
contextConfig.loadError=Erreur lors du chargement du code généré
contextConfig.missingRealm=Aucun royaume (realm) n'a été configuré pour
réaliser l'authentification
-contextConfig.noAntiLocking=La valeur [{0}] configurée pour java.io.tmpdir ne
correspond pas à un répertoire valide, le paramètre antiResourceLocking
configuré pour l''application [{1}] sera ignoré
contextConfig.noJsp=Le groupe de propriétés JSP pour l''URL [{0}] sera sauté,
le Servlet JSP avec le nom [{1}] n''a pas été trouvé
contextConfig.processAnnotationsDir.debug=Balayage du répertoire pour trouver
des fichiers de classe avec annotations [{0}]
contextConfig.processAnnotationsInParallelFailure=L'exécution en parallèle a
échoué
diff --git a/java/org/apache/catalina/startup/LocalStrings_ja.properties
b/java/org/apache/catalina/startup/LocalStrings_ja.properties
index 2bf41f9336..b778088d23 100644
--- a/java/org/apache/catalina/startup/LocalStrings_ja.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_ja.properties
@@ -77,7 +77,6 @@ contextConfig.jspFile.error=JSPファイル [{0}] は''/''で始まらなけれ
contextConfig.jspFile.warning=警告: Servlet 2.4ではJSPファイル [{0}]
は''/''で始まらなければいけません
contextConfig.loadError=生成されたコードのロード中にエラーが発生しました
contextConfig.missingRealm=認証するためにレルムが設定されていません
-contextConfig.noAntiLocking=java.io.tmpdirに設定された値[{0}]が有効なディレクトリを指していません。
Webアプリケーション[{1}]のantiResourceLocking設定は無視されます。
contextConfig.noJsp=URL [{0}] の JSP プロパティ グループをスキップしています。名前 [{1}] の JSP
サーブレットが見つかりません
contextConfig.processAnnotationsDir.debug=[{0}] 配下のディレクトリからクラスファイルをスキャンします
contextConfig.processAnnotationsInParallelFailure=並列実行に失敗しました
diff --git a/java/org/apache/catalina/startup/LocalStrings_ko.properties
b/java/org/apache/catalina/startup/LocalStrings_ko.properties
index 50c92fb150..2fcd9f8ead 100644
--- a/java/org/apache/catalina/startup/LocalStrings_ko.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_ko.properties
@@ -71,7 +71,6 @@ contextConfig.jarFile=Annotation들을 위해 Jar [{0}]을(를) 처리할 수
contextConfig.jspFile.error=JSP 파일 [{0}]은(는) 반드시 ''/''로 시작해야 합니다.
contextConfig.jspFile.warning=경고: Servlet 2.4에서 JSP 파일 [{0}]은(는) 반드시 ''/''로
시작해야 합니다.
contextConfig.missingRealm=인증 처리 시 사용할 Realm이 설정되지 않았습니다.
-contextConfig.noAntiLocking=java.io.tmpdir 프로퍼티 값 [{0}]이(가) 유효한 디렉토리 경로가 아닙니다.
해당 웹 애플리케이션 [{1}]을(를) 위한 antiResourceLocking 설정은 무시됩니다.
contextConfig.processAnnotationsDir.debug=Annotation들을 가진 클래스 파일들을 찾기 위해 디렉토리
[{0}]을(를) 스캔합니다.
contextConfig.processAnnotationsInParallelFailure=병렬 처리 실패
contextConfig.processAnnotationsJar.debug=Annotation들, [{0}]을(를) 가진 클래스 파일들을
찾기 위해, JAR 파일을 스캔합니다.
diff --git a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
index 860e3f7c37..805d0a92eb 100644
--- a/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_zh_CN.properties
@@ -71,7 +71,6 @@ contextConfig.jspFile.error=JSP文件[{0}]必须以''/''开头。
contextConfig.jspFile.warning=警告:在Servlet 2.4 中,JSP文件[{0}]必须以‘/’开头
contextConfig.loadError=加载生成的代码错误
contextConfig.missingRealm=对应的认证领域未配置
-contextConfig.noAntiLocking=配置
java.io.tmpdir的值[{0}]未指向有效路径。Web应用[{1}]antiResourceLocking配置将被忽略
contextConfig.processAnnotationsDir.debug=使用注解 [{0}]扫描目录中的类文件
contextConfig.processAnnotationsInParallelFailure=并行执行失败
contextConfig.processAnnotationsJar.debug=扫描jar文件中注解[{0}]的类文件
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 7264e323fa..25465de589 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -133,6 +133,10 @@
Align DIGEST authentication with RFC 7616 and require clients to
provide
a valid <code>qop</code> parameter. (markt)
</fix>
+ <fix>
+ Use <code>Files</code> API to create temporary docBase when
+ <code>antiLockingDocBase</code> is enabled. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]