[Bug 63931] New: The remote endpoint was in state [TEXT_FULL_WRITING] which is an invalid state

2019-11-17 Thread bugzilla
https://bz.apache.org/bugzilla/show_bug.cgi?id=63931

Bug ID: 63931
   Summary: The remote endpoint was in state [TEXT_FULL_WRITING]
which is an invalid state
   Product: Tomcat 9
   Version: unspecified
  Hardware: PC
Status: NEW
  Severity: major
  Priority: P2
 Component: WebSocket
  Assignee: dev@tomcat.apache.org
  Reporter: sauravksi...@eaton.com
  Target Milestone: -

Given:
RabbitMQ as a incoming streaming message source consumer 
When:
WebScoket subscribe for incoming message to show on UI. It works fine for
initial few moments.
Then: 
The moment incoming streaming message rate goes more than 800messages/sec after
few min started receiving below Exception:

 synchronized (this) {
 if (session.isOpen()) {
try {
log.info("Sending message to client session ID : " +
session.getId());
((StandardWebSocketSession)
session).getNativeSession().getBasicRemote().sendText(message);
} catch (Exception e) {
log.error("Encountered an error sending to client!",
e);
}
}
}

we also used StampedLock at method level to socket session management.


2019-11-18T13:06:32,084 [tainer#0-1] co.ea.ex.no.tr.we.WebSocketServerHandler
ERROR: o.tr.we.WebSocketServerHandler(dToSession:  520) Encountered an error
sending to client!
java.lang.IllegalStateException: The remote endpoint was in state
[TEXT_FULL_WRITING] which is an invalid state for called method
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.checkState(WsRemoteEndpointImplBase.java:1229)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase$StateMachine.textStart(WsRemoteEndpointImplBase.java:1191)
at
org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendString(WsRemoteEndpointImplBase.java:190)
at
org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:37)
at
com.eaton.export.notifications.transport.websocket.WebSocketServerHandler.sendToSession(WebSocketServerHandler.java:518)

-- 
You are receiving this mail because:
You are the assignee for the bug.
-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



[GitHub] [tomcat] 72er-de opened a new pull request #224: Adding Support for JDK "only" and JAVA_HOME environment variable to Windows Installer

2019-11-17 Thread GitBox
72er-de opened a new pull request #224: Adding Support for JDK "only" and 
JAVA_HOME environment variable to Windows Installer
URL: https://github.com/apache/tomcat/pull/224
 
 
   Since Java 11 Oracle distributes no separate JRE and renamed the windows 
registry key for the JDK. This patch will find the JDK with registry key HKLM 
“SOFTWARE\JavaSoft\JDK". As a last failback this patch looks for Java in the 
environment variable JAVA_HOME.


This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: [tomcat] branch master updated: Fix timeout handling. Write timeout could be handled as read timeout.

2019-11-17 Thread Rémy Maucherat
On Sat, Nov 16, 2019 at 5:44 PM  wrote:

