Return-Path: X-Original-To: apmail-tomcat-users-archive@www.apache.org Delivered-To: apmail-tomcat-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DD8D217C9B for ; Thu, 5 Nov 2015 11:51:39 +0000 (UTC) Received: (qmail 21236 invoked by uid 500); 5 Nov 2015 11:51:36 -0000 Delivered-To: apmail-tomcat-users-archive@tomcat.apache.org Received: (qmail 21172 invoked by uid 500); 5 Nov 2015 11:51:36 -0000 Mailing-List: contact users-help@tomcat.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "Tomcat Users List" Delivered-To: mailing list users@tomcat.apache.org Received: (qmail 21161 invoked by uid 99); 5 Nov 2015 11:51:36 -0000 Received: from Unknown (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 05 Nov 2015 11:51:36 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id D00DB1A22D7 for ; Thu, 5 Nov 2015 11:51:35 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 2.9 X-Spam-Level: ** X-Spam-Status: No, score=2.9 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id uleSjscft-Fo for ; Thu, 5 Nov 2015 11:51:25 +0000 (UTC) Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with ESMTPS id D3D8E20ED5 for ; Thu, 5 Nov 2015 11:51:24 +0000 (UTC) Received: by wicll6 with SMTP id ll6so8337123wic.0 for ; Thu, 05 Nov 2015 03:51:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=6onWTymjxP2oDAgyIU54CLU6of25x2949iwL5RI0BiM=; b=JvYE/denLg7Ubrid0qipn1DH5TNmsHEpGYABjCFuyhOrqSLav4udS+xNjZ7qe/qDIj ji0arpE4su29O8CcoqVpIljo2gOcGcvVnmC6dStlwjw4rLBBpTL+JkgKut1O0SDrOrLn xdAF9ZYK1S5BBv7MIG/P8I2TyUEO3UFoyM+Brh0td2+82WmgCXIqjbXjHZMO9aLVzevW TYYORW81UxwEUvOO/w3t1yosoDQGXEtg7ABrDI08UIYL2H7esksGR/+j4o5QSxFcH6jK kdcG5pb1sqMf5egy8rYj5Hm8vjpt0bvIIxWI7vq63Y6Fs2G74bUGRDDof6jtCH9lZHd6 UI3Q== MIME-Version: 1.0 X-Received: by 10.194.84.4 with SMTP id u4mr8017072wjy.149.1446724284415; Thu, 05 Nov 2015 03:51:24 -0800 (PST) Received: by 10.28.184.12 with HTTP; Thu, 5 Nov 2015 03:51:24 -0800 (PST) Date: Thu, 5 Nov 2015 13:51:24 +0200 Message-ID: Subject: Tomcat's JNDI lookups fail if java.naming.factory.object property is specified From: Dimitar Valov To: users@tomcat.apache.org Content-Type: multipart/mixed; boundary=047d7bb04d360fe9020523c9bfee --047d7bb04d360fe9020523c9bfee Content-Type: multipart/alternative; boundary=047d7bb04d360fe8fd0523c9bfec --047d7bb04d360fe8fd0523c9bfec Content-Type: text/plain; charset=UTF-8 Hello, Exceptions such as this are found in the logs when java.naming.factory.object is present 04-Nov-2015 15:40:51.560 SEVERE [main] org.apache.catalina.realm.UserDatabaseRealm.startInternal Exception looking up UserDatabase under key UserDatabase java.lang.ClassCastException: Cannot cast class org.apache.naming.ResourceRef to interface org.apache.catalina.UserDatabase at org.apache.catalina.realm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:232) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:249) at org.apache.catalina.realm.LockOutRealm.startInternal(LockOutRealm.java:120) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:905) at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.startup.Catalina.start(Catalina.java:625) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485) It is also not possible to add additional ObjectFactories with java.naming.factory.object property. Steps to reproduce: setenv.bat: set JAVA_OPTS=%JAVA_OPTS% -Djava.naming.factory.object=org.apache.naming.factory.ResourceFactory:custom.CustomObjectFactory setenv.sh: export JAVA_OPTS=$JAVA_OPTS -Djava.naming.factory.object=org.apache.naming.factory.ResourceFactory:custom.CustomObjectFactory Details: 1. org.apache.naming.ResourceRef.getFactoryClassName() returns null: https://github.com/apache/tomcat/blob/trunk/java/org/apache/naming/ResourceRef.java#L134 2. Consequently http://docs.oracle.com/javase/8/docs/api/javax/naming/spi/NamingManager.html#getObjectInstance-java.lang.Object-javax.naming.Name-javax.naming.Context-java.util.Hashtable- falls to option 3, however the environment does not contain any values and returns the refInfo (An object created using refInfo; or refInfo if an object cannot be created using the algorithm described above.). Possible Reasons: 1. org.apache.catalina.core.NamingContextListener.lifecycleEvent() uses an empty Hashtable for specifying the environment of the NamingContext: https://github.com/apache/tomcat/blob/trunk/java/org/apache/catalina/core/NamingContextListener.java#L235 This is the place where the environment is initially created before lookups are made. Possible Solutions: 1. Add the object factories as specified in the environment to the initial context environment: contextEnv.put(javax.naming.Context.OBJECT_FACTORIES, System.getProperty(javax.naming.Context.OBJECT_FACTORIES)); in https://github.com/apache/tomcat/blob/trunk/java/org/apache/catalina/core/NamingContextListener.java#L235 Attachments: The projects.zip contains two maven projects: a web application that uses custom resource type and extension to Tomcat that adds a custom ObjectFactory. Also regarding https://tomcat.apache.org/tomcat-8.0-doc/jndi-resources-howto.html#Adding_Custom_Resource_Factories, there is step "2. Declare Your Resource Requirements" which states to add a resource-env-ref inside web.xml. I've noticed when the resource is specified in the Context for this web application this step is not requried, i.e. lookups are successful. Is this expected? Best Regards, Dimitar --047d7bb04d360fe8fd0523c9bfec Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hello,

Except= ions such as this are found in the logs when java.naming.factory.object is = present
04-Nov-2015 15:40:51.560 SEVERE [main] org.apache.catalin= a.realm.UserDatabaseRealm.startInternal Exception looking up UserDatabase u= nder key UserDatabase
=C2=A0java.lang.ClassCastException: Cannot = cast class org.apache.naming.ResourceRef to interface org.apache.catalina.U= serDatabase
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.re= alm.UserDatabaseRealm.startInternal(UserDatabaseRealm.java:232)
= =C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.util.LifecycleBase.start= (LifecycleBase.java:150)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apach= e.catalina.realm.CombinedRealm.startInternal(CombinedRealm.java:249)
<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.realm.LockOutRealm.s= tartInternal(LockOutRealm.java:120)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 a= t org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.core.ContainerBase= .startInternal(ContainerBase.java:905)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine= .java:262)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.uti= l.LifecycleBase.start(LifecycleBase.java:150)
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 at org.apache.catalina.core.StandardService.startInternal(Standa= rdService.java:439)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.cat= alina.util.LifecycleBase.start(LifecycleBase.java:150)
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 at org.apache.catalina.core.StandardServer.startInternal(= StandardServer.java:769)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apach= e.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.startup.Catalina.start(Cata= lina.java:625)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at sun.reflect.NativeM= ethodAccessorImpl.invoke0(Native Method)
=C2=A0 =C2=A0 =C2=A0 =C2= =A0 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl= .java:62)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at sun.reflect.DelegatingMe= thodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
=C2= =A0 =C2=A0 =C2=A0 =C2=A0 at java.lang.reflect.Method.invoke(Method.java:497= )
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at org.apache.catalina.startup.Boot= strap.start(Bootstrap.java:351)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 at or= g.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
It is also not possibl= e to add additional ObjectFactories with java.naming.factory.object propert= y.

