You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Mohan Kumar <yo...@gmail.com> on 2016/11/16 22:01:42 UTC

Tomcat6 enabling SSL for JDBC during startup

I'm using Tomcat 6.0.29 version with Java 1.6.0_45 on Windows server 2008
and started noticing SSL related information in Catalina logs recently.
From the logs it looks like SSL is getting enabled for JDBC. Any help to
understand why the below information shows up in catalina logs would be
much appreciated? There is nothing that got changed in the JDBC datasource
configuration recently and the application uses SQL server 2008.

From catalina.log

Oct 31, 2016 10:18:26 AM com.microsoft.sqlserver.jdbc.TDSChannel enableSSL
INFO: java.security path: C:\Program Files\Java\jre6\lib\security
Security providers: [SUN version 1.6, SunRsaSign version 1.5, SunJSSE
version 1.6, SunJCE version 1.6, SunJGSS version 1.0, SunSASL version
1.5, XMLDSig version 1.0, SunPCSC version 1.6, SunMSCAPI version 1.6]
SSLContext provider info: Sun JSSE provider(PKCS12, SunX509 key/trust
factories, SSLv3, TLSv1)
SSLContext provider services:
[SunJSSE: KeyFactory.RSA -> sun.security.rsa.RSAKeyFactory
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
, SunJSSE: KeyPairGenerator.RSA -> sun.security.rsa.RSAKeyPairGenerator
  aliases: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1]
, SunJSSE: Signature.MD2withRSA -> sun.security.rsa.RSASignature$MD2withRSA
  aliases: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2]
, SunJSSE: Signature.MD5withRSA -> sun.security.rsa.RSASignature$MD5withRSA
  aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4]
, SunJSSE: Signature.SHA1withRSA -> sun.security.rsa.RSASignature$SHA1withRSA
  aliases: [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5,
1.3.14.3.2.29, OID.1.3.14.3.2.29]
, SunJSSE: Signature.MD5andSHA1withRSA ->
com.sun.net.ssl.internal.ssl.RSASignature
, SunJSSE: KeyManagerFactory.SunX509 ->
com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509
, SunJSSE: KeyManagerFactory.NewSunX509 ->
com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$X509
, SunJSSE: TrustManagerFactory.SunX509 ->
com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$SimpleFactory
, SunJSSE: TrustManagerFactory.PKIX ->
com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory
  aliases: [SunPKIX, X509, X.509]
, SunJSSE: SSLContext.SSL -> com.sun.net.ssl.internal.ssl.SSLContextImpl
, SunJSSE: SSLContext.SSLv3 -> com.sun.net.ssl.internal.ssl.SSLContextImpl
, SunJSSE: SSLContext.TLS -> com.sun.net.ssl.internal.ssl.SSLContextImpl
, SunJSSE: SSLContext.TLSv1 -> com.sun.net.ssl.internal.ssl.SSLContextImpl
, SunJSSE: SSLContext.Default ->
com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl
, SunJSSE: KeyStore.PKCS12 -> com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore
]
java.ext.dirs: C:\Program Files\Java\jre6\lib\ext;C:\Windows\Sun\Java\lib\ext

And sometimes, there are warnings in the catalina logs about DB connection
pool initialization and the application would not be able to connect to
databases until another Tomcat restart.

Oct 31, 2016 10:18:26 AM org.apache.naming.NamingContext lookup
WARNING: Unexpected exception resolving reference
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Error preloading the
connection pool
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1398)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getLogWriter(BasicDataSource.java:1098)
at org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:350)
at org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.getObjectInstance(BasicDataSourceFactory.java:156)
at org.moss.jdj.dbcp.EncryptedDataSourceFactory.getObjectInstance(EncryptedDataSourceFactory.java:25)
............
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The driver
could not establish a secure connection to SQL Server by using Secure
Sockets Layer (SSL) encryption. Error: "SQL Server returned an
incomplete response. The connection has been closed.".
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1352)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1533)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1042)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:817)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:700)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:842)
at org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(DriverConnectionFactory.java:38)
at org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(PoolableConnectionFactory.java:582)
at org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObject(GenericObjectPool.java:1617)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1395)
... 37 more
Caused by: java.io.IOException: SQL Server returned an incomplete
response. The connection has been closed.
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:607)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:664)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:656)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:851)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:839)
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(Unknown Source)
at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1483)
... 45 more


