svn commit: r711205 - /tomcat/connectors/trunk/jk/xdocs/index.xml

2008-11-04 Thread mturk
Author: mturk
Date: Tue Nov  4 00:09:43 2008
New Revision: 711205

URL: http://svn.apache.org/viewvc?rev=711205&view=rev
Log:
Add 2008 news to the main page

Modified:
tomcat/connectors/trunk/jk/xdocs/index.xml

Modified: tomcat/connectors/trunk/jk/xdocs/index.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/index.xml?rev=711205&r1=711204&r2=711205&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/index.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/index.xml Tue Nov  4 00:09:43 2008
@@ -213,6 +213,8 @@
 
 
 
+2008
+
 2007
 
 2006



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: svn commit: r711205 - /tomcat/connectors/trunk/jk/xdocs/index.xml

2008-11-04 Thread Rainer Jung
[EMAIL PROTECTED] schrieb:
> Author: mturk
> Date: Tue Nov  4 00:09:43 2008
> New Revision: 711205
> 
> URL: http://svn.apache.org/viewvc?rev=711205&view=rev
> Log:
> Add 2008 news to the main page

Thanks for fixing this. I now also added 2008 news to the menu for all
pages and updated the live docs. I don't think it's a critical fix
though, since the news is there and linked at the top of the welcome page.

Regards,

Rainer

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



DO NOT REPLY [Bug 46131] for a root context getContextPath returns "/" after a forward

2008-11-04 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=46131


Mark Thomas <[EMAIL PROTECTED]> changed:

   What|Removed |Added

 Status|REOPENED|RESOLVED
 Resolution||INVALID




--- Comment #4 from Mark Thomas <[EMAIL PROTECTED]>  2008-11-04 06:50:55 PST ---
A path setting of "/" is invalid.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



DO NOT REPLY [Bug 46131] for a root context getContextPath returns "/" after a forward

2008-11-04 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=46131


Denny Strietzbaum <[EMAIL PROTECTED]> changed:

   What|Removed |Added

 Status|RESOLVED|REOPENED
 Resolution|INVALID |




--- Comment #3 from Denny Strietzbaum <[EMAIL PROTECTED]>  2008-11-04 04:12:10 
PST ---
Reopened because i've found out more.
The problem only occurs when declare the context within server.xml and
setting the path to "/".

This (correct) context declaration works as expected:


Whereas this (not so correct) one produces the decribed issue:


I know it's not a good thing to use the server.xml but unluckily 
i have no influence on that.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



[Fwd: [Urgent] Please help promote ApacheCon video streaming!]

2008-11-04 Thread jean-frederic clere
 --- Begin Message ---
Hi,

please help promote the ApacheCon live video streaming by forwarding
the email below to your PMC user and dev mailing lists, ASAP!

Thank you
Lars Eilebrecht

-

Subject: ApacheCon live video streaming available; keynotes and Apache 101 are 
free


Can't make ApacheCon this week in New Orleans?  You can still watch all 
the keynotes, Apache 101 sessions, and system administration track in 
live video streams:

   http://streaming.linux-magazin.de/en/program_apacheconus08.htm?ann

Keynotes and the Apache 101 lunchtime sessions are free; the full 
sysadmin track, including httpd performance, security, and server stack 
administration talks are available for a fee.

Keynotes include:
- David Recordon, Six Apart  (Wednesday 09:30)
   "Learning from Apache to create Open Specifications"

- Shahani Markus Weerawarana, Ph.D.  (Thursday 11:30)
   "Standing on the Shoulders of Giants"

- Sam Ramji, Microsoft  (Friday 11:30)
   "struct.new("future", :open, :microsoft)"


   Reminder: New Orleans is CST or UTC/GMT -6 hours.


Advance notice: ApacheCon EU 2009 returns to Amsterdam, 23-27 March.  We 
had a great response to our CFP and look forward to announcing the 
schedule in the next month.

---

-- 
Lars Eilebrecht  -  V.P., Conference Planning
[EMAIL PROTECTED]  -  http://www.us.apachecon.com




--- End Message ---
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

DO NOT REPLY [Bug 41257] EL in dynamic attribute causes NPE in Tomcat 6

2008-11-04 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=41257


Mark Thomas <[EMAIL PROTECTED]> changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED




--- Comment #3 from Mark Thomas <[EMAIL PROTECTED]>  2008-11-04 09:33:28 PST ---
With all the recent changes to EL processing in trunk a simple test case for
this works for me.

If you still have a test case that fails with the latest source from trunk
please feel free to re-open this bug and add your test case.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



lastAccessedTime vs. thisAccessedTime

2008-11-04 Thread Rainer Jung
Hi,

