Hi Chris,

Thanks for the reply. Comments inline:

On Tue, Mar 27, 2018 at 4:31 AM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> Behrooz,
>
> On 3/26/18 12:26 AM, Behrooz Nobakht wrote:
> > Hi,
> >
> > I am migrating a code base from Tomcat 8.0.38 to 9.0.6. There are a
> > few things I'd like to confirm based on observations so far and ask
> > for advice:
> >
> > 1. Default Class Loader
> >
> > In 9, it seems that the default is ParallelWebAppClassLoader
> > compared with WebAppClassLoader in 8.0. What behavior changes does
> > the new class loader bring esp. now that it seems to use
> > "concurrent" approach?
> >
> > One specific observation so far is that the code
> >
> > Thread.currentThread().getContextClassLoader()
> >
> > used to give out "a" class loader in 8.0 but it returns null in
> > 9.0. Any advice on this?
>
> What code is fetching the TCCL? Something like a ServletContextListener?
>

This is a business object trying to resolve a resource using
ClassLoader#gerResource
and class loader is retrieved via above way. The call stack comes from a
REST request
and it's not part of container/context life cycle.


>
> > 2. ClassNotFoundException:
> > org.apache.naming.java.javaURLContextFactory
> >
> > Having the code:
> >
> > InitialContext ic = new InitialContext()
>
> What data type is InitialContext in your code, here? Can you post the
> complete stack trace?
>

InitialContext is javax.naming.InitialContext.
As I traced this, by default this is enabled by Tomcat itself at
Catalina.java
<https://github.com/apache/tomcat/blob/trunk/java/org/apache/catalina/startup/Catalina.java#L823>
.
We might be having implicit class loader conflicts which I am tracing now.
I event tried to install a custom Loader
<http://tomcat.apache.org/tomcat-9.0-doc/config/loader.html> inside the
Context with WebappClassLoader
to see anything changes in comparison with ParallelWebappClassLoader.
Tomcat 8 works but Tomcat 9 fails with ClassNotFoundException:

javax.naming.NoInitialContextException: Cannot instantiate class:
org.apache.naming.java.javaURLContextFactory [Root exception is
java.lang.ClassNotFoundException:
org.apache.naming.java.javaURLContextFactory]
    at
javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:674)
    at
javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:313)
    at javax.naming.InitialContext.init(InitialContext.java:244)
    at javax.naming.InitialContext.<init>(InitialContext.java:192)

And, we're not explicitly bundling tomcat-catalina.jar with the webapp.

Thanks,
Behrooz



>
> > used to work on Tomcat 8.0 but now yields the above exception in
> > Tomcat 9. It seems that catalina.jar is not exposed by default to a
> > webapp class loader.
>
> Nor should it. It should not have been available to applications in
> Tomcat 8, either. Are you bundling catalina.jar with your application?
>
> - -chris
> -----BEGIN PGP SIGNATURE-----
> Comment: GPGTools - http://gpgtools.org
> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
>
> iQJRBAEBCAA7FiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlq5LncdHGNocmlzQGNo
> cmlzdG9waGVyc2NodWx0ei5uZXQACgkQHPApP6U8pFhSiBAArOCcZ0okwbEp1ag+
> gCJw3jXcndN3JfmcEoIjNddR8/P2BvGSpZrvNX3b/hECrmlMV7hUl0SpORl7afL5
> zrP1liEdRlZ50EmpQJULG+yjktc298Ip6eXWQLa6oX9OOLbkZyknlGeI249j6syo
> FXomtb6ZQ4F0WP9wC14N/keAHL2nqTOk7+1p1khfIYPVUM1MfT9EtVnW3weL9kHd
> sn1FZIV3TNkOiukQm9znIeed00YlH0kaS2V9l/GNOvkhwH66xROxiJukm3dUzTQe
> djsigv/mHrEWZDG9rhteJbt9RB6XMsaQogfXh8JlZsfxt2i7Yy12O2LOOHFIMaTl
> 4fjKxiuQl0iOi52rfvrp+CTO/0y0TklPh3gYcNa2dpZm/UGkLrRty199Qs9+KIgy
> d0L5zT9pwFusTwKt/wiVyGcm+Jg2Lq13fD8WNMmElk1h78ceVbM3NFDxZqqaSHK2
> p3S3xrMsTeFfyFI2BRdUXlV/+HGwwLYnmHWPVSEUhV448WXdOd0kehYSJGLmfXBM
> UrYiZksVTYjsJc5zCADtp4xNm/At9T/Ktcfp67Rm97bR8ityQBuf9xKpJ7eo5Gzj
> Ecl4kFz2W4sRxli0H5zX8lcoO7A9AAk7P0bR1ooMZ/8d6nx1WrIx19zNXz1ou8me
> qI6/uYGGZX23quqgKXKP9g2basE=
> =DOWh
> -----END PGP SIGNATURE-----
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: users-h...@tomcat.apache.org
>
>


-- 
-- Behrooz Nobakht

Reply via email to