Hi,
I noticed something peculiar while browsing through the sources of
Tomcat/Catalina.
Both HttpProcessor and HttpConnector use a private String object to
synchronize their threads on:
private String threadSync = "";
The JLS requires that all static String be 'intern'ed so they all refer
to the same String Object. See the Java Language Spec. 3.10.5
(http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html)
This means that all HttpProcessors and HttpConnectors use the same
object to synchronize on!
Unless this is intentional (which I doubt) it suggest both be replaced
by
private Object threadSync = new Object();
Luc Vanlerberghe
Index: HttpConnector.java
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/http/HttpConnector.java,v
retrieving revision 1.5
diff -u -r1.5 HttpConnector.java
--- HttpConnector.java 2000/12/16 19:01:23 1.5
+++ HttpConnector.java 2000/12/22 15:42:37
@@ -253,7 +253,7 @@
/**
* The thread synchronization object.
*/
- private String threadSync = "";
+ private Object threadSync = new Object();
/**
Index: HttpProcessor.java
===================================================================
RCS file:
/home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/http/HttpProcessor.java,v
retrieving revision 1.18
diff -u -r1.18 HttpProcessor.java
--- HttpProcessor.java 2000/12/17 01:05:40 1.18
+++ HttpProcessor.java 2000/12/22 15:42:38
@@ -242,7 +242,7 @@
/**
* The thread synchronization object.
*/
- private String threadSync = "";
+ private Object threadSync = new Object();
/**