I tried to understand the usage of lastAccessedTime (lastAT) vs.
thisAccessedTime (thisAT) in Tomcat 6 (I suppost trunk is the same but
didn't yet check).

As I understand it, the two different timestamps get used, because when
a request is associated with a session and asks for the lastAT it should
get the previous access time, not the one related to this request itself.

The way it seems implemented at the moment is:

- if a request for some session is in the state of being processed,
lastAT gives the previous access time and thisAT give the time resulting
from the request itself

- if no such request exists, thisAT returns the last access time of the
session, and lastAT returns the time of the second to last request!

Whenever we need a lastAT for a session for purposes not directly
related to request handling for this session we use lastAT, although
thisAT should have the correct semantics in this case.

Places where we should replace getLastAccessedTime() by
getThisAccessedTime():

session/PersistentManagerBase.java: could swap session out although a
request for the session is concurrently being processed on

manager/ManagerServlet.java: idleness profile

manager/util/SessionUtils.java: inside getUsedTimeForSession(),
getTTLForSession(), getInactiveTimeForSession(). Those are used when
producing lists with session information.

ha/session/mbeans-descriptors.xml: should either expose both values or
preferrably return thisAT as a lastAccessedTime, because the use case is
not retrieving info for the own session while running a request.

Places where I'm not so sure:

valves/PersistentValve.java: not sure, whether the valve runs before
access() updates the access times. If so, we should switch to thisAT
here, if not, keep as is

ha/session/SimpleTcpReplicationManager.java: readSession() sets both to
current time ?

session/JDBCStore.java: maybe should store both values, but not sure
where they get read in

Remarks?

Regards,

Rainer

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: lastAccessedTime vs. thisAccessedTime

2008-11-04 Thread Jess Holle
I won't say I understand all the usages perfectly myself, but I also 
stumbled on this mess.


I made a few such changes our Tomcat in the session package in 
conjunction with changes to PersistentManagerBase, FileStore, JDBCStore, 
etc (as these do too much thrashing reading all sessions from 
disk/database on maintenance intervals rather trying to track which 
might actually be expired, etc).  [I provided patches but didn't have 
time to slice these up into lots of little patches.]


Rainer Jung wrote:

Hi,

I tried to understand the usage of lastAccessedTime (lastAT) vs.
thisAccessedTime (thisAT) in Tomcat 6 (I suppost trunk is the same but
didn't yet check).

As I understand it, the two different timestamps get used, because when
a request is associated with a session and asks for the lastAT it should
get the previous access time, not the one related to this request itself.

The way it seems implemented at the moment is:

- if a request for some session is in the state of being processed,
lastAT gives the previous access time and thisAT give the time resulting
from the request itself

- if no such request exists, thisAT returns the last access time of the
session, and lastAT returns the time of the second to last request!

Whenever we need a lastAT for a session for purposes not directly
related to request handling for this session we use lastAT, although
thisAT should have the correct semantics in this case.

Places where we should replace getLastAccessedTime() by
getThisAccessedTime():

session/PersistentManagerBase.java: could swap session out although a
request for the session is concurrently being processed on

manager/ManagerServlet.java: idleness profile

manager/util/SessionUtils.java: inside getUsedTimeForSession(),
getTTLForSession(), getInactiveTimeForSession(). Those are used when
producing lists with session information.

ha/session/mbeans-descriptors.xml: should either expose both values or
preferrably return thisAT as a lastAccessedTime, because the use case is
not retrieving info for the own session while running a request.

Places where I'm not so sure:

valves/PersistentValve.java: not sure, whether the valve runs before
access() updates the access times. If so, we should switch to thisAT
here, if not, keep as is

ha/session/SimpleTcpReplicationManager.java: readSession() sets both to
current time ?

session/JDBCStore.java: maybe should store both values, but not sure
where they get read in

Remarks?

Regards,

Rainer

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


  



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711329 - /tomcat/tc6.0.x/trunk/STATUS.txt

2008-11-04 Thread rjung
Author: rjung
Date: Tue Nov  4 09:52:25 2008
New Revision: 711329

URL: http://svn.apache.org/viewvc?rev=711329&view=rev
Log:
Add some votes and comments.

Modified:
tomcat/tc6.0.x/trunk/STATUS.txt

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711329&r1=711328&r2=711329&view=diff
==
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov  4 09:52:25 2008
@@ -131,7 +131,7 @@
   Add proper manifests (regression from 5.5.x) and LICENSE & NOTICE files
   Lots of ways to do this. Alternative/better suggestions welcome
   http://svn.apache.org/viewvc?rev=699128&view=rev
-  +1: markt, fhanik
+  +1: markt, fhanik, rjung
   -1: 
 
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45851
@@ -208,7 +208,7 @@
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46085
   Hard to reproduce thread safety issue with session expiration
   http://svn.apache.org/viewvc?rev=708273&view=rev
-  +1: markt, fhanik
+  +1: markt, fhanik, rjung
0: remm (volatile seems equivalent to an AtomicLong)
 I did devise something by replacing the accessedTimes as long by an 
int offset
 based on the creation date. From what I understand, this should also 
address
@@ -219,13 +219,13 @@
   Expose deferAccept
   Patch provided by Michael Leinartas
   http://svn.apache.org/viewvc?rev=708344&view=rev
-  +1: markt, remm
+  +1: markt, remm, rjung
   -1: 
 
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46075
   Don't create ByteArrayOutputStream at maxmimum possible size
   http://svn.apache.org/viewvc?rev=708361&view=rev
-  +1: markt, remm
+  +1: markt, remm, rjung
   -1: 
 
 * Start poller before acceptor in NIO, bug 43701
@@ -249,7 +249,7 @@
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46115
   Path is required when using deploy
   http://svn.apache.org/viewvc?rev=709816&view=rev
-  +1: markt
+  +1: markt, rjung
   -1: 
 
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=42409
@@ -265,16 +265,23 @@
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=41861
   Add major version number to Tomcat service name created by Windows installer
   http://svn.apache.org/viewvc?rev=710066&view=rev
-  +1: markt
+  +1: markt, rjung
   -1: 
+  rjung: tomcat.nsi already uses replacement patterns like @[EMAIL PROTECTED]
+ So it might be more robust, to add another replacement like
+ VERSION_MAJOR or VERSION_MAIN to dist.xml resolving
+ to ${version.major} or $version.major}.${version.minor}
+ and then replace all occurences of "6" with @VERSION_MAJOR@
+ or @[EMAIL PROTECTED]
 
 * Deprecate the invoker servlet ready for its removal in 7.0.x
   http://people.apache.org/~markt/patches/2008-11-03-invoker.patch
-  +1: markt
+  +1: markt, rjung
   -1: 
+  rjung: You might also add the deprecation info to the default conf/web.xml.
 
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46047
-  Include jar in path for dependencies if they are in a JAR 
+  Include jar in path for dependencies if they are in a JAR
   Patch provided by CŽdric Mailleux
   http://svn.apache.org/viewvc?rev=710205&view=rev
   +1: markt



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711253 - in /tomcat/connectors/trunk/jk/xdocs: ajp/project.xml generic_howto/project.xml miscellaneous/project.xml news/project.xml project.xml reference/project.xml webserver_howto/proje

2008-11-04 Thread rjung
Author: rjung
Date: Tue Nov  4 05:55:04 2008
New Revision: 711253

URL: http://svn.apache.org/viewvc?rev=711253&view=rev
Log:
Add 2008 news to the docs menue.

Modified:
tomcat/connectors/trunk/jk/xdocs/ajp/project.xml
tomcat/connectors/trunk/jk/xdocs/generic_howto/project.xml
tomcat/connectors/trunk/jk/xdocs/miscellaneous/project.xml
tomcat/connectors/trunk/jk/xdocs/news/project.xml
tomcat/connectors/trunk/jk/xdocs/project.xml
tomcat/connectors/trunk/jk/xdocs/reference/project.xml
tomcat/connectors/trunk/jk/xdocs/webserver_howto/project.xml

Modified: tomcat/connectors/trunk/jk/xdocs/ajp/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/ajp/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/ajp/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/ajp/project.xml Tue Nov  4 05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/generic_howto/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/generic_howto/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/generic_howto/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/generic_howto/project.xml Tue Nov  4 
05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/project.xml Tue Nov  4 
05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/news/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/news/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/news/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/news/project.xml Tue Nov  4 05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/project.xml Tue Nov  4 05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/reference/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/reference/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/project.xml Tue Nov  4 05:55:04 
2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 

Modified: tomcat/connectors/trunk/jk/xdocs/webserver_howto/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/webserver_howto/project.xml?rev=711253&r1=711252&r2=711253&view=diff
==
--- tomcat/connectors/trunk/jk/xdocs/webserver_howto/project.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/webserver_howto/project.xml Tue Nov  4 
05:55:04 2008
@@ -66,6 +66,7 @@
 
 
 
+
 
 
 



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711355 - /tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java

2008-11-04 Thread rjung
Author: rjung
Date: Tue Nov  4 10:55:58 2008
New Revision: 711355

URL: http://svn.apache.org/viewvc?rev=711355&view=rev
Log:
Preparation before introducing recursive group resolution
- add a little generics
- add a little logging
- add a new utility function getDistinguishedName()
  replacing some inline code. It will be used
  again in the next commit.

Modified:
tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java

Modified: tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java?rev=711355&r1=711354&r2=711355&view=diff
==
--- tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java (original)
+++ tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java Tue Nov  4 
10:55:58 2008
@@ -979,7 +979,7 @@
 // Search for additional roles
 List roles = getRoles(context, user);
 if (containerLog.isDebugEnabled()) {
-Iterator it = roles.iterator();
+Iterator it = roles.iterator();
 while (it.hasNext()) {
 containerLog.debug("Found role: " + 
it.next());
 }
@@ -1013,7 +1013,7 @@
 // Search for additional roles
 List roles = getRoles(context, user);
 if (containerLog.isDebugEnabled()) {
-Iterator it = roles.iterator();
+Iterator it = roles.iterator();
 while (it.hasNext()) {
 containerLog.debug("Found role: " + it.next());
 }
@@ -1182,17 +1182,7 @@
 throw ex;
 }
 
-// Get the entry's distinguished name
-NameParser parser = context.getNameParser("");
-Name contextName = parser.parse(context.getNameInNamespace());
-Name baseName = parser.parse(userBase);
-
-// Bugzilla 32269
-Name entryName = parser.parse(new 
CompositeName(result.getName()).get(0));
-
-Name name = contextName.addAll(baseName);
-name = name.addAll(entryName);
-String dn = name.toString();
+String dn = getDistinguishedName(context, userBase, result);
 
 if (containerLog.isTraceEnabled())
 containerLog.trace("  entry found for " + username + " with dn " + 
dn);
@@ -1448,6 +1438,16 @@
 if (commonRole != null)
 list.add(commonRole);
 
+if (containerLog.isTraceEnabled()) {
+if (list != null) {
+containerLog.trace("  Found " + list.size() + " user internal 
roles");
+for (int i=0; i it = list.iterator();
+while (it.hasNext()) {
+containerLog.trace(  "  Found role " + it.next());
+}
 } else {
 containerLog.trace("  getRoles about to return null ");
 }
@@ -1915,6 +1917,30 @@
 }
 
 
+/**
+ * Returns the distinguished name of a search result.
+ *
+ * @param context Our DirContext
+ * @param base The base DN
+ * @param result The search result
+ * @return String containing the distinguished name
+ */
+protected String getDistinguishedName(DirContext context, String base, 
SearchResult result)
+throws NamingException {
+// Get the entry's distinguished name
+NameParser parser = context.getNameParser("");
+Name contextName = parser.parse(context.getNameInNamespace());
+Name baseName = parser.parse(base);
+
+// Bugzilla 32269
+Name entryName = parser.parse(new 
CompositeName(result.getName()).get(0));
+
+Name name = contextName.addAll(baseName);
+name = name.addAll(entryName);
+return name.toString();
+}
+
+
 }
 
 // -- Private Classes



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711422 - /tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java

2008-11-04 Thread rjung
Author: rjung
Date: Tue Nov  4 13:42:38 2008
New Revision: 711422

URL: http://svn.apache.org/viewvc?rev=711422&view=rev
Log:
Add ability to recursively search for roles
to JNDIRealm. That way nested groups work.

Modified:
tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java

Modified: tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java?rev=711422&r1=711421&r2=711422&view=diff
==
--- tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java (original)
+++ tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java Tue Nov  4 
13:42:38 2008
@@ -22,9 +22,13 @@
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.naming.Context;
 import javax.naming.CommunicationException;
@@ -134,6 +138,14 @@
  * in the user's element whose name is configured by the
  * userRoleName property.
  *
+ * A default role can be assigned to each user that was successfully
+ * authenticated by setting the commonRole property to the
+ * name of this role. The role doesn't have to exist in the directory.
+ *
+ * If the directory server contains nested roles, you can search for roles
+ * recursively by setting roleRecursionLimit to some positive 
value.
+ * The default value is 0, so role searches do not recurse.
+ *
  * Note that the standard  element in
  * the web application deployment descriptor allows applications to refer
  * to roles programmatically by names other than those used in the
@@ -307,6 +319,13 @@
 
 
 /**
+ * The maximum recursion depth when resolving roles recursively.
+ * By default we don't resolve roles recursively.
+ */
+protected int roleRecursionLimit = 0;
+
+
+/**
  * The base element for role searches.
  */
 protected String roleBase = "";
@@ -638,6 +657,28 @@
 
 
 /**
+ * Return the maximum recursion depth for role searches.
+ */
+public int getRoleRecursionLimit() {
+
+return (this.roleRecursionLimit);
+
+}
+
+
+/**
+ * Set the maximum recursion depth for role searches.
+ *
+ * @param roleRecursionLimit The new recursion limit
+ */
+public void setRoleRecursionLimit(int roleRecursionLimit) {
+
+this.roleRecursionLimit = roleRecursionLimit;
+
+}
+
+
+/**
  * Return the base element for role searches.
  */
 public String getRoleBase() {
@@ -1405,6 +1446,69 @@
 
 
 /**
+ * Add roles to a user and search for other roles containing them 
themselves.
+ * We search recursively with a limited depth.
+ * By default the depth is 0, and we only use direct roles.
+ * The search needs to use the distinguished role names,
+ * but to return the role names.
+ *
+ * @param depth Recursion depth, starting at zero
+ * @param context The directory context we are searching
+ * @param recursiveMap The cumulative result map of role names and DNs.
+ * @param recursiveSet The cumulative result set of role names.
+ * @param groupName The role name to add to the list.
+ * @param groupDName The distinguished name of the role.
+ *
+ * @exception NamingException if a directory server error occurs
+ */
+private void getRolesRecursive(int depth, DirContext context, Map recursiveMap, Set recursiveSet,
+ String groupName, String groupDName) 
throws NamingException {
+if (containerLog.isTraceEnabled())
+containerLog.trace("Recursive search depth " + depth + " for group 
'" + groupDName + " (" + groupName + ")'");
+// Adding the given group to the result set if not already found
+if (!recursiveSet.contains(groupDName)) {
+recursiveSet.add(groupDName);
+recursiveMap.put(groupDName, groupName);
+if (depth >= roleRecursionLimit) {
+if (roleRecursionLimit > 0)
+containerLog.warn("Terminating recursive role search 
because of recursion limit " +
+  roleRecursionLimit + ", results might be 
incomplete");
+return;
+}
+// Prepare the parameters for searching groups
+String filter = roleFormat.format(new String[] { groupDName });
+SearchControls controls = new SearchControls();
+controls.setSearchScope(roleSubtree ? SearchControls.SUBTREE_SCOPE 
: SearchControls.ONELEVEL_SCOPE);
+controls.setReturningAttributes(new String[] { roleName });
+if (containerLog.isTraceEnabled()) {
+containerLog.trace("Recursive search in role base '" + 
roleBase

Re: [VOTE] bayeux module

2008-11-04 Thread Jim Jagielski


On Nov 2, 2008, at 8:22 AM, Filip Hanik - Dev Lists wrote:

now that we do have a module directory, I'd like to propose to take  
the bayeux impl out of tomcat core, and put it into an individual  
module


reasons
1. It's built on top of Tomcat, but its not core tomcat
2. We can release it more frequently to fix bugs
3. If there is a bug in Bayeux, we don't need a new tomcat release

Please select one:
[+1] +1 yes move it to the modules directory


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711498 - in /tomcat/tc6.0.x/trunk: STATUS.txt build.xml res/META-INF/ res/META-INF/LICENSE res/META-INF/NOTICE res/jsp-api.jar.manifest res/servlet-api.jar.manifest webapps/docs/changelog

2008-11-04 Thread markt
Author: markt
Date: Tue Nov  4 19:07:56 2008
New Revision: 711498

URL: http://svn.apache.org/viewvc?rev=711498&view=rev
Log:
Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=45878
Add proper manifests (regression from 5.5.x) and LICENSE & NOTICE files

Added:
tomcat/tc6.0.x/trunk/res/META-INF/
tomcat/tc6.0.x/trunk/res/META-INF/LICENSE
tomcat/tc6.0.x/trunk/res/META-INF/NOTICE
tomcat/tc6.0.x/trunk/res/jsp-api.jar.manifest
tomcat/tc6.0.x/trunk/res/servlet-api.jar.manifest
Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/build.xml
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711498&r1=711497&r2=711498&view=diff
==
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov  4 19:07:56 2008
@@ -127,13 +127,6 @@
   +1: rjung, mturk, markt, pero
0: remm (also affects to the two other AJP connectors)
 
-* Partial fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=45878
-  Add proper manifests (regression from 5.5.x) and LICENSE & NOTICE files
-  Lots of ways to do this. Alternative/better suggestions welcome
-  http://svn.apache.org/viewvc?rev=699128&view=rev
-  +1: markt, fhanik, rjung
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=45851
   Fix NPE and out of order message processing issues
   http://svn.apache.org/viewvc?rev=699427&view=rev

Modified: tomcat/tc6.0.x/trunk/build.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/build.xml?rev=711498&r1=711497&r2=711498&view=diff
==
--- tomcat/tc6.0.x/trunk/build.xml (original)
+++ tomcat/tc6.0.x/trunk/build.xml Tue Nov  4 19:07:56 2008
@@ -50,6 +50,12 @@
 
   
   
+  
+  
+
+  
+  
+  
 
   
   
@@ -105,6 +111,7 @@
debug="${compile.debug}"
deprecation="${compile.deprecation}"
source="${compile.source}"
+   target="${compile.target}"
optimize="${compile.optimize}"
excludes="**/CVS/**,**/.svn/**">
 
@@ -134,6 +141,9 @@
   
 
   
+
+
+
 
 
 
@@ -150,7 +160,17 @@
 
 
 
-
+
+
+
+  
+
+  
   
 
 
@@ -162,7 +182,17 @@
 
 
 
-
+
+
+
+  
+
+  
   
 
 
@@ -506,6 +536,8 @@
 
@@ -514,6 +546,8 @@
 
@@ -766,6 +800,7 @@
debug="${compile.debug}"
deprecation="${compile.deprecation}"
source="${compile.source}"
+   target="${compile.target}"
sourcepath="${tomcat-dbcp.home}/src/java"
srcdir="${tomcat-dbcp.home}/src/java" >
   

Added: tomcat/tc6.0.x/trunk/res/META-INF/LICENSE
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/res/META-INF/LICENSE?rev=711498&view=auto
==
--- tomcat/tc6.0.x/trunk/res/META-INF/LICENSE (added)
+++ tomcat/tc6.0.x/trunk/res/META-INF/LICENSE Tue Nov  4 19:07:56 2008
@@ -0,0 +1,202 @@
+
+ Apache License
+   Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+  "License" shall mean the terms and conditions for use, reproduction,
+  and distribution as defined by Sections 1 through 9 of this document.
+
+  "Licensor" shall mean the copyright owner or entity authorized by
+  the copyright owner that is granting the License.
+
+  "Legal Entity" shall mean the union of the acting entity and all
+  other entities that control, are controlled by, or are under common
+  control with that entity. For the purposes of this definition,
+  "control" means (i) the power, direct or indirect, to cause the
+  direction or management of such entity, whether by contract or
+  otherwise, or (ii) ownership of fifty percent (50%) or more of the
+  outstanding shares, or (iii) beneficial ownership of such entity.
+
+  "You" (or "Your") shall mean an individual or Legal Entity
+  exercising permissions granted by this License.
+
+  "Source" form shall mean the preferred form for making modifications,
+  including but not limited to software source code, documentation
+  source, and configuration files.
+
+  "Object" form shall mean any form resulting from mechanical
+  transformation or translation of a Source form, including but
+  not limited to compiled object code, generated documentation,
+  and conversions to other media types.
+
+  "Work" shall mean the work of authorship, whether in Source or
+  Object form, made available under the License, as indic

DO NOT REPLY [Bug 45878] Generated jars do not contain proper manifests or N & L files

2008-11-04 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=45878


Mark Thomas <[EMAIL PROTECTED]> changed:

   What|Removed |Added

   Severity|normal  |enhancement




--- Comment #3 from Mark Thomas <[EMAIL PROTECTED]>  2008-11-04 19:08:31 PST ---
The regression with the spec jars has been fixed and will be in 6.0.19 onwards.
The remaining jars are outstanding.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711500 - in /tomcat/tc6.0.x/trunk: STATUS.txt java/org/apache/tomcat/util/IntrospectionUtils.java webapps/docs/changelog.xml

2008-11-04 Thread markt
Author: markt
Date: Tue Nov  4 19:17:08 2008
New Revision: 711500

URL: http://svn.apache.org/viewvc?rev=711500&view=rev
Log:
* Fix String comparison bugs found by Find Bugs using Remy's alternative 
solution

Modified:
tomcat/tc6.0.x/trunk/STATUS.txt
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711500&r1=711499&r2=711500&view=diff
==
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov  4 19:17:08 2008
@@ -187,11 +187,6 @@
   +1: fhanik, pero
   -1: 
 
-* Fix String comparison bugs found by Find Bugs using Remy's alternative 
solution
-  
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java?r1=708185&r2=708184&pathrev=708185
-  +1: markt, fhanik, remm
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46096
   Support annotation processing whilst running under a security manager
   http://people.apache.org/~markt/patches/2008-10-27-bug46096.patch

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java?rev=711500&r1=711499&r2=711500&view=diff
==
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java 
(original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/IntrospectionUtils.java 
Tue Nov  4 19:17:08 2008
@@ -489,6 +489,9 @@
  */
 public static String replaceProperties(String value, Hashtable staticProp,
 PropertySource dynamicProp[]) {
+if (value.indexOf("$") < 0) {
+return value;
+}
 StringBuffer sb = new StringBuffer();
 int prev = 0;
 // assert value!=nil

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=711500&r1=711499&r2=711500&view=diff
==
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Tue Nov  4 19:17:08 2008
@@ -129,6 +129,10 @@
 Fix some thread safety issues in date formatting. (markt)
   
   
+Fix a String comparison bug in the digester property replacement that
+resulted in non-optimal operation. (markt)
+  
+  
 Correct handle multi-level contexts defined using context.xml files.
 (markt)
   



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711501 - in /tomcat/tc6.0.x/trunk: STATUS.txt java/org/apache/catalina/util/DefaultAnnotationProcessor.java webapps/docs/changelog.xml

2008-11-04 Thread markt
Author: markt
Date: Tue Nov  4 19:22:31 2008
New Revision: 711501

URL: http://svn.apache.org/viewvc?rev=711501&view=rev
Log:
* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46096
Support annotation processing whilst running under a security manager

Modified:
tomcat/tc6.0.x/trunk/STATUS.txt

tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711501&r1=711500&r2=711501&view=diff
==
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov  4 19:22:31 2008
@@ -187,12 +187,6 @@
   +1: fhanik, pero
   -1: 
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46096
-  Support annotation processing whilst running under a security manager
-  http://people.apache.org/~markt/patches/2008-10-27-bug46096.patch
-  +1: markt, fhanik, remm
-  -1: 
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=46085
   Hard to reproduce thread safety issue with session expiration
   http://svn.apache.org/viewvc?rev=708273&view=rev

Modified: 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java?rev=711501&r1=711500&r2=711501&view=diff
==
--- 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
 (original)
+++ 
tomcat/tc6.0.x/trunk/java/org/apache/catalina/util/DefaultAnnotationProcessor.java
 Tue Nov  4 19:22:31 2008
@@ -21,6 +21,8 @@
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
@@ -32,6 +34,7 @@
 import javax.xml.ws.WebServiceRef;
 
 import org.apache.AnnotationProcessor;
+import org.apache.catalina.Globals;
 
 
 /**
@@ -59,7 +62,18 @@
 Class clazz = instance.getClass();
 
 while (clazz != null) {
-Method[] methods = clazz.getDeclaredMethods();
+Method[] methods = null;
+if (Globals.IS_SECURITY_ENABLED) {
+final Class clazz2 = clazz;
+methods = AccessController.doPrivileged(
+new PrivilegedAction(){
+public Method[] run(){
+return clazz2.getDeclaredMethods();
+}
+});
+} else {
+methods = clazz.getDeclaredMethods();
+}
 Method postConstruct = null;
 for (int i = 0; i < methods.length; i++) {
 if (methods[i].isAnnotationPresent(PostConstruct.class)) {
@@ -141,7 +155,18 @@
 
 while (clazz != null) {
 // Initialize fields annotations
-Field[] fields = clazz.getDeclaredFields();
+Field[] fields = null;
+if (Globals.IS_SECURITY_ENABLED) {
+final Class clazz2 = clazz;
+fields = AccessController.doPrivileged(
+new PrivilegedAction(){
+public Field[] run(){
+return clazz2.getDeclaredFields();
+}
+});
+} else {
+fields = clazz.getDeclaredFields();
+}
 for (int i = 0; i < fields.length; i++) {
 if (fields[i].isAnnotationPresent(Resource.class)) {
 Resource annotation =
@@ -175,7 +200,18 @@
 }
 
 // Initialize methods annotations
-Method[] methods = clazz.getDeclaredMethods();
+Method[] methods = null;
+if (Globals.IS_SECURITY_ENABLED) {
+final Class clazz2 = clazz;
+methods = AccessController.doPrivileged(
+new PrivilegedAction(){
+public Method[] run(){
+return clazz2.getDeclaredMethods();
+}
+});
+} else {
+methods = clazz.getDeclaredMethods();
+}
 for (int i = 0; i < methods.length; i++) {
 if (methods[i].isAnnotationPresent(Resource.class)) {
 Resource annotation = 
methods[i].getAnnotation(Resource.class);

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=711501&r1=711500&r2=711501&view=diff
==
--- tomcat/tc6

DO NOT REPLY [Bug 46096] DefaultAnnotationProcessor.processAnnotations should use doPrivileged to call getDeclaredFields

2008-11-04 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=46096


Mark Thomas <[EMAIL PROTECTED]> changed:

   What|Removed |Added

 Status|NEW |RESOLVED
 Resolution||FIXED




--- Comment #4 from Mark Thomas <[EMAIL PROTECTED]>  2008-11-04 19:26:46 PST ---
This has been fixed in 6.0.x and will be in 6.0.19 onwards.


-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711502 - /tomcat/tc6.0.x/trunk/STATUS.txt

2008-11-04 Thread markt
Author: markt
Date: Tue Nov  4 19:27:33 2008
New Revision: 711502

URL: http://svn.apache.org/viewvc?rev=711502&view=rev
Log:
Add a note

Modified:
tomcat/tc6.0.x/trunk/STATUS.txt

Modified: tomcat/tc6.0.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=711502&r1=711501&r2=711502&view=diff
==
--- tomcat/tc6.0.x/trunk/STATUS.txt (original)
+++ tomcat/tc6.0.x/trunk/STATUS.txt Tue Nov  4 19:27:33 2008
@@ -238,7 +238,7 @@
   Use resetBuffer() as suggested by the spec. Makes custom and standard error
   page handling consistent
   http://svn.apache.org/viewvc?rev=710063&view=rev
-  http://svn.apache.org/viewvc?rev=710125&view=rev
+  http://svn.apache.org/viewvc?rev=710125&view=rev (to address Remy's comment)
   +1: markt
   -1: remm (will cause a major behavior change; I would recommend doing a 
resetBuffer,
   plus setting usingOutputStream, usingWriter and isCharacterEncodingSet 
to false;



-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



svn commit: r711519 - in /tomcat/site/trunk: docs/doap_Tomcat.rdf xdocs/doap_Tomcat.rdf

2008-11-04 Thread rjung
Author: rjung
Date: Tue Nov  4 22:34:01 2008
New Revision: 711519

URL: http://svn.apache.org/viewvc?rev=711519&view=rev
Log:
Update missing version info in TC doap file.
Fix eol style native.

Modified:
tomcat/site/trunk/docs/doap_Tomcat.rdf   (contents, props changed)
tomcat/site/trunk/xdocs/doap_Tomcat.rdf

Modified: tomcat/site/trunk/docs/doap_Tomcat.rdf
URL: 
http://svn.apache.org/viewvc/tomcat/site/trunk/docs/doap_Tomcat.rdf?rev=711519&r1=711518&r2=711519&view=diff
==
--- tomcat/site/trunk/docs/doap_Tomcat.rdf (original)
+++ tomcat/site/trunk/docs/doap_Tomcat.rdf Tue Nov  4 22:34:01 2008
@@ -1,76 +1,76 @@
-
-
-http://usefulinc.com/ns/doap#"; 
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
- xmlns:asfext="http://projects.apache.org/ns/asfext#";
- xmlns:foaf="http://xmlsns.com/foaf/0.1/";>
-  http://tomcat.apache.org/";>
-2006-01-27
-http://usefulinc.com/doap/licenses/asl20"; />
-Apache Tomcat
-http://tomcat.apache.org"; />
-http://tomcat.apache.org"; />
-A Java Servlet and Java Servet Pages specifications 
implementation.
-Apache Tomcat is the servlet container that is used in the 
official Reference Implementation for the Java Servlet and JavaServer Pages 
technologies. The Java Servlet and JavaServer Pages specifications are 
developed by Sun under the Java Community Process.
-
-Apache Tomcat is developed in an open and participatory environment and 
released under the Apache Software License. Apache Tomcat is intended to be a 
collaboration of the best-of-breed developers from around the world. We invite 
you to participate in this open development project. To learn more about 
getting involved, click here.
-
-Apache Tomcat powers numerous large-scale, mission-critical web applications 
across a diverse range of industries and organizations. Some of these users and 
their stories are listed on the PoweredBy wiki page.
-http://issues.apache.org/bugzilla"; />
-http://tomcat.apache.org/lists.html"; />
-http://tomcat.apache.org"; />
-Java
-http://projects.apache.org/category/network-server"; />
-
-  
-Tomcat PMC
-  mailto:dev@tomcat.apache.org"/>
-  
-
-
-  
-Latest Stable 6.0.x Release
-2008-02-08
-6.0.16
-  
-
-
-  
-Latest Stable 5.5.x release
-2008-01-28
-5.5.26
-  
-
-
-  
-Latest Stable 4.1.x release
-2008-02-12
-4.1.37
-  
-
-
-  
-http://svn.apache.org/repos/asf/tomcat"/>
-http://svn.apache.org/repos/asf/tomcat/"/>
-  
-
-
-  
-Java Servlets
-JCP
-JSR 154
-http://www.jcp.org/en/jsr/detail?id=154"/>
-  
-
-
-  
-Java Server Pages
-JCP
-JSR 152
-http://www.jcp.org/en/jsr/detail?id=152"/>
-  
-
-  
-
-
+
+
+http://usefulinc.com/ns/doap#"; 
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
+ xmlns:asfext="http://projects.apache.org/ns/asfext#";
+ xmlns:foaf="http://xmlsns.com/foaf/0.1/";>
+  http://tomcat.apache.org/";>
+2006-01-27
+http://usefulinc.com/doap/licenses/asl20"; />
+Apache Tomcat
+http://tomcat.apache.org"; />
+http://tomcat.apache.org"; />
+A Java Servlet and Java Servet Pages specifications 
implementation.
+Apache Tomcat is the servlet container that is used in the 
official Reference Implementation for the Java Servlet and JavaServer Pages 
technologies. The Java Servlet and JavaServer Pages specifications are 
developed by Sun under the Java Community Process.
+
+Apache Tomcat is developed in an open and participatory environment and 
released under the Apache Software License. Apache Tomcat is intended to be a 
collaboration of the best-of-breed developers from around the world. We invite 
you to participate in this open development project. To learn more about 
getting involved, click here.
+
+Apache Tomcat powers numerous large-scale, mission-critical web applications 
across a diverse range of industries and organizations. Some of these users and 
their stories are listed on the PoweredBy wiki page.
+http://issues.apache.org/bugzilla"; />
+http://tomcat.apache.org/lists.html"; />
+http://tomcat.apache.org"; />
+Java
+http://projects.apache.org/category/network-server"; />
+
+  
+Tomcat PMC
+  mailto:dev@tomcat.apache.org"/>
+  
+
+
+  
+Latest Stable 6.0.x Release
+2008-07-31
+6.0.18
+  
+
+
+  
+Latest Stable 5.5.x release
+2008-09-08
+5.5.27
+  
+
+
+  
+Latest Stable 4.1.x release
+2008-02-12
+4.1.37
+  
+
+
+  
+http://svn.apache.org/repos/asf/tomcat"/>
+http://svn.apache.org/rep