Steps to reproduce:

se= tenv.bat:
set JAVA_OPTS=3D%JAVA_OPTS% -Djava.naming.factory.objec= t=3Dorg.apache.naming.factory.ResourceFactory:custom.CustomObjectFactory

setenv.sh:
export JAVA_OPTS=3D$JAVA_OPTS -= Djava.naming.factory.object=3Dorg.apache.naming.factory.ResourceFactory:cus= tom.CustomObjectFactory

Details:

1. org.apache.naming.ResourceRef.getFactoryClassName() returns null= :=C2=A0https://github.com/apach= e/tomcat/blob/trunk/java/org/apache/naming/ResourceRef.java#L134
<= div>
2. Consequently=C2=A0http://docs.oracle.com/javase/8/docs/api/javax/naming/spi/= NamingManager.html#getObjectInstance-java.lang.Object-javax.naming.Name-jav= ax.naming.Context-java.util.Hashtable-=C2=A0falls to option 3, however = the environment does not contain any values and returns the refInfo (An obj= ect created using refInfo; or refInfo if an object cannot be created using = the algorithm described above.).

Possible Reasons:=

1. org.apache.catalina.core.NamingContextListener= .lifecycleEvent() uses an empty Hashtable for specifying the environment of= the NamingContext:=C2=A0https://github.com/apache/tomcat/blob/trunk/java/org/apache/cat= alina/core/NamingContextListener.java#L235
=C2=A0 =C2=A0This = is the place where the environment is initially created before lookups are = made.