Cheers!
Mohan

*Mohankumar Muthusamy*

Re: Tomcat6 enabling SSL for JDBC during startup

Posted by Mohan Kumar <yo...@gmail.com>.
On Thu, Nov 17, 2016 at 7:13 AM, Christopher Schultz <
chris@christopherschultz.net> wrote:

> king for help in correcting the problems that have caused the
> messages in the first place?
>

Chris -

Both. I would like to know why they started appearing in the catalina logs
and how to correct the problems that caused these messages to appear.

Cheers!
Mohan

Re: Tomcat6 enabling SSL for JDBC during startup

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Mohan,

On 11/16/16 5:01 PM, Mohan Kumar wrote:
> I'm using Tomcat 6.0.29 version with Java 1.6.0_45 on Windows
> server 2008 and started noticing SSL related information in
> Catalina logs recently.
>> From the logs it looks like SSL is getting enabled for JDBC. Any
>> help to
> understand why the below information shows up in catalina logs
> would be much appreciated? There is nothing that got changed in the
> JDBC datasource configuration recently and the application uses SQL
> server 2008.
> 
>> From catalina.log
> 
> Oct 31, 2016 10:18:26 AM com.microsoft.sqlserver.jdbc.TDSChannel
> enableSSL INFO: java.security path: C:\Program
> Files\Java\jre6\lib\security Security providers: [SUN version 1.6,
> SunRsaSign version 1.5, SunJSSE version 1.6, SunJCE version 1.6,
> SunJGSS version 1.0, SunSASL version 1.5, XMLDSig version 1.0,
> SunPCSC version 1.6, SunMSCAPI version 1.6] SSLContext provider
> info: Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3,
> TLSv1) SSLContext provider services: [SunJSSE: KeyFactory.RSA ->
> sun.security.rsa.RSAKeyFactory aliases: [1.2.840.113549.1.1,
> OID.1.2.840.113549.1.1] , SunJSSE: KeyPairGenerator.RSA ->
> sun.security.rsa.RSAKeyPairGenerator aliases: [1.2.840.113549.1.1,
> OID.1.2.840.113549.1.1] , SunJSSE: Signature.MD2withRSA ->
> sun.security.rsa.RSASignature$MD2withRSA aliases:
> [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2] , SunJSSE:
> Signature.MD5withRSA -> sun.security.rsa.RSASignature$MD5withRSA 
> aliases: [1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4] ,
> SunJSSE: Signature.SHA1withRSA ->
> sun.security.rsa.RSASignature$SHA1withRSA aliases:
> [1.2.840.113549.1.1.5, OID.1.2.840.113549.1.1.5, 1.3.14.3.2.29,
> OID.1.3.14.3.2.29] , SunJSSE: Signature.MD5andSHA1withRSA -> 
> com.sun.net.ssl.internal.ssl.RSASignature , SunJSSE:
> KeyManagerFactory.SunX509 -> 
> com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$SunX509 ,
> SunJSSE: KeyManagerFactory.NewSunX509 -> 
> com.sun.net.ssl.internal.ssl.KeyManagerFactoryImpl$X509 , SunJSSE:
> TrustManagerFactory.SunX509 -> 
> com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$SimpleFactory 
> , SunJSSE: TrustManagerFactory.PKIX -> 
> com.sun.net.ssl.internal.ssl.TrustManagerFactoryImpl$PKIXFactory 
> aliases: [SunPKIX, X509, X.509] , SunJSSE: SSLContext.SSL ->
> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE:
> SSLContext.SSLv3 -> com.sun.net.ssl.internal.ssl.SSLContextImpl ,
> SunJSSE: SSLContext.TLS ->
> com.sun.net.ssl.internal.ssl.SSLContextImpl , SunJSSE:
> SSLContext.TLSv1 -> com.sun.net.ssl.internal.ssl.SSLContextImpl ,
> SunJSSE: SSLContext.Default -> 
> com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl , SunJSSE:
> KeyStore.PKCS12 -> com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore 
> ] java.ext.dirs: C:\Program
> Files\Java\jre6\lib\ext;C:\Windows\Sun\Java\lib\ext
> 
> And sometimes, there are warnings in the catalina logs about DB
> connection pool initialization and the application would not be
> able to connect to databases until another Tomcat restart.
> 
> Oct 31, 2016 10:18:26 AM org.apache.naming.NamingContext lookup 
> WARNING: Unexpected exception resolving reference 
> org.apache.tomcat.dbcp.dbcp.SQLNestedException: Error preloading
> the connection pool at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicData
Source.java:1398)
>
> 
at
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getLogWriter(BasicDataSource
.java:1098)
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.createDataSource(Ba
sicDataSourceFactory.java:350)
>
> 
at
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.getObjectInstance(Bas
icDataSourceFactory.java:156)
> at
> org.moss.jdj.dbcp.EncryptedDataSourceFactory.getObjectInstance(Encrypt
edDataSourceFactory.java:25)
>
> 
............
> at java.lang.reflect.Method.invoke(Unknown Source) at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The
> driver could not establish a secure connection to SQL Server by
> using Secure Sockets Layer (SSL) encryption. Error: "SQL Server
> returned an incomplete response. The connection has been closed.". 
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerCo
nnection.java:1352)
>
> 
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1533)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServ
erConnection.java:1042)
>
> 
at
com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnecti
on.java:817)
> at
> com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConn
ection.java:700)
>
> 
at
com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.jav
a:842)
> at
> org.apache.tomcat.dbcp.dbcp.DriverConnectionFactory.createConnection(D
riverConnectionFactory.java:38)
>
> 
at
org.apache.tomcat.dbcp.dbcp.PoolableConnectionFactory.makeObject(Poolabl
eConnectionFactory.java:582)
> at
> org.apache.tomcat.dbcp.pool.impl.GenericObjectPool.addObject(GenericOb
jectPool.java:1617)
>
> 
at
org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSo
urce.java:1395)
> ... 37 more Caused by: java.io.IOException: SQL Server returned an
> incomplete response. The connection has been closed. at
> com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensure
SSLPayload(IOBuffer.java:607)
>
> 
at
com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInte
rnal(IOBuffer.java:664)
> at
> com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(I
OBuffer.java:656)
>
> 
at
com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IO
Buffer.java:851)
> at
> com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer
.java:839)
>
> 
at com.sun.net.ssl.internal.ssl.InputRecord.readFully(Unknown Source)
> at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source) at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown
> Source) at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unk
nown
>
> 
Source)
> at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown
> Source) at
> com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown
> Source) at
> com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1483)
>
> 
... 45 more

