[tomcat] branch master updated: Replace tabs with four spaces
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 c0c7d9e Replace tabs with four spaces c0c7d9e is described below commit c0c7d9e4f247f5eec7c8f4ee9b285854f41c8202 Author: Mark Thomas AuthorDate: Mon Jul 13 10:51:06 2020 +0100 Replace tabs with four spaces --- res/bnd/annotations-api.jar.tmp.bnd | 4 ++-- res/bnd/catalina-ha.jar.tmp.bnd | 4 ++-- res/bnd/catalina-storeconfig.jar.tmp.bnd | 4 ++-- res/bnd/catalina-tribes.jar.tmp.bnd | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/res/bnd/annotations-api.jar.tmp.bnd b/res/bnd/annotations-api.jar.tmp.bnd index 739bf26..7caf115 100644 --- a/res/bnd/annotations-api.jar.tmp.bnd +++ b/res/bnd/annotations-api.jar.tmp.bnd @@ -39,5 +39,5 @@ Provide-Capability: \ access=32;\ version=${annotation.spec.version} -jpms-module-info-options: \ - jakarta.annotation;\ - substitute=annotations-api \ No newline at end of file +jakarta.annotation;\ +substitute=annotations-api \ No newline at end of file diff --git a/res/bnd/catalina-ha.jar.tmp.bnd b/res/bnd/catalina-ha.jar.tmp.bnd index 4b6c2db..278e6a8 100644 --- a/res/bnd/catalina-ha.jar.tmp.bnd +++ b/res/bnd/catalina-ha.jar.tmp.bnd @@ -31,5 +31,5 @@ Export-Package: \ access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-ha \ No newline at end of file +${module.name};\ +substitute=catalina-ha \ No newline at end of file diff --git a/res/bnd/catalina-storeconfig.jar.tmp.bnd b/res/bnd/catalina-storeconfig.jar.tmp.bnd index d82fe37..c47666a 100644 --- a/res/bnd/catalina-storeconfig.jar.tmp.bnd +++ b/res/bnd/catalina-storeconfig.jar.tmp.bnd @@ -24,5 +24,5 @@ Export-Package: org.apache.catalina.storeconfig access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-storeconfig \ No newline at end of file +${module.name};\ +substitute=catalina-storeconfig \ No newline at end of file diff --git a/res/bnd/catalina-tribes.jar.tmp.bnd b/res/bnd/catalina-tribes.jar.tmp.bnd index 6bcabf1..09c7f54 100644 --- a/res/bnd/catalina-tribes.jar.tmp.bnd +++ b/res/bnd/catalina-tribes.jar.tmp.bnd @@ -38,5 +38,5 @@ Export-Package: \ access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-tribes \ No newline at end of file +${module.name};\ +substitute=catalina-tribes \ 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] branch 9.0.x updated: Replace tabs with four spaces
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new f911447 Replace tabs with four spaces f911447 is described below commit f911447079fd898c8942bd6f27a021b775840b1b Author: Mark Thomas AuthorDate: Mon Jul 13 10:51:06 2020 +0100 Replace tabs with four spaces --- res/bnd/annotations-api.jar.tmp.bnd | 4 ++-- res/bnd/catalina-ha.jar.tmp.bnd | 4 ++-- res/bnd/catalina-storeconfig.jar.tmp.bnd | 4 ++-- res/bnd/catalina-tribes.jar.tmp.bnd | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/res/bnd/annotations-api.jar.tmp.bnd b/res/bnd/annotations-api.jar.tmp.bnd index 09151bf..e932d93 100644 --- a/res/bnd/annotations-api.jar.tmp.bnd +++ b/res/bnd/annotations-api.jar.tmp.bnd @@ -39,5 +39,5 @@ Provide-Capability: \ access=32;\ version=${annotation.spec.version} -jpms-module-info-options: \ - jakarta.annotation;\ - substitute=annotations-api +jakarta.annotation;\ +substitute=annotations-api diff --git a/res/bnd/catalina-ha.jar.tmp.bnd b/res/bnd/catalina-ha.jar.tmp.bnd index 4b6c2db..278e6a8 100644 --- a/res/bnd/catalina-ha.jar.tmp.bnd +++ b/res/bnd/catalina-ha.jar.tmp.bnd @@ -31,5 +31,5 @@ Export-Package: \ access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-ha \ No newline at end of file +${module.name};\ +substitute=catalina-ha \ No newline at end of file diff --git a/res/bnd/catalina-storeconfig.jar.tmp.bnd b/res/bnd/catalina-storeconfig.jar.tmp.bnd index d82fe37..c47666a 100644 --- a/res/bnd/catalina-storeconfig.jar.tmp.bnd +++ b/res/bnd/catalina-storeconfig.jar.tmp.bnd @@ -24,5 +24,5 @@ Export-Package: org.apache.catalina.storeconfig access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-storeconfig \ No newline at end of file +${module.name};\ +substitute=catalina-storeconfig \ No newline at end of file diff --git a/res/bnd/catalina-tribes.jar.tmp.bnd b/res/bnd/catalina-tribes.jar.tmp.bnd index 6bcabf1..09c7f54 100644 --- a/res/bnd/catalina-tribes.jar.tmp.bnd +++ b/res/bnd/catalina-tribes.jar.tmp.bnd @@ -38,5 +38,5 @@ Export-Package: \ access=32;\ version=${Bundle-Version} -jpms-module-info-options: \ - ${module.name};\ - substitute=catalina-tribes \ No newline at end of file +${module.name};\ +substitute=catalina-tribes \ 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
Re: [tomcat] branch 9.0.x updated: Fix BZ 64548 - generate JPMS metadata
There are some Java EE / Jakarta EE issues here. Tomcat 10 is Jakarta EE. Tomcat 9 is Java EE. There should not be any references to Jakarta in Tomcat 9. This needs to be fixed before the next Tomcat 9 release. I don't think there are definitive JPMS names for the Java EE 8 modules as Java EE 8 pre-dates Java 9 where JPMS was introduced. I'm not sure of the best way to handle this. Options that come to mind are: a) no JPMS info at all b) align it with the JAR file names (i.e. replicate what would happen by default) c) Use the Jakarta EE 9 names but with javax.* rather than jakarta.* Mark On 11/07/2020 03:42, rotty3...@apache.org wrote: > This is an automated email from the ASF dual-hosted git repository. > > rotty3000 pushed a commit to branch 9.0.x > in repository https://gitbox.apache.org/repos/asf/tomcat.git > > > The following commit(s) were added to refs/heads/9.0.x by this push: > new 39e7478 Fix BZ 64548 - generate JPMS metadata > 39e7478 is described below > > commit 39e74780c4292d51b544620e59124c2dfb1b9ab8 > Author: Raymond Augé > AuthorDate: Fri Jun 19 22:25:54 2020 -0400 > > Fix BZ 64548 - generate JPMS metadata > > Signed-off-by: Raymond Augé > --- > res/bnd/annotations-api.jar.tmp.bnd| 10 +- > res/bnd/build-defaults.bnd | 4 +++- > res/bnd/catalina-ha.jar.tmp.bnd| 10 +- > res/bnd/catalina-ssi.jar.tmp.bnd | 8 > res/bnd/catalina-storeconfig.jar.tmp.bnd | 10 +- > res/bnd/catalina-tribes.jar.tmp.bnd| 10 +- > res/bnd/catalina.jar.tmp.bnd | 20 +++- > res/bnd/el-api.jar.tmp.bnd | 8 > res/bnd/jasper-el.jar.tmp.bnd | 10 +- > res/bnd/jasper.jar.tmp.bnd | 11 ++- > res/bnd/jaspic-api.jar.tmp.bnd | 10 +- > res/bnd/jsp-api.jar.tmp.bnd| 8 > res/bnd/servlet-api.jar.tmp.bnd| 8 > res/bnd/tomcat-api.jar.tmp.bnd | 8 > res/bnd/tomcat-coyote.jar.tmp.bnd | 10 +- > res/bnd/tomcat-dbcp.jar.tmp.bnd| 9 - > res/bnd/tomcat-embed-core.jar.tmp.bnd | 19 ++- > res/bnd/tomcat-embed-el.jar.tmp.bnd| 9 - > res/bnd/tomcat-embed-jasper.jar.tmp.bnd| 9 - > res/bnd/tomcat-embed-websocket.jar.tmp.bnd | 11 +-- > res/bnd/tomcat-jni.jar.tmp.bnd | 10 +- > res/bnd/tomcat-juli.jar.tmp.bnd| 10 +- > res/bnd/tomcat-util-scan.jar.tmp.bnd | 10 +- > res/bnd/tomcat-util.jar.tmp.bnd| 10 +- > res/bnd/tomcat-websocket.jar.tmp.bnd | 10 +- > res/bnd/websocket-api.jar.tmp.bnd | 10 +- > webapps/docs/changelog.xml | 3 +++ > 27 files changed, 243 insertions(+), 22 deletions(-) > > diff --git a/res/bnd/annotations-api.jar.tmp.bnd > b/res/bnd/annotations-api.jar.tmp.bnd > index 19db9f4..09151bf 100644 > --- a/res/bnd/annotations-api.jar.tmp.bnd > +++ b/res/bnd/annotations-api.jar.tmp.bnd > @@ -32,4 +32,12 @@ Provide-Capability: \ > Implementation-Version=1.3.${annotation.revision};\ > Specification-Title='Common Annotations';\ > Specification-Vendor='Oracle Corporation';\ > -Specification-Version=1.3 > \ No newline at end of file > +Specification-Version=1.3 > + > +-jpms-module-info: \ > +jakarta.annotation;\ > +access=32;\ > +version=${annotation.spec.version} > +-jpms-module-info-options: \ > + jakarta.annotation;\ > + substitute=annotations-api Should not reference Jakarta > diff --git a/res/bnd/catalina.jar.tmp.bnd b/res/bnd/catalina.jar.tmp.bnd > index dc94c42..972745c 100644 > --- a/res/bnd/catalina.jar.tmp.bnd > +++ b/res/bnd/catalina.jar.tmp.bnd > @@ -48,4 +48,22 @@ Export-Package: \ > org.apache.catalina > > -includepackage: \ > -org.apache.naming.factory.webservices > \ No newline at end of file > +org.apache.naming.factory.webservices > + > +-jpms-module-info: \ > +${module.name};\ > +access=32;\ > +version=${Bundle-Version};\ > +modules='\ > +jakarta.ejb-api,\ > +jakarta.mail,\ > +jakarta.persistence-api,\ > +jakarta.xml.rpc-api,\ > +java.xml.ws' > +-jpms-module-info-options: \ > +${module.name};substitute=catalina,\ > +jakarta.ejb-api;static=true,\ > +jakarta.mail;static=true,\ > +jakarta.persistence-api;static=true,\ > +jakarta.xml.rpc-api;static=true,\ > +java.xml.ws;static=true > \ No newline at end of file > diff --git a/res/bnd/el-api.jar.tmp.bnd b/res/bnd/el-api.jar.tmp.bnd > index 1c6481d..4c5333e 100644 > --- a/res/bnd/el-api.jar.tmp.bnd > +++ b/res/bnd/el-api.jar.tmp.bnd > @@ -32,3 +32,11 @@ Provide-Capability: \ > Implementation-Title=javax.el;\ > Implementation-Version=3.0.${el.
RE: Support for LetsEncrypt certs, and update process, in Tomcat without restart.
Hi all, Thank you for your valuable assistance and suggestions so far. I did eventually try this (again, using ‘groovy’ as a simple-to-use scriptable wrapper to Java), which looks like it works: @Grab(group='com.github.groovy-wslite', module='groovy-wslite', version='1.1.3') import wslite.rest.* import wslite.http.auth.* RESTClient client = new RESTClient("http://localhost:8080/manager";) //or https://localhost/manager client.authorization = new HTTPBasicAuthorization("tomcat-users-name", "and-corresponding-password") def path = "/jmxproxy/?invoke=Catalina:type=ProtocolHandler,port=443&op=reloadSslHostConfigs" def response response = client.get(path: path) println response.text And it returns (for example): “OK - Operation reloadSslHostConfigs without return value” If the certificate file now no longer exists or is corrupted – we get an error response. Thus we know this action provokes the certificate file to be re-read. However If the connector section in server.xml is edited to point to a new certificate path/filename, it is ignored. The current certificate config continues to be used. If the certificate file is replaced by a new certificate, the end-user does not see any change – a fresh browser will still see the old certificate. So: Is there some other action that I need to invoke after the reloadSslHostConfigs? Or to invoke it under a different “mbean name”? When I change the bean name to include address=127.0.0.1 as per your curl example (Catalina:type=ProtocolHandler,port=443,address=127.0.0.1) it errors. For example – under the Catalina:type=Connector,port=443 – I see operations “destroy / pause / resume / stop / start / init”. And under the ProtocolHandler I see “findSslHostConfigs / start / destroy / pause / resume / getProperty / closeServerSocketGraceful / findupgradeProtocols / init” Would these help? The connector config (simple self-signed cert in this case – not yet changed to a letsencrypt one) looks similar to this: And I am trying to reset it to a PKCS12 keystore: I’m at a loss to know what to do – other than to abandon SSL termination in tomcat and use a proxy to do it instead – that I really wish I could avoid. Some of my findings from trying to refresh the Tomcat SSL config at runtime and trying to decipher the documentation and suggestions: 1. The remote JMX feature does not need to be configured (e.g. -Dcom.sun.management.jmxremote.port=9004) if you only need localhost management. But the webapp “manager” does then need to be installed – as this acts as the entry point for JMX requests. It’s not entirely clear in the documentation about this, nor the differences in the format or content of the returned information. 2. Not being too familiar with curl, I could not determine how to pass the manager username / password. 3. Nor is it very obvious how interpret the jmx query response in order to form effective gets and sets (e.g. the ‘bean name’ to use in a get or set). Nor how to obtain operations and parameters. I see all that stuff if I enable remote JMX and use the JConsole. But can the manager app responses provide the same metadata to determine useful stuff? I also see these messages in a popup window when using JConsole to access the operations list: Error setting Operation panel :org.apache.tomcat.util.net.SSLHostConfigCertificate Error setting Operation panel :org.apache.tomcat.util.net.SSLHostConfig Error setting Operation panel :org.apache.coyote.Request 1. I have used the Tomcat “ant” wrapper for manager. I call the ant tasks using ‘groovy’ (just to simplify the preparation of the manager web requests and responses). I can use the Query/Get/Set calls, but I don’t seem to be able to construct an Invoke operation call. After a lot of trial and error, I gave up using this! 2. Re: Tomcat Wiki / Documentation and other cert providers… It seems that letsencrypt is currently the only provider with an automated update service. Would be great if they all could – then this really could be fully automated (i.e. a tomcat module to provide a fetch-cert-from-provider facility that works for all). But until then, a simple, reliable, well documented ‘refresh SSL cert’ feature in Tomcat would really help. Merlin Beedell From: Romain Manni-Bucau Sent: 11 June 2020 7:17 PM To: Tomcat Developers List Subject: Re: Support for LetsEncrypt certs, and update process, in Tomcat without restart. This one was more intended to System.exit but it got aligned with mw impl so it is quite close. Le jeu. 11 juin 2020 à 19:40, Christopher Schultz mailto:ch...@christopherschultz.net>> a écrit : -BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Romain, On 6/11/20 13:34, Romain Manni-Bucau wrote: > @Chris: https://github.com/rmannibucau/letsencrypt-manager/blob/master/src/main/ java/com/github/rmannibucau/letsencrypt/manager/LetsEncryptManager.java ? Thanks!
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #1 from Mark Thomas --- I am able to reproduce this using the steps provided. Thank you for providing a simple test case for this issue. It saves a considerable amount of time. I'll note at this point that creating webapps/ROOT is sufficient to resolve the issue. Generally, running without a ROOT web application is not recommended. However, unless the fix complex, I still think this should be fixed. -- 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
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #2 from Remy Maucherat --- Yes, Catalina never likes unmapped requests, it's kind of a lost cause and an empty "ROOT" folder will usually solve all the problems at no cost. Mark, I can look at this issue if you don't have time [I was planning to try later today]. -- 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
Re: Support for LetsEncrypt certs, and update process, in Tomcat without restart.
On 13/07/2020 11:09, Merlin Beedell wrote: > If the connector section in server.xml is edited to point to a new > certificate path/filename, it is ignored. The current certificate > config continues to be used. As expected. server.xml is only read on Tomcat start. Changes made after that point will not take effect until the next Tomcat restart. > If the certificate file is replaced by a new certificate, the end-user > does not see any change – a fresh browser will still see the old > certificate. That isn't the behaviour I would expect. > So: Is there some /other/ action that I need to invoke after the > reloadSslHostConfigs? No. > Or to invoke it under a different “mbean name”? No. > When I change the bean name to include *address=127.0.0.1* as per your > curl example (Catalina:type=ProtocolHandler,port=443,address=127.0.0.1) > it errors. Exact bean names will depend on server configuration. > The connector config (simple self-signed cert in this case – not yet > changed to a letsencrypt one) looks similar to this: > > protocol="org.apache.coyote.http11.Http11Nio2Protocol" > sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"> > > className="org.apache.coyote.http2.Http2Protocol"> > > ciphers="HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA" > honorCipherOrder="true" protocols="TLSv1.3,TLSv1.2"> > > certificateKeystoreFile="C:\opt\certificates\keystore" > certificateKeystorePassword="passphrase" > certificateKeystoreType="JKS"> > > > > > > > > And I am trying to reset it to a PKCS12 keystore: > > certificateKeystoreFile="C:\opt\certificates\web_cert.pfx" > certificateKeystorePassword="newpass" > certificateKeystoreType="PKCS12"> To do that while Tomcat is running you'd need to change the Certificate attributes to the new values (via JMX) and then call reloadSslHostConfigs. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #3 from Mark Thomas --- Thanks for the offer. I've tracked down the root cause. The missing ROOT context puts the response into the error state which then doesn't get cleared in the RewriteValve. What I haven't figured out is the best way to handle this. Suggestions welcome. -- 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
Re: [tomcat] branch 9.0.x updated: Fix BZ 64548 - generate JPMS metadata
On Mon, Jul 13, 2020 at 1:02 PM Mark Thomas wrote: > There are some Java EE / Jakarta EE issues here. > > Tomcat 10 is Jakarta EE. > Tomcat 9 is Java EE. > > There should not be any references to Jakarta in Tomcat 9. This needs to > be fixed before the next Tomcat 9 release. > > I don't think there are definitive JPMS names for the Java EE 8 modules > as Java EE 8 pre-dates Java 9 where JPMS was introduced. I'm not sure of > the best way to handle this. Options that come to mind are: > a) no JPMS info at all > b) align it with the JAR file names (i.e. replicate what would happen by >default) > c) Use the Jakarta EE 9 names but with javax.* rather than jakarta.* > c) sounds the best to me Many people use Tomcat 9 (as the current stable version) with newer JDKs. > > Mark > > > On 11/07/2020 03:42, rotty3...@apache.org wrote: > > This is an automated email from the ASF dual-hosted git repository. > > > > rotty3000 pushed a commit to branch 9.0.x > > in repository https://gitbox.apache.org/repos/asf/tomcat.git > > > > > > The following commit(s) were added to refs/heads/9.0.x by this push: > > new 39e7478 Fix BZ 64548 - generate JPMS metadata > > 39e7478 is described below > > > > commit 39e74780c4292d51b544620e59124c2dfb1b9ab8 > > Author: Raymond Augé > > AuthorDate: Fri Jun 19 22:25:54 2020 -0400 > > > > Fix BZ 64548 - generate JPMS metadata > > > > Signed-off-by: Raymond Augé > > --- > > res/bnd/annotations-api.jar.tmp.bnd| 10 +- > > res/bnd/build-defaults.bnd | 4 +++- > > res/bnd/catalina-ha.jar.tmp.bnd| 10 +- > > res/bnd/catalina-ssi.jar.tmp.bnd | 8 > > res/bnd/catalina-storeconfig.jar.tmp.bnd | 10 +- > > res/bnd/catalina-tribes.jar.tmp.bnd| 10 +- > > res/bnd/catalina.jar.tmp.bnd | 20 +++- > > res/bnd/el-api.jar.tmp.bnd | 8 > > res/bnd/jasper-el.jar.tmp.bnd | 10 +- > > res/bnd/jasper.jar.tmp.bnd | 11 ++- > > res/bnd/jaspic-api.jar.tmp.bnd | 10 +- > > res/bnd/jsp-api.jar.tmp.bnd| 8 > > res/bnd/servlet-api.jar.tmp.bnd| 8 > > res/bnd/tomcat-api.jar.tmp.bnd | 8 > > res/bnd/tomcat-coyote.jar.tmp.bnd | 10 +- > > res/bnd/tomcat-dbcp.jar.tmp.bnd| 9 - > > res/bnd/tomcat-embed-core.jar.tmp.bnd | 19 ++- > > res/bnd/tomcat-embed-el.jar.tmp.bnd| 9 - > > res/bnd/tomcat-embed-jasper.jar.tmp.bnd| 9 - > > res/bnd/tomcat-embed-websocket.jar.tmp.bnd | 11 +-- > > res/bnd/tomcat-jni.jar.tmp.bnd | 10 +- > > res/bnd/tomcat-juli.jar.tmp.bnd| 10 +- > > res/bnd/tomcat-util-scan.jar.tmp.bnd | 10 +- > > res/bnd/tomcat-util.jar.tmp.bnd| 10 +- > > res/bnd/tomcat-websocket.jar.tmp.bnd | 10 +- > > res/bnd/websocket-api.jar.tmp.bnd | 10 +- > > webapps/docs/changelog.xml | 3 +++ > > 27 files changed, 243 insertions(+), 22 deletions(-) > > > > diff --git a/res/bnd/annotations-api.jar.tmp.bnd > b/res/bnd/annotations-api.jar.tmp.bnd > > index 19db9f4..09151bf 100644 > > --- a/res/bnd/annotations-api.jar.tmp.bnd > > +++ b/res/bnd/annotations-api.jar.tmp.bnd > > @@ -32,4 +32,12 @@ Provide-Capability: \ > > Implementation-Version=1.3.${annotation.revision};\ > > Specification-Title='Common Annotations';\ > > Specification-Vendor='Oracle Corporation';\ > > -Specification-Version=1.3 > > \ No newline at end of file > > +Specification-Version=1.3 > > + > > +-jpms-module-info: \ > > +jakarta.annotation;\ > > +access=32;\ > > +version=${annotation.spec.version} > > +-jpms-module-info-options: \ > > + jakarta.annotation;\ > > + substitute=annotations-api > > Should not reference Jakarta > > > diff --git a/res/bnd/catalina.jar.tmp.bnd b/res/bnd/catalina.jar.tmp.bnd > > index dc94c42..972745c 100644 > > --- a/res/bnd/catalina.jar.tmp.bnd > > +++ b/res/bnd/catalina.jar.tmp.bnd > > @@ -48,4 +48,22 @@ Export-Package: \ > > org.apache.catalina > > > > -includepackage: \ > > -org.apache.naming.factory.webservices > > \ No newline at end of file > > +org.apache.naming.factory.webservices > > + > > +-jpms-module-info: \ > > +${module.name};\ > > +access=32;\ > > +version=${Bundle-Version};\ > > +modules='\ > > +jakarta.ejb-api,\ > > +jakarta.mail,\ > > +jakarta.persistence-api,\ > > +jakarta.xml.rpc-api,\ > > +java.xml.ws' > > +-jpms-module-info-options: \ > > +${module.name};substitute=catalina,\ > > +jakarta.ejb-api;static=true,\ > > +jakarta.mail;static=true,\ > > +jakarta.persistence-api;static=true,\ > > +jakarta.xml.rpc-api;
[tomcat] branch master updated: Simplify some #toString() methods
This is an automated email from the ASF dual-hosted git repository. mgrigorov 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 768524f Simplify some #toString() methods new da79085 Merge pull request #321 from martin-g/master 768524f is described below commit 768524f02643c58f412c0ecea67bc41ebf4b7085 Author: Martin Tzvetanov Grigorov AuthorDate: Fri Jul 10 17:33:39 2020 +0300 Simplify some #toString() methods Do not use StringBuilder when String concatenation is just fine. Append char instead of String when possible. Fix the toString of ExampleFilter --- java/org/apache/catalina/connector/CoyotePrincipal.java | 5 + java/org/apache/catalina/core/StandardThreadExecutor.java| 4 +--- java/org/apache/catalina/tribes/UniqueId.java| 6 ++ java/org/apache/juli/VerbatimFormatter.java | 9 ++--- .../tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java | 2 +- .../tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java | 4 ++-- .../apache/tomcat/util/descriptor/web/ContextTransaction.java| 4 +--- java/org/apache/tomcat/util/digester/SetPropertiesRule.java | 4 +--- java/org/apache/tomcat/util/http/fileupload/FileUploadBase.java | 2 +- webapps/examples/WEB-INF/classes/async/Stockticker.java | 6 +++--- webapps/examples/WEB-INF/classes/filters/ExampleFilter.java | 5 + 11 files changed, 16 insertions(+), 35 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyotePrincipal.java b/java/org/apache/catalina/connector/CoyotePrincipal.java index 93d7c02..c20db11 100644 --- a/java/org/apache/catalina/connector/CoyotePrincipal.java +++ b/java/org/apache/catalina/connector/CoyotePrincipal.java @@ -62,10 +62,7 @@ public class CoyotePrincipal implements Principal, Serializable { */ @Override public String toString() { -StringBuilder sb = new StringBuilder("CoyotePrincipal["); -sb.append(this.name); -sb.append(']'); -return sb.toString(); +return "CoyotePrincipal[" + this.name + "]"; } diff --git a/java/org/apache/catalina/core/StandardThreadExecutor.java b/java/org/apache/catalina/core/StandardThreadExecutor.java index caed2d3..9ab3e7d 100644 --- a/java/org/apache/catalina/core/StandardThreadExecutor.java +++ b/java/org/apache/catalina/core/StandardThreadExecutor.java @@ -338,8 +338,6 @@ public class StandardThreadExecutor extends LifecycleMBeanBase @Override protected String getObjectNameKeyProperties() { -StringBuilder name = new StringBuilder("type=Executor,name="); -name.append(getName()); -return name.toString(); +return "type=Executor,name=" + getName(); } } diff --git a/java/org/apache/catalina/tribes/UniqueId.java b/java/org/apache/catalina/tribes/UniqueId.java index 40e5fba..cfb4387 100644 --- a/java/org/apache/catalina/tribes/UniqueId.java +++ b/java/org/apache/catalina/tribes/UniqueId.java @@ -70,9 +70,7 @@ public final class UniqueId implements Serializable{ @Override public String toString() { -StringBuilder buf = new StringBuilder("UniqueId"); -buf.append(Arrays.toString(id)); -return buf.toString(); +return "UniqueId" + Arrays.toString(id); } -} \ No newline at end of file +} diff --git a/java/org/apache/juli/VerbatimFormatter.java b/java/org/apache/juli/VerbatimFormatter.java index a7debe7..c08fce7 100644 --- a/java/org/apache/juli/VerbatimFormatter.java +++ b/java/org/apache/juli/VerbatimFormatter.java @@ -31,13 +31,8 @@ public class VerbatimFormatter extends Formatter { @Override public String format(LogRecord record) { -// Timestamp -StringBuilder sb = new StringBuilder(record.getMessage()); - -// New line for next record -sb.append(System.lineSeparator()); - -return sb.toString(); +// Timestamp + New line for next record +return record.getMessage() + System.lineSeparator(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java index 02929e9..915e4cd 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java @@ -420,7 +420,7 @@ class CPDSConnectionFactory builder.append(validatingSet); builder.append(", pcMap="); builder.append(pcMap); -builder.append("]"); +builder.append(']'); return builder.toString(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java index e50e34d..69d6eff 100644 --- a/j
[GitHub] [tomcat] martin-g commented on pull request #321: Simplify some #toString() methods
martin-g commented on pull request #321: URL: https://github.com/apache/tomcat/pull/321#issuecomment-657513641 @hazendaz Thanks for your comments! See https://www.guardsquare.com/en/blog/string-concatenation-java-9-untangling-invokedynamic - Java 8 already uses StringBuilder. Java 9+ makes it more flexible but still preserves the speed of concatenating strings. But as pointed by others those are not hot paths in Tomcat. So this change is mostly for better readability 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 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GitHub] [tomcat] martin-g merged pull request #321: Simplify some #toString() methods
martin-g merged pull request #321: URL: https://github.com/apache/tomcat/pull/321 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 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated: Simplify some #toString() methods
This is an automated email from the ASF dual-hosted git repository. mgrigorov pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new b81ed7b Simplify some #toString() methods b81ed7b is described below commit b81ed7b03d7fcb027b112fd04ddca9353ee80532 Author: Martin Tzvetanov Grigorov AuthorDate: Fri Jul 10 17:33:39 2020 +0300 Simplify some #toString() methods Do not use StringBuilder when String concatenation is just fine. Append char instead of String when possible. Fix the toString of ExampleFilter (cherry picked from commit 768524f02643c58f412c0ecea67bc41ebf4b7085) --- java/org/apache/catalina/connector/CoyotePrincipal.java | 5 + java/org/apache/catalina/core/StandardThreadExecutor.java| 4 +--- java/org/apache/catalina/tribes/UniqueId.java| 6 ++ java/org/apache/juli/VerbatimFormatter.java | 9 ++--- .../tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java | 2 +- .../tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java | 4 ++-- .../apache/tomcat/util/descriptor/web/ContextTransaction.java| 4 +--- java/org/apache/tomcat/util/digester/SetPropertiesRule.java | 4 +--- java/org/apache/tomcat/util/http/fileupload/FileUploadBase.java | 2 +- webapps/examples/WEB-INF/classes/async/Stockticker.java | 6 +++--- webapps/examples/WEB-INF/classes/filters/ExampleFilter.java | 5 + 11 files changed, 16 insertions(+), 35 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyotePrincipal.java b/java/org/apache/catalina/connector/CoyotePrincipal.java index 93d7c02..c20db11 100644 --- a/java/org/apache/catalina/connector/CoyotePrincipal.java +++ b/java/org/apache/catalina/connector/CoyotePrincipal.java @@ -62,10 +62,7 @@ public class CoyotePrincipal implements Principal, Serializable { */ @Override public String toString() { -StringBuilder sb = new StringBuilder("CoyotePrincipal["); -sb.append(this.name); -sb.append(']'); -return sb.toString(); +return "CoyotePrincipal[" + this.name + "]"; } diff --git a/java/org/apache/catalina/core/StandardThreadExecutor.java b/java/org/apache/catalina/core/StandardThreadExecutor.java index caed2d3..9ab3e7d 100644 --- a/java/org/apache/catalina/core/StandardThreadExecutor.java +++ b/java/org/apache/catalina/core/StandardThreadExecutor.java @@ -338,8 +338,6 @@ public class StandardThreadExecutor extends LifecycleMBeanBase @Override protected String getObjectNameKeyProperties() { -StringBuilder name = new StringBuilder("type=Executor,name="); -name.append(getName()); -return name.toString(); +return "type=Executor,name=" + getName(); } } diff --git a/java/org/apache/catalina/tribes/UniqueId.java b/java/org/apache/catalina/tribes/UniqueId.java index 40e5fba..cfb4387 100644 --- a/java/org/apache/catalina/tribes/UniqueId.java +++ b/java/org/apache/catalina/tribes/UniqueId.java @@ -70,9 +70,7 @@ public final class UniqueId implements Serializable{ @Override public String toString() { -StringBuilder buf = new StringBuilder("UniqueId"); -buf.append(Arrays.toString(id)); -return buf.toString(); +return "UniqueId" + Arrays.toString(id); } -} \ No newline at end of file +} diff --git a/java/org/apache/juli/VerbatimFormatter.java b/java/org/apache/juli/VerbatimFormatter.java index a7debe7..c08fce7 100644 --- a/java/org/apache/juli/VerbatimFormatter.java +++ b/java/org/apache/juli/VerbatimFormatter.java @@ -31,13 +31,8 @@ public class VerbatimFormatter extends Formatter { @Override public String format(LogRecord record) { -// Timestamp -StringBuilder sb = new StringBuilder(record.getMessage()); - -// New line for next record -sb.append(System.lineSeparator()); - -return sb.toString(); +// Timestamp + New line for next record +return record.getMessage() + System.lineSeparator(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java index 02929e9..915e4cd 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java @@ -420,7 +420,7 @@ class CPDSConnectionFactory builder.append(validatingSet); builder.append(", pcMap="); builder.append(pcMap); -builder.append("]"); +builder.append(']'); return builder.toString(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java index e50e34d..69d6eff 1
[tomcat] branch 8.5.x updated: Simplify some #toString() methods
This is an automated email from the ASF dual-hosted git repository. mgrigorov 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 200da3c Simplify some #toString() methods 200da3c is described below commit 200da3c0aa58c3d6a815315d30cb4b5a3bacbb19 Author: Martin Tzvetanov Grigorov AuthorDate: Fri Jul 10 17:33:39 2020 +0300 Simplify some #toString() methods Do not use StringBuilder when String concatenation is just fine. Append char instead of String when possible. Fix the toString of ExampleFilter (cherry picked from commit 768524f02643c58f412c0ecea67bc41ebf4b7085) --- java/org/apache/catalina/connector/CoyotePrincipal.java | 5 + java/org/apache/catalina/core/StandardThreadExecutor.java| 4 +--- java/org/apache/catalina/tribes/UniqueId.java| 6 ++ java/org/apache/juli/VerbatimFormatter.java | 9 ++--- .../tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java | 2 +- .../tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java | 4 ++-- .../apache/tomcat/util/descriptor/web/ContextTransaction.java| 4 +--- java/org/apache/tomcat/util/digester/SetPropertiesRule.java | 4 +--- java/org/apache/tomcat/util/http/fileupload/FileUploadBase.java | 2 +- webapps/examples/WEB-INF/classes/async/Stockticker.java | 6 +++--- webapps/examples/WEB-INF/classes/filters/ExampleFilter.java | 8 +++- 11 files changed, 18 insertions(+), 36 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyotePrincipal.java b/java/org/apache/catalina/connector/CoyotePrincipal.java index 93d7c02..c20db11 100644 --- a/java/org/apache/catalina/connector/CoyotePrincipal.java +++ b/java/org/apache/catalina/connector/CoyotePrincipal.java @@ -62,10 +62,7 @@ public class CoyotePrincipal implements Principal, Serializable { */ @Override public String toString() { -StringBuilder sb = new StringBuilder("CoyotePrincipal["); -sb.append(this.name); -sb.append(']'); -return sb.toString(); +return "CoyotePrincipal[" + this.name + "]"; } diff --git a/java/org/apache/catalina/core/StandardThreadExecutor.java b/java/org/apache/catalina/core/StandardThreadExecutor.java index 9abf8e8..4ff1d9d 100644 --- a/java/org/apache/catalina/core/StandardThreadExecutor.java +++ b/java/org/apache/catalina/core/StandardThreadExecutor.java @@ -328,8 +328,6 @@ public class StandardThreadExecutor extends LifecycleMBeanBase @Override protected String getObjectNameKeyProperties() { -StringBuilder name = new StringBuilder("type=Executor,name="); -name.append(getName()); -return name.toString(); +return "type=Executor,name=" + getName(); } } diff --git a/java/org/apache/catalina/tribes/UniqueId.java b/java/org/apache/catalina/tribes/UniqueId.java index 40e5fba..cfb4387 100644 --- a/java/org/apache/catalina/tribes/UniqueId.java +++ b/java/org/apache/catalina/tribes/UniqueId.java @@ -70,9 +70,7 @@ public final class UniqueId implements Serializable{ @Override public String toString() { -StringBuilder buf = new StringBuilder("UniqueId"); -buf.append(Arrays.toString(id)); -return buf.toString(); +return "UniqueId" + Arrays.toString(id); } -} \ No newline at end of file +} diff --git a/java/org/apache/juli/VerbatimFormatter.java b/java/org/apache/juli/VerbatimFormatter.java index a7debe7..c08fce7 100644 --- a/java/org/apache/juli/VerbatimFormatter.java +++ b/java/org/apache/juli/VerbatimFormatter.java @@ -31,13 +31,8 @@ public class VerbatimFormatter extends Formatter { @Override public String format(LogRecord record) { -// Timestamp -StringBuilder sb = new StringBuilder(record.getMessage()); - -// New line for next record -sb.append(System.lineSeparator()); - -return sb.toString(); +// Timestamp + New line for next record +return record.getMessage() + System.lineSeparator(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java index 02929e9..915e4cd 100644 --- a/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java +++ b/java/org/apache/tomcat/dbcp/dbcp2/datasources/CPDSConnectionFactory.java @@ -420,7 +420,7 @@ class CPDSConnectionFactory builder.append(validatingSet); builder.append(", pcMap="); builder.append(pcMap); -builder.append("]"); +builder.append(']'); return builder.toString(); } } diff --git a/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java b/java/org/apache/tomcat/dbcp/dbcp2/datasources/InstanceKeyDataSource.java index e50e34d..69d6ef
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #4 from Remy Maucherat --- It could be possible to remove the sendError(404) here: https://github.com/apache/tomcat/blob/master/java/org/apache/catalina/connector/CoyoteAdapter.java#L696 And move it to StandardHostValve (if request.getContext() == null) and StandardEngineValve (if request.getHost() == null). -- 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
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #5 from Mark Thomas --- I think that could be a better option that the one I was looking at. Undoing the effects of calling sendError() gets messy rather quickly. I'll experiment. -- 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
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 --- Comment #6 from Remy Maucherat --- (In reply to Mark Thomas from comment #5) > I think that could be a better option that the one I was looking at. Undoing > the effects of calling sendError() gets messy rather quickly. I'll > experiment. I agree reverting the error is a problem, since it could be set for another legitimate reason (although since there is also context == null this is less likely). -- 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
[tomcat] branch master updated: Fix BZ 64593. Delay 404 when Context is null.
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 519251c Fix BZ 64593. Delay 404 when Context is null. 519251c is described below commit 519251cbeb4488f47da36e91fe436556312af4a6 Author: Mark Thomas AuthorDate: Mon Jul 13 16:46:23 2020 +0100 Fix BZ 64593. Delay 404 when Context is null. This gives the rewrite valve an opportunity to rewrite the request. --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 java/org/apache/catalina/core/StandardEngineValve.java | 6 +- java/org/apache/catalina/core/StandardHostValve.java | 4 webapps/docs/changelog.xml | 5 + 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index ab113a7..6249e35 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -692,11 +692,11 @@ public class CoyoteAdapter implements Adapter { // because no ROOT context has been deployed or the URI was invalid // so no context could be mapped. if (request.getContext() == null) { -// Don't overwrite an existing error -if (!response.isError()) { -response.sendError(404); -} // Allow processing to continue. +// If present, the rewrite Valve may rewrite this to a valid +// request. +// The StandardEngineValve will handle the case of a missing +// Host and the StandardHostValve the case of a missing Context. // If present, the error reporting valve will provide a response // body. return true; diff --git a/java/org/apache/catalina/core/StandardEngineValve.java b/java/org/apache/catalina/core/StandardEngineValve.java index 4b5399c..c9e83b3 100644 --- a/java/org/apache/catalina/core/StandardEngineValve.java +++ b/java/org/apache/catalina/core/StandardEngineValve.java @@ -63,7 +63,11 @@ final class StandardEngineValve extends ValveBase { Host host = request.getHost(); if (host == null) { // HTTP 0.9 or HTTP 1.0 request without a host when no default host -// is defined. This is handled by the CoyoteAdapter. +// is defined. +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } if (request.isAsyncSupported()) { diff --git a/java/org/apache/catalina/core/StandardHostValve.java b/java/org/apache/catalina/core/StandardHostValve.java index 3be0026..c4b75c1 100644 --- a/java/org/apache/catalina/core/StandardHostValve.java +++ b/java/org/apache/catalina/core/StandardHostValve.java @@ -94,6 +94,10 @@ final class StandardHostValve extends ValveBase { // Select the Context to be used for this Request Context context = request.getContext(); if (context == null) { +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 0daeafd..42783b5 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -52,6 +52,11 @@ prevent a potential exception when running under a security manager. Patch provided by Johnathan Gilday. (markt) + +64593: If a request is not matched to a Context, delay +issuing the 404 response to give the rewrite valve, if configured, an +opportunity to rewrite the request. (remm/markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] branch 9.0.x updated: Fix BZ 64593. Delay 404 when Context is null.
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/9.0.x by this push: new f486275 Fix BZ 64593. Delay 404 when Context is null. f486275 is described below commit f48627583be79d3cd2260ba832e004834e413537 Author: Mark Thomas AuthorDate: Mon Jul 13 16:46:23 2020 +0100 Fix BZ 64593. Delay 404 when Context is null. This gives the rewrite valve an opportunity to rewrite the request. --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 java/org/apache/catalina/core/StandardEngineValve.java | 6 +- java/org/apache/catalina/core/StandardHostValve.java | 4 webapps/docs/changelog.xml | 5 + 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 8587bfd..ddbf14f 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -700,11 +700,11 @@ public class CoyoteAdapter implements Adapter { // because no ROOT context has been deployed or the URI was invalid // so no context could be mapped. if (request.getContext() == null) { -// Don't overwrite an existing error -if (!response.isError()) { -response.sendError(404); -} // Allow processing to continue. +// If present, the rewrite Valve may rewrite this to a valid +// request. +// The StandardEngineValve will handle the case of a missing +// Host and the StandardHostValve the case of a missing Context. // If present, the error reporting valve will provide a response // body. return true; diff --git a/java/org/apache/catalina/core/StandardEngineValve.java b/java/org/apache/catalina/core/StandardEngineValve.java index 96ef64e..688d522 100644 --- a/java/org/apache/catalina/core/StandardEngineValve.java +++ b/java/org/apache/catalina/core/StandardEngineValve.java @@ -63,7 +63,11 @@ final class StandardEngineValve extends ValveBase { Host host = request.getHost(); if (host == null) { // HTTP 0.9 or HTTP 1.0 request without a host when no default host -// is defined. This is handled by the CoyoteAdapter. +// is defined. +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } if (request.isAsyncSupported()) { diff --git a/java/org/apache/catalina/core/StandardHostValve.java b/java/org/apache/catalina/core/StandardHostValve.java index c713652..26e9f2a 100644 --- a/java/org/apache/catalina/core/StandardHostValve.java +++ b/java/org/apache/catalina/core/StandardHostValve.java @@ -110,6 +110,10 @@ final class StandardHostValve extends ValveBase { // Select the Context to be used for this Request Context context = request.getContext(); if (context == null) { +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index f124d55..e40b98e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -52,6 +52,11 @@ prevent a potential exception when running under a security manager. Patch provided by Johnathan Gilday. (markt) + +64593: If a request is not matched to a Context, delay +issuing the 404 response to give the rewrite valve, if configured, an +opportunity to rewrite the request. (remm/markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 01/02: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=53411
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 commit 74edb3133edb52af9b3490192aab27ec1c96194e Author: Mark Thomas AuthorDate: Thu Jun 28 12:13:34 2018 + Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=53411 Improve the handling of HTTP requests that do not explicitly specify a host name when no default host is configured. Also improve the tracking of changes to the default host as hosts are added and removed while Tomcat is running. --- java/org/apache/catalina/core/LocalStrings.properties | 1 - .../apache/catalina/core/LocalStrings_es.properties| 1 - .../apache/catalina/core/LocalStrings_fr.properties| 1 - .../apache/catalina/core/LocalStrings_ja.properties| 1 - java/org/apache/catalina/core/StandardEngine.java | 3 +++ java/org/apache/catalina/core/StandardEngineValve.java | 18 ++ java/org/apache/catalina/mapper/Mapper.java| 6 -- java/org/apache/catalina/mapper/MapperListener.java| 14 ++ webapps/docs/changelog.xml | 6 ++ 9 files changed, 25 insertions(+), 26 deletions(-) diff --git a/java/org/apache/catalina/core/LocalStrings.properties b/java/org/apache/catalina/core/LocalStrings.properties index 8343a22..787d4ba 100644 --- a/java/org/apache/catalina/core/LocalStrings.properties +++ b/java/org/apache/catalina/core/LocalStrings.properties @@ -217,7 +217,6 @@ standardContext.workPath=Exception obtaining work path for context [{0}] standardContextValve.acknowledgeException=Failed to acknowledge request with a 100 (Continue) response standardEngine.jvmRouteFail=Failed to set Engine's jvmRoute attribute from system property -standardEngine.noHost=No Host matches server name [{0}] standardEngine.notHost=Child of an Engine must be a Host standardEngine.notParent=Engine cannot have a parent Container diff --git a/java/org/apache/catalina/core/LocalStrings_es.properties b/java/org/apache/catalina/core/LocalStrings_es.properties index 66a20d0..3b439e7 100644 --- a/java/org/apache/catalina/core/LocalStrings_es.properties +++ b/java/org/apache/catalina/core/LocalStrings_es.properties @@ -146,7 +146,6 @@ standardContext.workPath=Excepción obteniendo ruta de trabajo para el contexto standardContextValve.acknowledgeException=No pude reconocer el requerimiento con una respuesta 100 (Continuar) standardEngine.jvmRouteFail=No pude poner el atributo jvmRoute del Motor para la propiedad del sistema -standardEngine.noHost=No hay Máquina que coincida con nombre de servidor [{0}] standardEngine.notHost=El Hijo de un Motor debe de ser un Máquina standardEngine.notParent=El Motor no puede tener un Contenedor padre diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties index ab87356..0dd5d95 100644 --- a/java/org/apache/catalina/core/LocalStrings_fr.properties +++ b/java/org/apache/catalina/core/LocalStrings_fr.properties @@ -216,7 +216,6 @@ standardContext.workPath=Impossible d''obtenir le chemin de travail pour le cont standardContextValve.acknowledgeException=Impossible de confirmer la requête avec une réponse 100 (continuer) standardEngine.jvmRouteFail=Impossible de fixer la jvmRoute de l'Engine à partir d'une propriété système -standardEngine.noHost=Aucune hôte (host) ne correspond au nom de serveur [{0}] standardEngine.notHost=Le fils d'un moteur (child of an Engine) doit être un hôte standardEngine.notParent=Un moteur (engine) ne peut avoir de conteneur parent (container) diff --git a/java/org/apache/catalina/core/LocalStrings_ja.properties b/java/org/apache/catalina/core/LocalStrings_ja.properties index 2630d7d..24b73df 100644 --- a/java/org/apache/catalina/core/LocalStrings_ja.properties +++ b/java/org/apache/catalina/core/LocalStrings_ja.properties @@ -216,7 +216,6 @@ standardContext.workPath=コンテキスト[{0}]のworkパスを取得中の例 standardContextValve.acknowledgeException=100 (Continue) レスポンスでリクエストを確認できませんでした。 standardEngine.jvmRouteFail=EngineのjvmRoute属性をシステムプロパティから設定できませんでした -standardEngine.noHost=サーバ名 [{0}] に一致するホストが存在しません standardEngine.notHost=Engineの子供はHostでなければいけません standardEngine.notParent=エンジンは親のコンテナを持つことはできません diff --git a/java/org/apache/catalina/core/StandardEngine.java b/java/org/apache/catalina/core/StandardEngine.java index 2522de6..4e7881c 100644 --- a/java/org/apache/catalina/core/StandardEngine.java +++ b/java/org/apache/catalina/core/StandardEngine.java @@ -149,6 +149,9 @@ public class StandardEngine extends ContainerBase implements Engine { } else { this.defaultHost = host.toLowerCase(Locale.ENGLISH); } +if (getState().isAvailable()) { +service.getMapper().setDefaultHostName(host); +} support.firePropertyChange("defaultHost", oldDefaultHost,
[tomcat] branch 8.5.x updated (200da3c -> a372184)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch 8.5.x in repository https://gitbox.apache.org/repos/asf/tomcat.git. from 200da3c Simplify some #toString() methods new 74edb31 Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=53411 new a372184 Fix BZ 64593. Delay 404 when Context is null. The 2 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. Summary of changes: .../apache/catalina/connector/CoyoteAdapter.java | 8 .../apache/catalina/core/LocalStrings.properties | 1 - .../catalina/core/LocalStrings_es.properties | 1 - .../catalina/core/LocalStrings_fr.properties | 1 - .../catalina/core/LocalStrings_ja.properties | 1 - java/org/apache/catalina/core/StandardEngine.java | 3 +++ .../apache/catalina/core/StandardEngineValve.java | 22 ++ .../apache/catalina/core/StandardHostValve.java| 4 java/org/apache/catalina/mapper/Mapper.java| 6 -- .../org/apache/catalina/mapper/MapperListener.java | 14 ++ webapps/docs/changelog.xml | 11 +++ 11 files changed, 42 insertions(+), 30 deletions(-) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[tomcat] 02/02: Fix BZ 64593. Delay 404 when Context is null.
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 commit a372184ecc3dca8abfef5b432effc90358d68f8c Author: Mark Thomas AuthorDate: Mon Jul 13 16:46:23 2020 +0100 Fix BZ 64593. Delay 404 when Context is null. This gives the rewrite valve an opportunity to rewrite the request. --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 java/org/apache/catalina/core/StandardEngineValve.java | 6 +- java/org/apache/catalina/core/StandardHostValve.java | 4 webapps/docs/changelog.xml | 5 + 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index 0f11f3d..cdc2151 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -697,11 +697,11 @@ public class CoyoteAdapter implements Adapter { // because no ROOT context has been deployed or the URI was invalid // so no context could be mapped. if (request.getContext() == null) { -// Don't overwrite an existing error -if (!response.isError()) { -response.sendError(404); -} // Allow processing to continue. +// If present, the rewrite Valve may rewrite this to a valid +// request. +// The StandardEngineValve will handle the case of a missing +// Host and the StandardHostValve the case of a missing Context. // If present, the error reporting valve will provide a response // body. return true; diff --git a/java/org/apache/catalina/core/StandardEngineValve.java b/java/org/apache/catalina/core/StandardEngineValve.java index 96ef64e..688d522 100644 --- a/java/org/apache/catalina/core/StandardEngineValve.java +++ b/java/org/apache/catalina/core/StandardEngineValve.java @@ -63,7 +63,11 @@ final class StandardEngineValve extends ValveBase { Host host = request.getHost(); if (host == null) { // HTTP 0.9 or HTTP 1.0 request without a host when no default host -// is defined. This is handled by the CoyoteAdapter. +// is defined. +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } if (request.isAsyncSupported()) { diff --git a/java/org/apache/catalina/core/StandardHostValve.java b/java/org/apache/catalina/core/StandardHostValve.java index c713652..26e9f2a 100644 --- a/java/org/apache/catalina/core/StandardHostValve.java +++ b/java/org/apache/catalina/core/StandardHostValve.java @@ -110,6 +110,10 @@ final class StandardHostValve extends ValveBase { // Select the Context to be used for this Request Context context = request.getContext(); if (context == null) { +// Don't overwrite an existing error +if (!response.isError()) { +response.sendError(404); +} return; } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index a585ea2..02544fa 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -58,6 +58,11 @@ prevent a potential exception when running under a security manager. Patch provided by Johnathan Gilday. (markt) + +64593: If a request is not matched to a Context, delay +issuing the 404 response to give the rewrite valve, if configured, an +opportunity to rewrite the request. (remm/markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 64593] Rewrites incorrectly 404 when there is no source context
https://bz.apache.org/bugzilla/show_bug.cgi?id=64593 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #7 from Mark Thomas --- I've fixed this using Rémy's suggested fix. I also back-ported the fix for bug 53411 to 8.5.x. Fixed in: - master for 10.0.0-M8 onwards - 9.0.x for 9.0.38 onwards - 8.5.x for 8.5.58 onwards 7.0.x is not affected. -- 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
Native Image - Reflectionless Concept
for discussion, all feedback and questions welcome: I've created a concept of having Apache Tomcat, embedded, run without reflection in a native image. This concept creates a jar, tomcat-embedded-programmatic.jar, that can be fine tuned to only include what is needed in a default configuration when an embedded tomcat instance is used and configured programatically. Steps to run Apache Tomcat using Java 8 without reflection 1. Make sure you have native-image (from the graal installation) on your path 2. git clone -b feature/embed-minimal-programmatic-jar-file-master g...@github.com:fhanik/tomcat.git 3. cd tomcat/res/graal/ 4. ./build-tomcat-native-image.sh && ./graal-measure.sh Should yield an output similar to (Graal 20.1): SUCCESS: the servlet is working RSS memory: 20.7M Image size: 20.5M or using an older graal, 19.2 SUCCESS: the servlet is working RSS memory: 18.0M Image size: 16.7M This also leaves a file named ${java.io.tmpdir}/XReflectionIntrospectionUtils.java so that you can review the solution to IntrospectionUtils.java Goals of this concept 1. Do not break anything 2. Create a new and optimized for size artifact, tomcat-embedded-programmatic 3. Remove reflection by introspecting classes that are currently passed into IntrospectionUtils.set/getProperty by generating setters/getters at build time How it's done 1. I've build out a small introspection tool in the package org.apache.tomcat.util.xreflect 2. During build time, it analyses a set of known classes that are used with IntrospectionUtils.java, and generates XReflectionIntrospectionUtils.java 3. When it packages tomcat-embed-programmatic.jar it uses the generated code when calling setProperty and getProperty A PR would look like this: https://github.com/apache/tomcat/compare/master...fhanik:feature/embed-minimal-programmatic-jar-file-master?expand=1
[GitHub] [tomcat] ChristopherSchultz commented on pull request #321: Simplify some #toString() methods
ChristopherSchultz commented on pull request #321: URL: https://github.com/apache/tomcat/pull/321#issuecomment-657831187 > @ChristopherSchultz [...] Others switched it to concatenation. I don't see a single case of concatenation where it wasn't already there (in some form or other). Be specific if you think there is a problem. 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 - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: Support for LetsEncrypt certs, and update process, in Tomcat without restart.
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Merlin, On 7/13/20 06:09, Merlin Beedell wrote: > Hi all, > > Thank you for your valuable assistance and suggestions so far. > > > > I did eventually try this (again, using ‘groovy’ as a > simple-to-use scriptable wrapper to Java), which looks like it > works: > > > > @Grab(group='com.github.groovy-wslite', module='groovy-wslite', > version='1.1.3') > > > > import wslite.rest.* > > import wslite.http.auth.* > > > > RESTClient client = new > RESTClient("http://localhost:8080/manager";) //or > https://localhost/manager > > client.authorization = new > HTTPBasicAuthorization("tomcat-users-name", > "and-corresponding-password") > > > > def path = > "/jmxproxy/?invoke=Catalina:type=ProtocolHandler,port=443&op=reloadSslHo stConfigs" > > def response > > response = client.get(path: path) > > println response.text > > > > And it returns (for example): “*OK - Operation > reloadSslHostConfigs without return value*” > > If the certificate file now no longer exists or is corrupted – we > get an error response. Thus we know this action provokes the > certificate file to be re-read. > > /However/ > > If the connector section in server.xml is edited to point to a new > certificate path/filename, it is ignored. The current certificate > config continues to be used. > > If the certificate file is replaced by a new certificate, the > end-user does not see any change – a fresh browser will still see > the old certificate. > > > > So: Is there some /other/ action that I need to invoke after the > reloadSslHostConfigs? Or to invoke it under a different “mbean > name”? > > When I change the bean name to include *address=127.0.0.1* as per > your curl example > (Catalina:type=ProtocolHandler,port=443,address=127.0.0.1) it > errors. > > For example – under the Catalina:type=Connector,port=443 – I see > operations “destroy / pause / resume / stop / start / init”. > > And under the ProtocolHandler I see “findSslHostConfigs / start / > destroy / pause / resume / getProperty / closeServerSocketGraceful > / findupgradeProtocols / init” > > Would these help? > > > > The connector config (simple self-signed cert in this case – not > yet changed to a letsencrypt one) looks similar to this: > > protocol="org.apache.coyote.http11.Http11Nio2Protocol" > sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementatio n"> > > className="org.apache.coyote.http2.Http2Protocol"> > > > ciphers="HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!kRSA" > honorCipherOrder="true" protocols="TLSv1.3,TLSv1.2"> > > certificateKeystoreFile="C:\opt\certificates\keystore" > certificateKeystorePassword="passphrase" > certificateKeystoreType="JKS"> > > > > > > > > And I am trying to reset it to a PKCS12 keystore: > > certificateKeystoreFile="C:\opt\certificates\web_cert.pfx" > certificateKeystorePassword="newpass" > certificateKeystoreType="PKCS12"> > > > > I’m at a loss to know what to do – other than to abandon SSL > termination in tomcat and use a proxy to do it instead – that I > really wish I could avoid. > > > > Some of my findings from trying to refresh the Tomcat SSL config > at runtime and trying to decipher the documentation and > suggestions: > > 1. The remote JMX feature does not need to be configured (e.g. > -Dcom.sun.management.jmxremote.port=9004) if you only need > localhost management. But the webapp “manager” does then need to > be installed – as this acts as the entry point for JMX requests. > It’s not entirely clear in the documentation about this, nor the > differences in the format or content of the returned information. > 2. Not being too familiar with /curl/, I could not determine how > to pass the manager username / password. 3. Nor is it very obvious > how interpret the jmx query response in order to form effective > gets and sets (e.g. the ‘bean name’ to use in a get or set). Nor > how to obtain operations and parameters. I see all that stuff if I > enable remote JMX and use the *JConsole*. But can the manager app > responses provide the same metadata to determine useful stuff? I > also see these messages in a popup window when using JConsole to > access the operations list: Error setting Operation panel > :org.apache.tomcat.util.net.SSLHostConfigCertificate > > Error setting Operation panel > :org.apache.tomcat.util.net.SSLHostConfig > > Error setting Operation panel :org.apache.coyote.Request > > 4. I have used the Tomcat “ant” wrapper for manager. I call the > ant tasks using ‘groovy’ (just to simplify the preparation of the > /manager/ web requests and responses). I can use the Query/Get/Set > calls, but I don’t seem to be able to construct an Invoke > operation call. After a lot of trial and error, I gave up using > this! 5. Re: Tomcat Wiki / Documentation and other cert providers… > It seems that letsencrypt is currently the only provider with an > automated update service. Would be great if they all could – then > this really could be fully automated (i.e. a tomc
Re: Native Image - Reflectionless Concept
-BEGIN PGP SIGNED MESSAGE- Hash: SHA256 Filip, On 7/13/20 17:59, Filip Hanik wrote: > for discussion, all feedback and questions welcome: > > > I've created a concept of having Apache Tomcat, embedded, run > without reflection in a native image. This concept creates a jar, > tomcat-embedded-programmatic.jar, that can be fine tuned to only > include what is needed in a default configuration when an embedded > tomcat instance is used and configured programatically. > > Steps to run Apache Tomcat using Java 8 without reflection > > 1. Make sure you have native-image (from the graal installation) > on your path 2. git clone -b > feature/embed-minimal-programmatic-jar-file-master > g...@github.com:fhanik/tomcat.git 3. cd tomcat/res/graal/ 4. > ./build-tomcat-native-image.sh && ./graal-measure.sh > > Should yield an output similar to (Graal 20.1): SUCCESS: the > servlet is working RSS memory: 20.7M Image size: 20.5M > > > or using an older graal, 19.2 SUCCESS: the servlet is working RSS > memory: 18.0M Image size: 16.7M > > > This also leaves a file named > ${java.io.tmpdir}/XReflectionIntrospectionUtils.java so that you > can review the solution to IntrospectionUtils.java > > Goals of this concept > > 1. Do not break anything 2. Create a new and optimized for size > artifact, tomcat-embedded-programmatic 3. Remove reflection by > introspecting classes that are currently passed into > IntrospectionUtils.set/getProperty by generating setters/getters at > build time > > How it's done > > 1. I've build out a small introspection tool in the package > org.apache.tomcat.util.xreflect 2. During build time, it analyses a > set of known classes that are used with IntrospectionUtils.java, > and generates XReflectionIntrospectionUtils.java 3. When it > packages tomcat-embed-programmatic.jar it uses the generated code > when calling setProperty and getProperty > > A PR would look like this: > https://github.com/apache/tomcat/compare/master...fhanik:feature/embed - -minimal-programmatic-jar-file-master?expand=1 Sounds > like a really interesting ApacheCon presentation ;) - -chris -BEGIN PGP SIGNATURE- Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/ iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAl8M5KkACgkQHPApP6U8 pFhhthAAiJjZwWzNNHwx3YQA1J/9sKn2KX50/QrcB+IOkjL8FBbM0bvRCRL1I0ZB 17nQEg5fb7Y+EHOtceYjmJTDrqdj6WIvF60JS5y0E4FUOt0wrqd1v7oTZnKGqgqs 84J8oPW71vpzR/2EL8tzCjn/Oa7rLU58yGtKObBxbgdZcCDa4j0iuklLy6dyktAb JmxTeHWKmvkezbUKoflydSLb9Dxq7dL2XK2JDGw6iQi4FBiAXleooVw/MpZ1fOAm jxPjOnf8NhjNoFJooYs/i7H8Oa0MF2BtdrC1qS7gJBJkAp7bOr0HIO2QZLshkSKe AsC5wp6QfzMWLQsTc25Z5SKGZYNrP6aWkcALYgETjJywDZGmrJ/UO16+zOayqYGq TvSbE+6+cVzlmj4xMf1UPJf/D9gdpqqWkC/YJpfyZgvqgXkBywbHrSUVyC0AbBKU REQ6WFNO2idUrZNbmbC0OaLt4BdikjjazhaCoOWQHij83TElQqXCYbH+JcOrc3JE +9w6Y7fdSwaR+1v2XUUk2McBQtJf9kP7G2iKBYgwrn1JTSrNSB2jvdi5f/HbtGUe txV6AFJQeFEH/grfHbGeLh21B4UyOa2CkAbAD+dikIJqWBMxvm4DMG1cnJW/x/Rs vVX3EbVDc6kEBgLQ1blfC7Yl2QdmUap7wP/X399bvH7bmtWJPPI= =7nG7 -END PGP SIGNATURE- - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org