> 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 40ca9be  Fix timeout handling. Write timeout could be handled as
> read timeout.
> 40ca9be is described below
>
> commit 40ca9bef10a2c2db48e759b16fc4fbff3725ffca
> Author: Mark Thomas 
> AuthorDate: Sat Nov 16 16:43:52 2019 +
>
> Fix timeout handling. Write timeout could be handled as read timeout.
> ---
>  java/org/apache/tomcat/util/net/NioEndpoint.java | 15 ---
>  webapps/docs/changelog.xml   |  4 
>  2 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/java/org/apache/tomcat/util/net/NioEndpoint.java
> b/java/org/apache/tomcat/util/net/NioEndpoint.java
> index 1e5b900..090b26a 100644
> --- a/java/org/apache/tomcat/util/net/NioEndpoint.java
> +++ b/java/org/apache/tomcat/util/net/NioEndpoint.java
> @@ -953,24 +953,25 @@ public class NioEndpoint extends
> AbstractJsseEndpoint
>  cancelledKey(key, socketWrapper);
>  } else if ((socketWrapper.interestOps() &
> SelectionKey.OP_READ) == SelectionKey.OP_READ ||
>(socketWrapper.interestOps() &
> SelectionKey.OP_WRITE) == SelectionKey.OP_WRITE) {
> -boolean isTimedOut = false;
>  boolean readTimeout = false;
>  boolean writeTimeout = false;
>

I should have figured out that I needed only two flags there. Sorry for the
trouble, it must have been a lot harder to figure out a long time after the
initial overhaul.

Rémy


[VOTE] Release Apache Tomcat 8.5.49

2019-11-17 Thread Mark Thomas
The proposed Apache Tomcat 8.5.49 release is now available for voting.

The major changes compared to the 8.5.47 release are:

- Improvements to Async error handling

- Stricter processing of HTTP headers when looking for specific token
  values

- Fix various issues that could lead to modification to a JSP not being
  reflected in the served page

Along with lots of other bug fixes and improvements.

For full details, see the changelog:
https://ci.apache.org/projects/tomcat/tomcat85/docs/changelog.html

It can be obtained from:
https://dist.apache.org/repos/dist/dev/tomcat/tomcat-8/v8.5.49/

The Maven staging repo is:
https://repository.apache.org/content/repositories/orgapachetomcat-1238/

The tag is:
https://github.com/apache/tomcat/tree/8.5.49

The proposed 8.5.49 release is:
[ ] Broken - do not release
[ ] Stable - go ahead and release as 8.5.49

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



[tomcat] branch 8.5.x updated: Increment version for next dev cycle

2019-11-17 Thread markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
 new a3cc1b7  Increment version for next dev cycle
a3cc1b7 is described below

commit a3cc1b75682f7ca524e03e9a7640fb02129514b3
Author: Mark Thomas 
AuthorDate: Sun Nov 17 19:00:35 2019 +

Increment version for next dev cycle
---
 build.properties.default | 2 +-
 res/maven/mvn.properties.default | 2 +-
 webapps/docs/changelog.xml   | 4 +++-
 3 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/build.properties.default b/build.properties.default
index c9d874a..e9f541f 100644
--- a/build.properties.default
+++ b/build.properties.default
@@ -25,7 +25,7 @@
 # - Version Control Flags -
 version.major=8
 version.minor=5
-version.build=49
+version.build=50
 version.patch=0
 version.suffix=-dev
 
diff --git a/res/maven/mvn.properties.default b/res/maven/mvn.properties.default
index 988500a..0fb6490 100644
--- a/res/maven/mvn.properties.default
+++ b/res/maven/mvn.properties.default
@@ -39,7 +39,7 @@ 
maven.asf.release.repo.url=https://repository.apache.org/service/local/staging/d
 maven.asf.release.repo.repositoryId=apache.releases.https
 
 # Release version info
-maven.asf.release.deploy.version=8.5.49
+maven.asf.release.deploy.version=8.5.50
 
 #Where do we load the libraries from
 tomcat.lib.path=../../output/build/lib
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cc7c33f..c1e9292 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -44,7 +44,9 @@
   They eventually become mixed with the numbered issues (i.e., numbered
   issues do not "pop up" wrt. others).
 -->
-
+
+
+
   
 
   


-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Nexus: Staging Completed

2019-11-17 Thread Nexus Repository Manager
Message from: https://repository.apache.orgDeployer properties:"userAgent" = "maven-artifact/2.2.1 (Java 1.7.0_80; Windows 7 6.1)""userId" = "markt""ip" = "213.121.9.136"Details:The following artifacts have been staged/org/apache/tomcat/tomcat-i18n-de/8.5.49/tomcat-i18n-de-8.5.49.jar.asc(SHA1: 698285b06254192975a90e496fcbe6f1e9be7ec6)/org/apache/tomcat/tomcat-i18n-de/8.5.49/tomcat-i18n-de-8.5.49.pom.asc(SHA1: f09ae2abf504b7925628b856114a754cf5605690)/org/apache/tomcat/tomcat-i18n-de/8.5.49/tomcat-i18n-de-8.5.49.pom(SHA1: 0c958456d02ce9489152daa9bd51f092300cb57f)/org/apache/tomcat/tomcat-i18n-de/8.5.49/tomcat-i18n-de-8.5.49.jar(SHA1: d9f70ce1c6319663491ace1ea32b4e4648646c52)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49-sources.jar(SHA1: e93081ff6917968a43cff00664c043343d23763d)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49.pom(SHA1: da1c95a636dc62ff1df0646e67909771b8fc630c)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49.pom.asc(SHA1: 9a45ffeb969700ec6cd0321cd3ea60f7951119c1)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49.jar(SHA1: b2b116dc1bde4a07b6fbdcda137084e190781c35)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49-sources.jar.asc(SHA1: b7e620a30a0f28724c09eb9fd11ef6b5f5a2e2fe)/org/apache/tomcat/tomcat-jni/8.5.49/tomcat-jni-8.5.49.jar.asc(SHA1: 15093e31c459f9d373d62d5ca7646b9a606923b1)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49.jar.asc(SHA1: e75fec935e09d40f601b2107fea4b8f5f4188f9f)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49.pom.asc(SHA1: 626448173e928a58f1438ccb011b6281f00bf4ea)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49.jar(SHA1: f3f21446948de84c03f40756b0ed10a1120f2791)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49-sources.jar.asc(SHA1: a1c49b536f6e4f453f4c5d80db14d0e11d1715dc)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49.pom(SHA1: 0450bfb5b510eb64d7e16020f1b0bef2fc540071)/org/apache/tomcat/tomcat-juli/8.5.49/tomcat-juli-8.5.49-sources.jar(SHA1: a9062f461986a53a425018206db1761cce42683a)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49-sources.jar(SHA1: 4a8df506e6366725a6e2808dd7649b1548ee0fba)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49.pom(SHA1: f9ee77be31b1d0e06f83950e422d1fd9d9e65569)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49-sources.jar.asc(SHA1: aaff72025c6212e5532d055e556102f3005cddfb)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49.jar.asc(SHA1: ce821fcb53045d5922e3671c2984bc1a572dd58a)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49.jar(SHA1: ed441f4c7a41f3d576d12c9fb680b2953306034a)/org/apache/tomcat/tomcat-util/8.5.49/tomcat-util-8.5.49.pom.asc(SHA1: d14b9375673c2b8c8988fc0d5d7e5b6c6646772e)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49-sources.jar(SHA1: d7bd852f0199a4b12f6c006a65010a52125f0516)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49.pom(SHA1: e2dabfc5d6e244e2ef22b1fab71167c4297120c2)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49.jar.asc(SHA1: 6c36875a7b7805d784b9d4b9ac1fe9a6ccf0c39c)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49-sources.jar.asc(SHA1: 7908b3199e96495272adfc9dd3a67010d3faf6c1)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49.jar(SHA1: d645089d72050978288ff7a58b59298b5df0603d)/org/apache/tomcat/tomcat-catalina/8.5.49/tomcat-catalina-8.5.49.pom.asc(SHA1: 2571836698673a44d7899b63bcfd89712b6050d6)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49-sources.jar(SHA1: 5212d1f3a0c9bcce3beb6f64aa05e6fc5511040b)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49.pom(SHA1: 4ae18d2c6cb0aa0ed62b3fbed095223a48237d8d)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49.jar(SHA1: 8f4ba408db37c34b2a754a64220b3a5fe6923846)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49-sources.jar.asc(SHA1: f5bde938310d303bf484e6662af42c2a50dcb98b)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49.jar.asc(SHA1: df03a0e9ed7fa31e46844282f53f0e1f741a5cdb)/org/apache/tomcat/tomcat-catalina-ws/8.5.49/tomcat-catalina-ws-8.5.49.pom.asc(SHA1: e354938aacc6e1b3f9b527614ba5cb5e0664f1a4)/org/apache/tomcat/tomcat-i18n-fr/8.5.49/tomcat-i18n-fr-8.5.49.pom.asc(SHA1: 12876e6a220896d52e4775c0faab8f39797da941)/org/apache/tomcat/tomcat-i18n-fr/8.5.49/tomcat-i18n-fr-8.5.49.pom(SHA1: 098672d396e0dc00862c32e6deca9da2a5df8819)/org/apache/tomcat/tomcat-i18n-fr/8.5.49/tomcat-i18n-fr-8.5.49.jar.asc(SHA1: 0d898ec598dfee60ff4a00db52dfa33e0efb6b9b)/org/apache/tomcat/tomcat-i18n-fr/8.5.49/tomcat-i18n-fr-8.5.49.jar(SHA1: 94ac4b34ca549cdeb4477c777d5367c57f4343de)/org/apache/tomcat/tomcat-jdbc/8.5.49/tomcat-jdbc-8.5.49.jar(SHA1: 16ff36193247c38b89b00fb8c181c8b180f5a1c7)/org/apache/tomcat/tomcat-jdbc/8.5.49/tomcat-jdbc-8.5.49-sources.jar.asc(SHA1: 38cefbdc55a7eda82ed85d007ad986eeed569892)/org/apache/tomcat/tomcat-jdbc/8.5.49/tomcat-jdbc-8.5.49.jar.asc(SHA1: 

svn commit: r36806 [1/2] - in /dev/tomcat/tomcat-8/v8.5.49: ./ bin/ bin/embed/ bin/extras/ src/

2019-11-17 Thread markt
Author: markt
Date: Sun Nov 17 19:00:44 2019
New Revision: 36806

Log:
Upload 8.5.49 for voting

Added:
dev/tomcat/tomcat-8/v8.5.49/
dev/tomcat/tomcat-8/v8.5.49/KEYS
dev/tomcat/tomcat-8/v8.5.49/README.html
dev/tomcat/tomcat-8/v8.5.49/RELEASE-NOTES
dev/tomcat/tomcat-8/v8.5.49/bin/
dev/tomcat/tomcat-8/v8.5.49/bin/README.html
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.tar.gz   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.tar.gz.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.tar.gz.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.zip   (with 
props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.zip.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-deployer.zip.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-fulldocs.tar.gz   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-fulldocs.tar.gz.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-fulldocs.tar.gz.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x64.zip   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x64.zip.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x64.zip.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x86.zip   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x86.zip.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49-windows-x86.zip.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.exe   (with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.exe.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.exe.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz   (with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.tar.gz.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.zip   (with props)
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.zip.asc
dev/tomcat/tomcat-8/v8.5.49/bin/apache-tomcat-8.5.49.zip.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/embed/
dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.tar.gz   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.tar.gz.asc

dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.tar.gz.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.zip   
(with props)
dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.zip.asc
dev/tomcat/tomcat-8/v8.5.49/bin/embed/apache-tomcat-8.5.49-embed.zip.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/extras/
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-jmx-remote.jar   (with 
props)
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-jmx-remote.jar.asc
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-jmx-remote.jar.sha512
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-ws.jar   (with props)
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-ws.jar.asc
dev/tomcat/tomcat-8/v8.5.49/bin/extras/catalina-ws.jar.sha512
dev/tomcat/tomcat-8/v8.5.49/src/
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.tar.gz   (with 
props)
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.tar.gz.asc
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.tar.gz.sha512
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip   (with props)
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.asc
dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.sha512

Added: dev/tomcat/tomcat-8/v8.5.49/KEYS
==
--- dev/tomcat/tomcat-8/v8.5.49/KEYS (added)
+++ dev/tomcat/tomcat-8/v8.5.49/KEYS Sun Nov 17 19:00:44 2019
@@ -0,0 +1,676 @@
+This file contains the PGP keys of various Apache developers.
+Please don't use them for email unless you have to. Their main
+purpose is code signing.
+
+Apache users: pgp < KEYS
+Apache developers:
+(pgpk -ll  && pgpk -xa ) >> this file.
+  or
+(gpg --fingerprint --list-sigs 
+ && gpg --armor --export ) >> this file.
+
+Apache developers: please ensure that your key is also available via the
+PGP keyservers (such as pgpkeys.mit.edu).
+
+
+Type Bits/KeyIDDate   User ID
+pub  2048/F22C4FED 2001/07/02 Andy Armstrong 
+
+-BEGIN PGP PUBLIC KEY BLOCK-
+Version: PGPfreeware 7.0.3 for non-commercial use 
+
+mQGiBDtAWuURBADZ0KUEyUkSUiTA09e7tvEbX25STsjxrR+DNTainCls+XlkVOij
+gBv216lqge9tIsS0L6hCP4OQbFf/64qVtJssX4QXdyiZGb5wpmcj0Mz602Ew8r+N
+I0S5NvmogoYWW7BlP4r61jNxO5zrr03KaijM5r4ipJdLUxyOmM6P2jRPUwCg/5gm
+bpqiYl7pXX5FgDeB36tmD+UD/06iLqOnoiKO0vMbOk7URclhCObMNrHqxTxozMTS
+B9soYURbIeArei+plYo2n+1qB12ayybjhVu3uksXRdT9bEkyxMfslvLbIpDAG8Cz

svn commit: r36806 [2/2] - in /dev/tomcat/tomcat-8/v8.5.49: ./ bin/ bin/embed/ bin/extras/ src/

2019-11-17 Thread markt
Added: dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.asc
==
--- dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.asc (added)
+++ dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.asc Sun Nov 17 
19:00:44 2019
@@ -0,0 +1,16 @@
+-BEGIN PGP SIGNATURE-
+
+iQIzBAABCAAdFiEEqcXfTSLpmZjZh1pREMAcWi9gWecFAl3RljMACgkQEMAcWi9g
+Wefkyg/+MP0dlsvcAqGnfAY/p8oXdM5B2b6iPT/O6RMaYOROk2tjIsfHjFWFlO5y
+ZGgebrBTF0r3laFy3NprCVZ9fiI8hczs1cCvx1EgMuTSrk/9X3Qtzx6xMk3VDbGr
+w6mpS2yzplxeg9VMkkiMirrVF5Xoaq1yjosxAvjbocYjS88nhBuI6vP3oo2BH190
+wBlphr9xUfaLNOGmi+1qNcmiVZnVvwEQTYvCkhZhJ9G4pLEa6QOahK4R8s9D7Bl3
+rcoviv4tesFxEX7BUKHXRWdHqXdJic6JvtfpQobIBe/u/A+eINf+4W725FpnLEYu
+1eiPjwMpN4SKTpbvGTkHC4vBM3RpVm4atkMQwxyScr5zBpA/qaOuv2Q/rNNLLtQc
+1UobtCf6rgmJK6IR8K03oWkIvZchlFMPKay+YRFwzLGJswJ5JFJ5oqEJMqqXKmSz
+CjVl7HO6qfSy+zTi6ZeGo2nbuW5Urhkp0FELPqX8wza0iNVfZdMxDXfrSOlmJeiI
+4ak/6hGG18/gCgHLXsswKxQn6p8y9iza4UMKkTT+ahga9a9ynJrRgSj+iSiLmg4H
+nbIjLHZPS4F9CpjTtQMQUBP+CccXT66PYKQuvLErIrv9/uvuDhG+ndI0Z8+Ky4EV
+2v0ncPvFM99WwgjbK3uGFdcpp6aEbct2O2laIGF7NvTXL6qN0ec=
+=b3Jm
+-END PGP SIGNATURE-

Added: dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.sha512
==
--- dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.sha512 (added)
+++ dev/tomcat/tomcat-8/v8.5.49/src/apache-tomcat-8.5.49-src.zip.sha512 Sun Nov 
17 19:00:44 2019
@@ -0,0 +1 @@
+5e0a990f98adf35d0189ee456bff2f8ecfa078bf88e7c4195551af182c48fa840aee3e521da41d090342af3e994c2a52865abe9bc0d9f217cef7c68d9ab331b2
 *apache-tomcat-8.5.49-src.zip
\ No newline at end of file



-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



[tomcat] tag 8.5.49 created (now e0c759f)

2019-11-17 Thread markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a change to tag 8.5.49
in repository https://gitbox.apache.org/repos/asf/tomcat.git.


  at e0c759f  (commit)
This tag includes the following new commits:

 new e0c759f  Tag 8.5.49

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



[tomcat] 01/01: Tag 8.5.49

2019-11-17 Thread markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to tag 8.5.49
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit e0c759f3bd47e06b9d526ed40ed9d1e923f464b6
Author: Mark Thomas 
AuthorDate: Sun Nov 17 18:40:05 2019 +

Tag 8.5.49
---
 build.properties.default   | 4 ++--
 webapps/docs/changelog.xml | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/build.properties.default b/build.properties.default
index c9d874a..8ef1448 100644
--- a/build.properties.default
+++ b/build.properties.default
@@ -27,7 +27,7 @@ version.major=8
 version.minor=5
 version.build=49
 version.patch=0
-version.suffix=-dev
+version.suffix=
 
 # - Source control flags -
 git.branch=8.5.x
@@ -290,4 +290,4 @@ saaj-api.checksum.algorithm=MD5|SHA-1
 
saaj-api.checksum.value=caae8b4bf2c551155815331e9e96256f|1c399a7fea4d0262a6a39750e419c24f0c769586
 saaj-api.home=${base.path}/saaj-api-${saaj-api.version}
 saaj-api.jar=${saaj-api.home}/saaj-api-${saaj-api.version}.jar
-saaj-api.loc=${base-maven.loc}/javax/xml/soap/saaj-api/${saaj-api.version}/saaj-api-${saaj-api.version}.jar
\ No newline at end of file
+saaj-api.loc=${base-maven.loc}/javax/xml/soap/saaj-api/${saaj-api.version}/saaj-api-${saaj-api.version}.jar
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cc7c33f..a70443e 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -44,7 +44,7 @@
   They eventually become mixed with the numbered issues (i.e., numbered
   issues do not "pop up" wrt. others).
 -->
-
+
   
 
   


-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



[tomcat] branch 8.5.x updated: Update changelog

2019-11-17 Thread markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
 new f9d0fb0  Update changelog
f9d0fb0 is described below

commit f9d0fb02219631f61f87defdd0c37b2d8051ab91
Author: Mark Thomas 
AuthorDate: Sun Nov 17 17:53:22 2019 +

Update changelog
---
 webapps/docs/changelog.xml | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index f965758..cc7c33f 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -45,8 +45,17 @@
   issues do not "pop up" wrt. others).
 -->
 
+  
+
+  
+Correct a regression introduced in 8.5.48 that could trigger a
+NullPointerException when using a
+RequestDispatcher. (markt)
+  
+
+  
 
-
+
   
 
   


-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



svn commit: r36805 - /dev/tomcat/tomcat-8/v8.5.48/

2019-11-17 Thread markt
Author: markt
Date: Sun Nov 17 17:43:36 2019
New Revision: 36805

Log:
Drop 8.5.48

Removed:
dev/tomcat/tomcat-8/v8.5.48/


-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Nexus: Staging Repository Dropped

2019-11-17 Thread Nexus Repository Manager
Message from: https://repository.apache.orgDeployer properties:"userAgent" = "maven-artifact/2.2.1 (Java 1.7.0_80; Windows 7 6.1)""userId" = "markt""ip" = "213.121.9.136"Details:The orgapachetomcat-1237 staging repository has been dropped.Action performed by Mark Thomas (markt)

[tomcat] branch 8.5.x updated: Fix NPE regression in 6c03319

2019-11-17 Thread markt
This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/8.5.x by this push:
 new 27adc25  Fix NPE regression in 6c03319
27adc25 is described below

commit 27adc252a0fc8ad254a053c8c8ce0e0af8e4f73d
Author: Mark Thomas 
AuthorDate: Sun Nov 17 17:27:14 2019 +

Fix NPE regression in 6c03319
---
 .../apache/catalina/core/ApplicationMapping.java   | 77 --
 1 file changed, 42 insertions(+), 35 deletions(-)

diff --git a/java/org/apache/catalina/core/ApplicationMapping.java 
b/java/org/apache/catalina/core/ApplicationMapping.java
index acf1b37..4d28f7a 100644
--- a/java/org/apache/catalina/core/ApplicationMapping.java
+++ b/java/org/apache/catalina/core/ApplicationMapping.java
@@ -32,42 +32,49 @@ public class ApplicationMapping {
 
 public HttpServletMapping getHttpServletMapping() {
 if (mapping == null) {
-String servletName;
-if (mappingData.wrapper == null) {
-servletName = "";
+if (mappingData == null) {
+// This can happen when dispatching from an application 
provided
+// request object that does not provide the Servlet 4.0 mapping
+// data.
+mapping = new MappingImpl("", "", null, "");
 } else {
-servletName = mappingData.wrapper.getName();
-}
-if (mappingData.matchType == null) {
-mapping = new MappingImpl("", "", null, servletName);
-} else {
-switch (mappingData.matchType) {
-case CONTEXT_ROOT:
-mapping = new MappingImpl("", "", 
mappingData.matchType, servletName);
-break;
-case DEFAULT:
-mapping = new MappingImpl("", "/", 
mappingData.matchType, servletName);
-break;
-case EXACT:
-mapping = new 
MappingImpl(mappingData.wrapperPath.toString().substring(1),
-mappingData.wrapperPath.toString(), 
mappingData.matchType, servletName);
-break;
-case EXTENSION:
-String path = mappingData.wrapperPath.toString();
-int extIndex = path.lastIndexOf('.');
-mapping = new MappingImpl(path.substring(1, extIndex),
-"*" + path.substring(extIndex), 
mappingData.matchType, servletName);
-break;
-case PATH:
-String matchValue;
-if (mappingData.pathInfo.isNull()) {
-matchValue = null;
-} else {
-matchValue = 
mappingData.pathInfo.toString().substring(1);
-}
-mapping = new MappingImpl(matchValue, 
mappingData.wrapperPath.toString() + "/*",
-mappingData.matchType, servletName);
-break;
+String servletName;
+if (mappingData.wrapper == null) {
+servletName = "";
+} else {
+servletName = mappingData.wrapper.getName();
+}
+if (mappingData.matchType == null) {
+mapping = new MappingImpl("", "", null, servletName);
+} else {
+switch (mappingData.matchType) {
+case CONTEXT_ROOT:
+mapping = new MappingImpl("", "", 
mappingData.matchType, servletName);
+break;
+case DEFAULT:
+mapping = new MappingImpl("", "/", 
mappingData.matchType, servletName);
+break;
+case EXACT:
+mapping = new 
MappingImpl(mappingData.wrapperPath.toString().substring(1),
+mappingData.wrapperPath.toString(), 
mappingData.matchType, servletName);
+break;
+case EXTENSION:
+String path = mappingData.wrapperPath.toString();
+int extIndex = path.lastIndexOf('.');
+mapping = new MappingImpl(path.substring(1, 
extIndex),
+"*" + path.substring(extIndex), 
mappingData.matchType, servletName);
+break;
+case PATH:
+String matchValue;
+if (mappingData.pathInfo.isNull()) {
+matchValue = null;
+   

Re: [VOTE][CANCELLED] Release Apache Tomcat 8.5.48

2019-11-17 Thread Mark Thomas
A regression has been reported on the users list. I have fixed it
locally and am running the unit tests before committing.

I'll re-roll the release once the tests have passed.

Mark

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org



Re: Possible optimization for class loading?

2019-11-17 Thread Rainer Jung

Am 17.11.2019 um 17:21 schrieb Konstantin Kolinko:

вс, 17 нояб. 2019 г. в 18:40, Rainer Jung :


I noticed a slowness during Webapp startup on the Winows platform.
Investigation showed, that about three seconds of the webapp startup
time - roughly 1/3 of the total time - was due to
File.getCanonicalPath(). That call seems to be especially expensive on
Windows, because it iterates over each component of the path in question
and does at least three system calls on each of them. So if you app is
installed in a somewhat deeply nested path, getCanonicalPath() gets
especially expensive.



Just as a reminder:
getCanonicalPath() is necessary to deal with file system on Windows
being case-insensitive. (Removing those calls is likely to lead to
exploitable security issues.) On case-sensitive filesystems one can
configure  in Tomcat 8.5/9.0 and some
of those checks will be disabled.

http://tomcat.apache.org/tomcat-8.5-doc/config/resources.html

In Tomcat 7.0 the same configuration flag exists on Context,

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html


Yes, setting allowLinking="true" fixes the performance impact but is not 
a real option on Windows, where the problem was observed. It wasn't 
observed on Linux, I guess the performance penalty of getCanonicalPath() 
on that platform is smaller (but didn't check).



One can check this with a simple test app and running the ProcessMonitpr
from SysInternals, which can nicely trace file system operations.

I noticed that by far the most occurrences happened during webapp class
loading. StandardRoot initializes resources to contain a DirResourceSet
first and then a JarResourceSet per WEB-INF/lib jar file.

Now any class loading (of not yet loaded classes) goes through the
following stack (this is for TC 8.5):

...
java.base@13.0.1/java.io.File.getCanonicalPath(File.java:618)
org.apache.catalina.webresources.AbstractFileResourceSet.file(AbstractFileResourceSet.java:90)
org.apache.catalina.webresources.DirResourceSet.getResource(DirResourceSet.java:101)
org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2279)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:857)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
- locked (a java.lang.Object@1797c4d) index 11 frame
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
...

In our case, the webapp does not have a WEB-INF/classes directory.
Nevertheless TC always goes through the DirResourceSet running the
expensive getCanonicalPath(), returning an EmptyResource and then
looking for the class and finding it in one of the jar file resources.
This happens about 5000 times (due to the number of classes to load).

I know that we have to do this in general, because WEB-INF/classes have
precedence over WEB-INF/lib, but maybe we could optimize in the case we
are looking for a class but WEB-INF/classes does not even exist? Would
this be a reasonable general optimization?


There are two scenarios:
(a) changes are expected: the web application classes can be updated
at runtime (with new classes being added),
(b) no changes: the web application classes are not updated at runtime.

(b) is certainly the case when the application runs in production mode
(when JSPs cannot be updated either)

(a) may be useful in some scenarios. Maybe in production if some
classes are added to a web application at run time as plugins.

I think that (b) is the case even when running in development mode, as
we are talking about classes, not JSPs here. IIRC Eclipse IDE restarts
a web application when its classes are updated and recompiled by the
IDE. I think that (a) is not used in development.
What do others think about it?
I remember some questions about hot-swapping of classes (for sake of
debugging), but Tomcat does not have such feature yet.

I think we can assume (b) by default, but have a flag to specify that
it is really (a).

If it is the (b) case, a single call to File.exists() /
File.isDirectory() is sufficient to remember "the classes directory
does not exist" and stop further lookups.


+1


If if is the (a) case, a call to call File.exists() /
File.isDirectory() can be added as an optimization before calling
getCanonicalPath().


+1


I think that we cannot remember "the classes directory does not exist"
fact without having a flag to disable such feature.


+1


Looking into AbstractFileResourceSet.file() from the above stacktrace,
some check are already there, 

Re: Possible optimization for class loading?

2019-11-17 Thread Konstantin Kolinko
вс, 17 нояб. 2019 г. в 18:40, Rainer Jung :
>
> I noticed a slowness during Webapp startup on the Winows platform.
> Investigation showed, that about three seconds of the webapp startup
> time - roughly 1/3 of the total time - was due to
> File.getCanonicalPath(). That call seems to be especially expensive on
> Windows, because it iterates over each component of the path in question
> and does at least three system calls on each of them. So if you app is
> installed in a somewhat deeply nested path, getCanonicalPath() gets
> especially expensive.
>

Just as a reminder:
getCanonicalPath() is necessary to deal with file system on Windows
being case-insensitive. (Removing those calls is likely to lead to
exploitable security issues.) On case-sensitive filesystems one can
configure  in Tomcat 8.5/9.0 and some
of those checks will be disabled.

http://tomcat.apache.org/tomcat-8.5-doc/config/resources.html

In Tomcat 7.0 the same configuration flag exists on Context,

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

> One can check this with a simple test app and running the ProcessMonitpr
> from SysInternals, which can nicely trace file system operations.
>
> I noticed that by far the most occurrences happened during webapp class
> loading. StandardRoot initializes resources to contain a DirResourceSet
> first and then a JarResourceSet per WEB-INF/lib jar file.
>
> Now any class loading (of not yet loaded classes) goes through the
> following stack (this is for TC 8.5):
>
> ...
> java.base@13.0.1/java.io.File.getCanonicalPath(File.java:618)
> org.apache.catalina.webresources.AbstractFileResourceSet.file(AbstractFileResourceSet.java:90)
> org.apache.catalina.webresources.DirResourceSet.getResource(DirResourceSet.java:101)
> org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
> org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
> org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
> org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225)
> org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2279)
> org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:857)
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
> - locked (a java.lang.Object@1797c4d) index 11 frame
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
> org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
> ...
>
> In our case, the webapp does not have a WEB-INF/classes directory.
> Nevertheless TC always goes through the DirResourceSet running the
> expensive getCanonicalPath(), returning an EmptyResource and then
> looking for the class and finding it in one of the jar file resources.
> This happens about 5000 times (due to the number of classes to load).
>
> I know that we have to do this in general, because WEB-INF/classes have
> precedence over WEB-INF/lib, but maybe we could optimize in the case we
> are looking for a class but WEB-INF/classes does not even exist? Would
> this be a reasonable general optimization?

There are two scenarios:
(a) changes are expected: the web application classes can be updated
at runtime (with new classes being added),
(b) no changes: the web application classes are not updated at runtime.

(b) is certainly the case when the application runs in production mode
(when JSPs cannot be updated either)

(a) may be useful in some scenarios. Maybe in production if some
classes are added to a web application at run time as plugins.

I think that (b) is the case even when running in development mode, as
we are talking about classes, not JSPs here. IIRC Eclipse IDE restarts
a web application when its classes are updated and recompiled by the
IDE. I think that (a) is not used in development.
What do others think about it?
I remember some questions about hot-swapping of classes (for sake of
debugging), but Tomcat does not have such feature yet.

I think we can assume (b) by default, but have a flag to specify that
it is really (a).

If it is the (b) case, a single call to File.exists() /
File.isDirectory() is sufficient to remember "the classes directory
does not exist" and stop further lookups.

If if is the (a) case, a call to call File.exists() /
File.isDirectory() can be added as an optimization before calling
getCanonicalPath().

I think that we cannot remember "the classes directory does not exist"
fact without having a flag to disable such feature.


Looking into AbstractFileResourceSet.file() from the above stacktrace,
some check are already there, e.g. "mustExist" flag. I see that
DirResourceSet.getResource(DirResourceSet.java:101) calls file(...,
false), so "mustExist" is false. It is just a first glance, I have not
dug further yet.

Best regards,
Konstantin Kolinko


Possible optimization for class loading?

2019-11-17 Thread Rainer Jung
I noticed a slowness during Webapp startup on the Winows platform. 
Investigation showed, that about three seconds of the webapp startup 
time - roughly 1/3 of the total time - was due to 
File.getCanonicalPath(). That call seems to be especially expensive on 
Windows, because it iterates over each component of the path in question 
and does at least three system calls on each of them. So if you app is 
installed in a somewhat deeply nested path, getCanonicalPath() gets 
especially expensive.


One can check this with a simple test app and running the ProcessMonitpr 
from SysInternals, which can nicely trace file system operations.


I noticed that by far the most occurrences happened during webapp class 
loading. StandardRoot initializes resources to contain a DirResourceSet 
first and then a JarResourceSet per WEB-INF/lib jar file.


Now any class loading (of not yet loaded classes) goes through the 
following stack (this is for TC 8.5):


...
java.base@13.0.1/java.io.File.getCanonicalPath(File.java:618)
org.apache.catalina.webresources.AbstractFileResourceSet.file(AbstractFileResourceSet.java:90)
org.apache.catalina.webresources.DirResourceSet.getResource(DirResourceSet.java:101)
org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
org.apache.catalina.webresources.Cache.getResource(Cache.java:62)
org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225)
org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2279)
org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:857)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)
- locked (a java.lang.Object@1797c4d) index 11 frame 
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1329)

org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182)
...

In our case, the webapp does not have a WEB-INF/classes directory. 
Nevertheless TC always goes through the DirResourceSet running the 
expensive getCanonicalPath(), returning an EmptyResource and then 
looking for the class and finding it in one of the jar file resources. 
This happens about 5000 times (due to the number of classes to load).


I know that we have to do this in general, because WEB-INF/classes have 
precedence over WEB-INF/lib, but maybe we could optimize in the case we 
are looking for a class but WEB-INF/classes does not even exist? Would 
this be a reasonable general optimization?


Unfortunately the ResourceSet classes can not be easily extended. Since 
most of their fields are private, one would have to fork lots of code. 
It would be much easier to add the feature to the existing implementations.


Regards,

Rainer

-
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org