Author: markt
Date: Sun Sep 23 11:24:02 2012
New Revision: 1389020
URL: http://svn.apache.org/viewvc?rev=1389020&view=rev
Log:
A toLowerCase() on the provided encoding was responsible for ~8% of all
allocated objects with a simple ab load test.
Modified:
tomcat/trunk/java/org/apache/catalina/connector/Connector.java
tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
Modified: tomcat/trunk/java/org/apache/catalina/connector/Connector.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Connector.java?rev=1389020&r1=1389019&r2=1389020&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/Connector.java (original)
+++ tomcat/trunk/java/org/apache/catalina/connector/Connector.java Sun Sep 23
11:24:02 2012
@@ -20,6 +20,7 @@ import java.net.InetAddress;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.Locale;
import javax.management.ObjectName;
@@ -225,6 +226,7 @@ public class Connector extends Lifecycle
* URI encoding.
*/
protected String URIEncoding = null;
+ protected String URIEncodingLower = null;
/**
@@ -740,12 +742,19 @@ public class Connector extends Lifecycle
}
/**
- * Return the character encoding to be used for the URI.
+ * Return the character encoding to be used for the URI using the original
+ * case.
*/
public String getURIEncoding() {
+ return this.URIEncoding;
+ }
- return (this.URIEncoding);
+ /**
+ * Return the character encoding to be used for the URI using lower case.
+ */
+ public String getURIEncodingLower() {
+ return this.URIEncodingLower;
}
@@ -755,10 +764,9 @@ public class Connector extends Lifecycle
* @param URIEncoding The new URI character encoding.
*/
public void setURIEncoding(String URIEncoding) {
-
this.URIEncoding = URIEncoding;
+ this.URIEncodingLower = URIEncoding.toLowerCase(Locale.US);
setProperty("uRIEncoding", URIEncoding);
-
}
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=1389020&r1=1389019&r2=1389020&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Sun Sep
23 11:24:02 2012
@@ -837,13 +837,13 @@ public class CoyoteAdapter implements Ad
// What encoding to use? Some platforms, eg z/os, use a default
// encoding that doesn't give the expected result so be explicit
- String enc = connector.getURIEncoding();
+ String enc = connector.getURIEncodingLower();
if (enc == null) {
- enc = "ISO-8859-1";
+ enc = "iso-8859-1";
}
Charset charset = null;
try {
- charset = B2CConverter.getCharset(enc);
+ charset = B2CConverter.getCharsetLower(enc);
} catch (UnsupportedEncodingException e1) {
log.warn(sm.getString("coyoteAdapter.parsePathParam",
enc));
Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java?rev=1389020&r1=1389019&r2=1389020&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/buf/B2CConverter.java Sun Sep 23
11:24:02 2012
@@ -81,12 +81,21 @@ public class B2CConverter {
// Encoding names should all be ASCII
String lowerCaseEnc = enc.toLowerCase(Locale.US);
+ return getCharsetLower(lowerCaseEnc);
+ }
+
+ /**
+ * Only to be used when it is known that the encoding name is in lower
case.
+ */
+ public static Charset getCharsetLower(String lowerCaseEnc)
+ throws UnsupportedEncodingException{
+
Charset charset = encodingToCharsetCache.get(lowerCaseEnc);
if (charset == null) {
// Pre-population of the cache means this must be invalid
throw new UnsupportedEncodingException(
- sm.getString("b2cConverter.unknownEncoding", enc));
+ sm.getString("b2cConverter.unknownEncoding",
lowerCaseEnc));
}
return charset;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]