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 2020/01/21 17:50:06 UTC
[tomcat] branch master updated: Java Servlet -> Jakarta Servlet
request attributes for AJP Connector
This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push:
new 0aa5a8d Java Servlet -> Jakarta Servlet request attributes for AJP Connector
0aa5a8d is described below
commit 0aa5a8de8c24f79df4da3f3135eee5dd2e54c2ba
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Tue Jan 21 17:49:54 2020 +0000
Java Servlet -> Jakarta Servlet request attributes for AJP Connector
---
java/org/apache/coyote/ajp/AjpProcessor.java | 18 ++++++++++++++++++
webapps/docs/changelog.xml | 4 ++++
2 files changed, 22 insertions(+)
diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java
index 01e7d3d..0c593ba 100644
--- a/java/org/apache/coyote/ajp/AjpProcessor.java
+++ b/java/org/apache/coyote/ajp/AjpProcessor.java
@@ -25,6 +25,9 @@ import java.nio.ByteBuffer;
import java.security.NoSuchProviderException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import jakarta.servlet.http.HttpServletResponse;
@@ -78,6 +81,9 @@ public class AjpProcessor extends AbstractProcessor {
private static final byte[] pongMessageArray;
+ private static final Map<String,String> jakartaAttributeMapping;
+
+
static {
// Allocate the end message array
AjpMessage endMessage = new AjpMessage(16);
@@ -118,6 +124,14 @@ public class AjpProcessor extends AbstractProcessor {
pongMessageArray = new byte[pongMessage.getLen()];
System.arraycopy(pongMessage.getBuffer(), 0, pongMessageArray,
0, pongMessage.getLen());
+
+ // Build Map of Java Servlet to Jakarta Servlet attribute names
+ Map<String,String> m = new HashMap<>();
+ m.put("javax.servlet.request.cipher_suite", "jakarta.servlet.request.cipher_suite");
+ m.put("javax.servlet.request.key_size", "jakarta.servlet.request.key_size");
+ m.put("javax.servlet.request.ssl_session", "jakarta.servlet.request.ssl_session");
+ m.put("javax.servlet.request.X509Certificate", "jakarta.servlet.request.X509Certificate");
+ jakartaAttributeMapping = Collections.unmodifiableMap(m);
}
@@ -728,6 +742,10 @@ public class AjpProcessor extends AbstractProcessor {
}
} else if(n.equals(Constants.SC_A_SSL_PROTOCOL)) {
request.setAttribute(SSLSupport.PROTOCOL_VERSION_KEY, v);
+ } else if (jakartaAttributeMapping.containsKey(n)) {
+ // AJP uses the Java Servlet attribute names.
+ // Need to convert these to Jakarta SAervlet.
+ request.setAttribute(jakartaAttributeMapping.get(n), v);
} else {
request.setAttribute(n, v );
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 33fceaa..d7324e1 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -72,6 +72,10 @@
<update>
Remove unused NIO blocking selector. (remm)
</update>
+ <add>
+ When using an AJP Connector, convert Java Servlet specific request
+ attributes to the Jakarta Servlet equivalent. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Other">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org