Are you asking why you are getting those messages in the log file, or
asking for help in correcting the problems that have caused the
messages in the first place?

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJYLckvAAoJEBzwKT+lPKRYxYMQAJv3MFRevPw7lXGRxuaeq6wS
3RAH3O2EUsAAxLHGyo63nIZqedCNJCebRO5yjZ5ctQNexJ1dw3LyfRwEANR5OsUM
aWX/8phskjyGlWDGSyfO+aDaiwqon+fMRYrZriDtWKqoq0GUZTC3SiX3nJKf7a/T
ywQ3prp/7/hE5kciTly2lz6UfpHWn1a8u1OdQ6NVdH8t/HfXEsWkc7uio+igLkcb
8S5qxtj1y5BU5T6rnvyIVIk1WgOzGcUvd3dJWEfd6VT3Af78TCgkkXwEZzZXZryD
HA0TVdMLalMyHR0LbN5WTq+kEYUT6etMrqu70mUyh59rc591kXWuL77q+0C2duLM
5fXyyn1E+iaWyS9eOcKeG7wFqcdIahPlBNkCbL1jMwLq7ZLUjH5Xn0MQ24eVabKx
whsC6N134SG+rKTep3Nb1wrRJzP+tFRNIdnKwsOHPk9PQzLRYPGFx3MLW9Bs4JQP
K3PKMSoEQtbUPCZegxAoViR+2hX4n/9boUqP0XPu+QXpaoIB/XglUpwqwgFeSvr5
Eb7rKj+zhiZHvAdYimMrCxdhg5hU6akCPO/w0zHv4IRKXlWyiu6eCIDpsl9ktSI5
a0yWVotXH5KY1o6b533QXQoEuCd/dLB6oXYdzUuhB4XKZFOrDXxxHnyGWFM6YrAK
nF3uQQXpqxSAM9WgOS2r
=+yMU
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: Tomcat6 enabling SSL for JDBC during startup

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Kumar,