Possible Solutions:

1. Add the object factories as specified in the environment to the initial= context environment:

=C2=A0 =C2=A0contextEnv.put(= javax.naming.Context.OBJECT_FACTORIES, System.getProperty(javax.naming.Cont= ext.OBJECT_FACTORIES));=C2=A0
=C2=A0 =C2=A0

Attachments:

The projects.zip c= ontains two maven projects: a web application that uses custom resource typ= e and extension to Tomcat that adds a custom ObjectFactory.

Also regarding=C2=A0= https://tomcat.apach= e.org/tomcat-8.0-doc/jndi-resources-howto.html#Adding_Custom_Resource_Facto= ries, there is step "2. Declare Your Resource Requirements" w= hich states to add a resource-env-ref inside web.xml. I've noticed when= the resource is specified in the Context for this web application this ste= p is not requried, i.e. lookups are successful. Is this expected?

Best = Regards,
Dimitar
--047d7bb04d360fe8fd0523c9bfec-- --047d7bb04d360fe9020523c9bfee Content-Type: application/zip; name="projects.zip" Content-Disposition: attachment; filename="projects.zip" Content-Transfer-Encoding: base64 X-Attachment-Id: f_igm69n820 UEsDBBQAAAgIAPl6ZEepkO5mJgEAAGUCAAAZAAAAdG9tY2F0LWV4dGVuc2lvbnMvcG9tLnhtbI2S S0vEMBSF1xX8D0Nx26Yz40JKLLhTmBdUxG1M78xE2qQ06UPE/+5NOjNtRcFFF+eec+/5AqVlpd6B m1lX5FLf+0djypiQgjUgQ1YyfoRQVQey267JbRiFkd8n406LS7pt27Bdutwiiubkdb1KcbFggZDa MMnBv77ycCPWbrxSnBmh5D/qZn8lOp31w8DlQtR+gi20UBnkL1BpLEicR8lkZkOHStXlU5bwWhtV UHLW1mOVEXvGDUr0kDSAzoC0u5qSkWvDzemoRZgH6eZhlz5unylpLmU2lUEJMgPJBWi7Npp8OD0Q 4dvOz+zbJ3Deb3j4sVxI9hPOG/DuEG+xHGOhSaYQI91j2tlbLfL+GN1jRb5hBSQ3n0PRFyWD4a6c Vyg5/VvJN1BLAwQUAAAICAAUe2RHrN2+e2YBAAD1AgAAPwAAAHRvbWNhdC1leHRlbnNpb25zL3Ny Yy9tYWluL2phdmEvY3VzdG9tL0N1c3RvbU9iamVjdEZhY3RvcnkuamF2YXWSz07DMAzGz520d7B6 6rQqLzBghwrELiABN8Qhzdwto01K4m6d0N6dJO26P2IXN6k/f7Z/Ss3FN18hiMaSrmbj0Xgkq1ob gg3fctaQLNkzt2vieYnX6ZYpXkm1YplWhC3N/s++8Apvp9znsRVYk9TqhuoNCzSoxC0XW0v2mm9Q 0BMXpM0+DFo3eSkFiJJbC1nY70IEzqrEChVZuEz8+vKor+9SsELqTgtlibtZkj6h800KfkVw02AK PYtwy6hNYcB3N09h/gCottJo5RtPXJsoorXROwsDBd8/imQBifMG2ffTBQwcJp0kKqTi5ek3mOF0 D8mZ2vnMzgreyThsJ/XHvvYVw525ZTOPza+VTALNqJuoR8QCVa/rJAx/Gl7a5MJychwzMkiNUaBw B73BwrEPzi578DGEQCLIrh5GEve0jzRgJ2kdGMNnDNPuNIX4C4RuyiUoTZC7Z22QEy5ZHFod/CIu /AFQSwMEFAAACAgAFHtkRymQVvX8AAAABgIAAEEAAAB0b21jYXQtZXh0ZW5zaW9ucy9zcmMvbWFp bi9qYXZhL2N1c3RvbS9DdXN0b21SZXNvdXJjZUZhY3RvcnkuamF2YXWQzU7DMAzHz63Ud/CxveQF ekEacGQSb+ClbpfRJpmTbEVo707Sj7ENkKLYsn+2/7ZF+YEdgQzOm6Eu8iJXgzXs4YAnHIXGQelO vE3mZZRkvTK6/pt6p5aYtKR/8s4qsd0dSPpXlN7w5+08w51Ai3JPK97OUGzrTGBJt0U27HolQfbo HGwm8Q8Y0OhJNw4e419FnsX3tD0Rs2oo+paNj6qogTt50JF/phZDv0bK64rAq1eB37M5O3g40jQo Uy2US7GY1IrYNJJUVoKOAXtXXjul1CYxc76q5hYZkw+sQdN5WfVOZVnVibqkbyFdsMTit/ofzank kg5Z5NF8A1BLAwQUAAAICAAUe2RHEndufUoAAABOAAAAMwAAAHRvbWNhdC1leHRlbnNpb25zL3Ny Yy9tYWluL2phdmEvY3VzdG9tL0ZhY3RvcnkuamF2YStITM5OTE9VSC4tLsnPtebl4uUqKE3KyUxW yMwrSS1KS0xOVXBLTC7JL6pUqObl4oRKBpcUZealKxQnVnqk5uTka2gCddbycgEAUEsDBBQAAAgI ABR7ZEfoMD/6ZwAAAH0AAAA3AAAAdG9tY2F0LWV4dGVuc2lvbnMvc3JjL21haW4vamF2YS9jdXN0 b20vRmFjdG9yeUltcGwuamF2YStITM5OTE9VSC4tLsnPtebl4uUqKE3KyUxWSM5JLC5WcEtMLskv qvTMLchRyAQSqbmpeSVwYYVqkAZOqI7gkqLMvHSF4sRKj9ScnHwNTZA0J2dRaklpUZ6CUgZIUAlo BWctSBeQAABQSwMEFAAACAgAY39kRwAAAAACAAAAAAAAACUAAAB0b21jYXQtZXh0ZW5zaW9ucy9z cmMvbWFpbi9yZXNvdXJjZXMvAwBQSwMEFAAACAgAY39kRwAAAAACAAAAAAAAACAAAAB0b21jYXQt ZXh0ZW5zaW9ucy9zcmMvdGVzdC9qYXZhLwMAUEsDBBQAAAgIAGN/ZEcAAAAAAgAAAAAAAAAlAAAA dG9tY2F0LWV4dGVuc2lvbnMvc3JjL3Rlc3QvcmVzb3VyY2VzLwMAUEsDBBQAAAgIAAh7ZEdeqpBH xQEAAPAEAAAOAAAAd2ViYXBwL3BvbS54bWy1k01v1DAQhs9bqf+hWnFNnG1BQisTiRtI/ZIWIa5T ZzZ1SWzLdj4Q4r8zjhOyKWVpD73lnXnteTKe4cbqBxT+rK8r5T6s7703W8ZqaFGlYEDcY6ptyW5v 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 vQafT3L1itZ5Py+zW7iB60dvHdqvzhBM9j8y1jxHjxj07By0OyuwOsQPmvSBjz9xiH1TV5l58Ll+ 1w+23Udwpms/bA9Jo5o2lxtCQZhBZWQG/5QF2ljz6eD0YY6g9+SbQoM9h62RFlYS2jhhvgpNSsdd Bczx3RSVMnGS1HV812365QdQSwMEFAAACAgAF3tkR5cmfxsWAQAAQwIAAC0AAAB3ZWJhcHAvc3Jj L21haW4vamF2YS9jdXN0b20vSGVsbG9TZXJ2bGV0LmphdmGVkcFKAzEQhs+7sO8w7qkrJeJZhB4U WxAqivacZsc2mmbSzOxaEN/d7FpoaeuhEBLIfJn8XxK0+dQLBNOw0OqmyIvcrgJFgQ/damVJTab3 G4NBLPnD8kYxxtahqJe/dZ88yWnvSXRHqBnOt6f+g5ciQY3TdCb3jOsG+QycA3nG3m60izVoonvS Ihg9wy2UV5dlVeShmTtrwDjNDGN0jrY44EbQ12lz1xq+u55ZiLbVgsCduoF367UDR34BKZPV7g0j pyd5ndyle64f+yDZaNpijLbGvgEJGsEaWrI11PSQ4h0bQ8T1EE6opQKHCmQZ6Yvh8LOGsPfHXeQs 63i1QJlFm/wHlUoKXpwflL3yRVmlkNlPkafxC1BLAwQUAAAICABjf2RHAAAAAAIAAAAAAAAAGgAA AHdlYmFwcC9zcmMvbWFpbi9yZXNvdXJjZXMvAwBQSwMEFAAACAgAY3tkR0zS3zKTAAAAwgAAACsA AAB3ZWJhcHAvc3JjL21haW4vd2ViYXBwL01FVEEtSU5GL2NvbnRleHQueG1sPY67DsIwDEXnIvEP JkumtLAxJHSoxIrEH4TgQlEeKHFQ+/ekqGWypXuufWQ7OgsfjGkIXvFDveeA3oT74B+KZ+rFkben 7UZ2wROOVNZK7oSAK6aQo0Hw2qFivTYU4sRAZ3oqNtN68BgZ0PQuucmJgqvPC1auVEvln3W/cbm9 0NDKQSoeFqm4lRc2IYNGiNmnWYW+UEsDBBQAAAgIANp7ZEcj6HToJwEAALYCAAAmAAAAd2ViYXBw L3NyYy9tYWluL3dlYmFwcC9XRUItSU5GL3dlYi54bWyFUU1vwiAYPmvif2C9A3VeFoP1sMSTO21L djOMviqbBQLU6r8f4Kzt0sUbPB/v+zzAlqfqgI5gndRqkU1JniFQQpdS7RbZ+9sKP2XLYjJmDXxi bgwKcuXmJycX2d57M6e0aRrSzIi2O/qY51P68bJ+FXuoOJbKea4EZJPxKPlazxc/cuJqRYSuaKCo cgmDi9bJuUsj1lpwn5LdNaK7CvrbYTPb5OTkyriqbT4LzUPPESulMwd+xopXUAQHCg5Ge2iUPWCM LDhdWwHYwjaCIxaQeLnI4mHLhdf2zGiPabX+bKAQtfO6IquuNBFJdtD6uzYXXzutC8Y0tBsF44S1 EKjjLWEJTlhp4qMWz2kxahd3uWvE3og/KYbpYed/TQdU/UK39Oz6gcUPUEsDBBQAAAgIAGN/ZEcA AAAAAgAAAAAAAAAVAAAAd2ViYXBwL3NyYy90ZXN0L2phdmEvAwBQSwMEFAAACAgAY39kRwAAAAAC AAAAAAAAABoAAAB3ZWJhcHAvc3JjL3Rlc3QvcmVzb3VyY2VzLwMAUEsDBBQAAAAIAG6AZEcy2wwK lgAAAMoAAAALAAAAc2V0ZW52LmJfYXRdTE0LgkAUvAv+By/eclm7FMIepOjQxajoKs/dp2m5T3af Rf++sAiKOcwM8+GwjzxytM1PeVnsjgeVQIOWr22VdeY+KHZg/UCOleHSk74gz8AYh96rdL4Q8oU0 W0opw+D3KP7KOErWHdxAWOhb24gaNJN7CKo61KzINQIG0Gf8L+zR0+g0bt4+06Nn6sVqomJaf6Iw eAJQSwMEFAAAAAgAb4BkR5B1OOqVAAAAywAAAAoAAABzZXRlbnYuc19oZUy7CsJAEOwF/yGgpTku NkrgiqBY2ERUbMPmbhMTzW242/j4ezWKhTLFzDCPUYC3lhwH6+SQZOlmv1MhlGj5XOVxba6tYgfW vyrKcOZJn5AnYIxD71U0nQn5RBTPpZTDwd/X+CuDcFnDBYSFprKlKEAzubugvEbNilwpoAV9xN/C Fj11TuPq7WPdeaZGLHpK+/UnegBQSwECFAAUAAAICAD5emRHqZDuZiYBAABlAgAAGQAAAAAAAAAA AAAAAAAAAAAAdG9tY2F0LWV4dGVuc2lvbnMvcG9tLnhtbFBLAQIUABQAAAgIABR7ZEes3b57ZgEA APUCAAA/AAAAAAAAAAAAAAAAAF0BAAB0b21jYXQtZXh0ZW5zaW9ucy9zcmMvbWFpbi9qYXZhL2N1 c3RvbS9DdXN0b21PYmplY3RGYWN0b3J5LmphdmFQSwECFAAUAAAICAAUe2RHKZBW9fwAAAAGAgAA QQAAAAAAAAAAAAAAAAAgAwAAdG9tY2F0LWV4dGVuc2lvbnMvc3JjL21haW4vamF2YS9jdXN0b20v Q3VzdG9tUmVzb3VyY2VGYWN0b3J5LmphdmFQSwECFAAUAAAICAAUe2RHEndufUoAAABOAAAAMwAA AAAAAAAAAAAAAAB7BAAAdG9tY2F0LWV4dGVuc2lvbnMvc3JjL21haW4vamF2YS9jdXN0b20vRmFj dG9yeS5qYXZhUEsBAhQAFAAACAgAFHtkR+gwP/pnAAAAfQAAADcAAAAAAAAAAAAAAAAAFgUAAHRv bWNhdC1leHRlbnNpb25zL3NyYy9tYWluL2phdmEvY3VzdG9tL0ZhY3RvcnlJbXBsLmphdmFQSwEC FAAUAAAICABjf2RHAAAAAAIAAAAAAAAAJQAAAAAAAAAAAAAAAADSBQAAdG9tY2F0LWV4dGVuc2lv bnMvc3JjL21haW4vcmVzb3VyY2VzL1BLAQIUABQAAAgIAGN/ZEcAAAAAAgAAAAAAAAAgAAAAAAAA AAAAAAAAABcGAAB0b21jYXQtZXh0ZW5zaW9ucy9zcmMvdGVzdC9qYXZhL1BLAQIUABQAAAgIAGN/ ZEcAAAAAAgAAAAAAAAAlAAAAAAAAAAAAAAAAAFcGAAB0b21jYXQtZXh0ZW5zaW9ucy9zcmMvdGVz dC9yZXNvdXJjZXMvUEsBAhQAFAAACAgACHtkR16qkEfFAQAA8AQAAA4AAAAAAAAAAAAAAAAAnAYA AHdlYmFwcC9wb20ueG1sUEsBAhQAFAAACAgAF3tkR44c9L0GAgAA6AQAADkAAAAAAAAAAAAAAAAA jQgAAHdlYmFwcC9zcmMvbWFpbi9qYXZhL2N1c3RvbS9GYWN0b3J5QW5ub3RhdGlvblNlcnZsZXQu amF2YVBLAQIUABQAAAgIABd7ZEeGmN8f2wEAAFYEAAA1AAAAAAAAAAAAAAAAAOoKAAB3ZWJhcHAv c3JjL21haW4vamF2YS9jdXN0b20vRmFjdG9yeUxvb2t1cFNlcnZsZXQuamF2YVBLAQIUABQAAAgI ABd7ZEfdCSnTXgEAAGIDAAAvAAAAAAAAAAAAAAAAABgNAAB3ZWJhcHAvc3JjL21haW4vamF2YS9j dXN0b20vRmFjdG9yeVNlcnZsZXQuamF2YVBLAQIUABQAAAgIABd7ZEeXJn8bFgEAAEMCAAAtAAAA AAAAAAAAAAAAAMMOAAB3ZWJhcHAvc3JjL21haW4vamF2YS9jdXN0b20vSGVsbG9TZXJ2bGV0Lmph dmFQSwECFAAUAAAICABjf2RHAAAAAAIAAAAAAAAAGgAAAAAAAAAAAAAAAAAkEAAAd2ViYXBwL3Ny Yy9tYWluL3Jlc291cmNlcy9QSwECFAAUAAAICABje2RHTNLfMpMAAADCAAAAKwAAAAAAAAAAAAAA AABeEAAAd2ViYXBwL3NyYy9tYWluL3dlYmFwcC9NRVRBLUlORi9jb250ZXh0LnhtbFBLAQIUABQA AAgIANp7ZEcj6HToJwEAALYCAAAmAAAAAAAAAAAAAAAAADoRAAB3ZWJhcHAvc3JjL21haW4vd2Vi YXBwL1dFQi1JTkYvd2ViLnhtbFBLAQIUABQAAAgIAGN/ZEcAAAAAAgAAAAAAAAAVAAAAAAAAAAAA AAAAAKUSAAB3ZWJhcHAvc3JjL3Rlc3QvamF2YS9QSwECFAAUAAAICABjf2RHAAAAAAIAAAAAAAAA GgAAAAAAAAAAAAAAAADaEgAAd2ViYXBwL3NyYy90ZXN0L3Jlc291cmNlcy9QSwECHwAUAAAACABu gGRHMtsMCpYAAADKAAAACwAkAAAAAAAAACAAAAAUEwAAc2V0ZW52LmJfYXQKACAAAAAAAAEAGACA UOSUCRfRARAKgW0EF9EBEAqBbQQX0QFQSwECHwAUAAAACABvgGRHkHU46pUAAADLAAAACgAkAAAA AAAAACAAAADTEwAAc2V0ZW52LnNfaAoAIAAAAAAAAQAYAAClBJYJF9EBYNStxwgX0QFg1K3HCBfR AVBLBQYAAAAAFAAUANQGAACQFAAAAAA= --047d7bb04d360fe9020523c9bfee Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org For additional commands, e-mail: users-help@tomcat.apache.org --047d7bb04d360fe9020523c9bfee--