On 11/16/16 5:01 PM, Mohan Kumar wrote:
> I'm using Tomcat 6.0.29 version with Java 1.6.0_45 on Windows
> server 2008 and started noticing SSL related information in
> Catalina logs recently.

Upgrade upgrade upgrade! All 3 of those components are hideously old.

>> From the logs it looks like SSL is getting enabled for JDBC. Any
>> help to
> understand why the below information shows up in catalina logs
> would be much appreciated? There is nothing that got changed in the
> JDBC datasource configuration recently and the application uses SQL
> server 2008.
> 
>> From catalina.log
> 
> Oct 31, 2016 10:18:26 AM com.microsoft.sqlserver.jdbc.TDSChannel
> enableSSL INFO: java.security path: C:\Program
> Files\Java\jre6\lib\security Security providers: [SUN version 1.6,
> SunRsaSign version 1.5, SunJSSE version 1.6, SunJCE version 1.6,
> SunJGSS version 1.0, SunSASL version 1.5, XMLDSig version 1.0,
> SunPCSC version 1.6, SunMSCAPI version 1.6] SSLContext provider
> info: Sun JSSE provider(PKCS12, SunX509 key/trust factories, SSLv3,
> TLSv1)

It looks like the MS JDBC driver is logging some stuff at the INFO log
level. I wouldn't have put that at the INFO level, but ... whatever.

> Oct 31, 2016 10:18:26 AM org.apache.naming.NamingContext lookup 
> WARNING: Unexpected exception resolving reference 
> org.apache.tomcat.dbcp.dbcp.SQLNestedException: Error preloading
> the connection pool at
> org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicData
Source.java:1398)
>
> 
at
org.apache.tomcat.dbcp.dbcp.BasicDataSource.getLogWriter(BasicDataSource
.java:1098)
> at
> org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.createDataSource(Ba
sicDataSourceFactory.java:350)
>
> 
at
org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory.getObjectInstance(Bas
icDataSourceFactory.java:156)
> at
> org.moss.jdj.dbcp.EncryptedDataSourceFactory.getObjectInstance(Encrypt
edDataSourceFactory.java:25)
>
> 
............
> at java.lang.reflect.Method.invoke(Unknown Source) at
> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at
> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
> Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: The
> driver could not establish a secure connection to SQL Server by
> using Secure Sockets Layer (SSL) encryption. Error: "SQL Server
> returned an incomplete response. The connection has been closed.".

Looks like your JDBC driver can't make a secure connection to the SQL
Server instance.

Are you expecting to use TLS to connect to your db?

Have you checked to see if your client's or server's certificates have
expired or have some other problem? Perhaps you are being MITMd.

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJYL1vuAAoJEBzwKT+lPKRYnVUP/iZQzcSMvP8U0VuEg2EIocd2
YWi1AkfefbQo05QEdJLbP5Rn3Al5LWo2UUzR/HfsHMrxSNdScoqQjxJqSOxdiyy7
0ykHPjWX9ub0awkev0A/Fx3Cz/t21rzpopD55lAorEryju6Vc/S2Ce8aul9+iZgN
0Ti2tnrcfdpsZRrRTfPpx0uUuD2Fb/ZcclnzqAMF0YaDZsy32uOUVRSy9OF6MSYs
dZW9eJYeC7Fj43YjUsbCzaITEuCE0hqTuE610F+bQ2vUETeuwkedVkw5AFcamwvk
QN39/arSV94Cd+r8CQ+Z1tE8fac1pW3Jo3P95sHau04YEXyG9nb1WW+bWSksWL8S
6493phRwrd8+nb1uDo0s4my0+yjJdstrsRI2QjwDHgHsMm85NJ88AKdIcX4mEkS8
HvAKYK8FI0JekuArhIXmFybJh6bbhJqQUCl4FsC5Y/ki32j+EI3Fha+xXOR8OmA+
9WL6TP+IZcFpZJ2B8rm+47nn2VjjAa1vEXl6qwOY3UqsIduSWHNf/8VE25K+QEm2
7cyELCQlmDoZSsvXC36JrPeoWlD2dItZQmmvSYKX9aqooOGXK9ZnZ0ZbTWfXGdub
p4bqye+jX8A6RSNu5LsEimewkOJljd3Pj2T8tZKUZFV6mR6/Vz4mvH+fK90rcuwB
0VyFEZQkMbD6Onnhozlo
=nC98
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org