https://bz.apache.org/bugzilla/show_bug.cgi?id=62830
--- Comment #13 from Igal Sapir <isa...@apache.org> --- (In reply to Christopher Schultz from comment #12) > Sorry... I must be missing something, here. > > System.loadLibrary isn't ClassLoader-specific... once the library has been > loaded, it can't be loaded again at all. > > The code here is all fine, and using a Listener makes a lot of sense. But > the documentation suggests that somehow loading a shared lib in a different > ClassLoader changes something when it doesn't. Instead, you are asking > Tomcat to load it *once* (at the server level) and then not again. > > If you try to use this <Listener> at the <Context> level, it will fail when > re-deploying the <Context>, just like if the application had used It's counter-intuitive, I know. Here's what I tested right now, tell me know if covers the scenario you described above: In conf/server.xml, I added the following snippet to the Server, Service, and in conf/Catalina/localhost/ROOT.xml, conf/Catalina/localhost/context_1.xml, conf/Catalina/localhost/context_2.xml to the Context element: > <Listener className="org.apache.catalina.core.JniLifecycleListener" > libraryName="opencv_java343" /> Below are the relevant log entries: > 22-Oct-2018 18:45:04.733 INFO [main] > org.apache.catalina.startup.Catalina.load Initialization processed in 412 ms > 22-Oct-2018 18:45:04.739 INFO [main] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:04.759 INFO [main] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:04.759 INFO [main] > org.apache.catalina.core.StandardService.startInternal Starting service > [Catalina] > 22-Oct-2018 18:45:04.760 INFO [main] > org.apache.catalina.core.StandardEngine.startInternal Starting Servlet > Engine: Apache Tomcat/9.0.13-dev > 22-Oct-2018 18:45:04.766 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/ROOT.xml] > 22-Oct-2018 18:45:04.790 INFO [main] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > <snip/> > 22-Oct-2018 18:45:06.277 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/ROOT.xml] has > finished in [1,510] ms > 22-Oct-2018 18:45:06.277 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_2.xml] > 22-Oct-2018 18:45:06.279 INFO [main] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:06.379 INFO [main] > org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned > for TLDs yet contained no TLDs. Enable debug logging for this logger for a > complete list of JARs that were scanned but no TLDs were found in them. > Skipping unneeded JARs during scanning can improve startup time and JSP > compilation time. > 22-Oct-2018 18:45:06.380 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_2.xml] > has finished in [103] ms > 22-Oct-2018 18:45:06.381 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_1.xml] > 22-Oct-2018 18:45:06.382 INFO [main] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:06.473 INFO [main] > org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned > for TLDs yet contained no TLDs. Enable debug logging for this logger for a > complete list of JARs that were scanned but no TLDs were found in them. > Skipping unneeded JARs during scanning can improve startup time and JSP > compilation time. > 22-Oct-2018 18:45:06.474 INFO [main] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_1.xml] > has finished in [93] ms Then I modified ROOT.xml, context_1.xml, and context_2.xml, one at a time: > 22-Oct-2018 18:45:41.573 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/ROOT.xml] > 22-Oct-2018 18:45:41.575 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:41.675 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned > for TLDs yet contained no TLDs. Enable debug logging for this logger for a > complete list of JARs that were scanned but no TLDs were found in them. > Skipping unneeded JARs during scanning can improve startup time and JSP > compilation time. > 22-Oct-2018 18:45:41.677 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/ROOT.xml] has > finished in [104] ms > 22-Oct-2018 18:45:51.679 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.undeploy Undeploying context > [/context_1] > 22-Oct-2018 18:45:51.687 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_1.xml] > 22-Oct-2018 18:45:51.692 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:45:51.787 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned > for TLDs yet contained no TLDs. Enable debug logging for this logger for a > complete list of JARs that were scanned but no TLDs were found in them. > Skipping unneeded JARs during scanning can improve startup time and JSP > compilation time. > 22-Oct-2018 18:45:51.788 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_1.xml] > has finished in [101] ms > 22-Oct-2018 18:46:01.791 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.undeploy Undeploying context > [/context_2] > 22-Oct-2018 18:46:01.797 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deploying deployment > descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_2.xml] > 22-Oct-2018 18:46:01.803 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.core.JniLifecycleListener.lifecycleEvent Loaded native > library opencv_java343 > 22-Oct-2018 18:46:01.896 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned > for TLDs yet contained no TLDs. Enable debug logging for this logger for a > complete list of JARs that were scanned but no TLDs were found in them. > Skipping unneeded JARs during scanning can improve startup time and JSP > compilation time. > 22-Oct-2018 18:46:01.897 INFO > [ContainerBackgroundProcessor[StandardEngine[Catalina]]] > org.apache.catalina.startup.HostConfig.deployDescriptor Deployment of > deployment descriptor > [/home/user/Workspace/test/JniListener/conf/Catalina/localhost/context_2.xml] > has finished in [99] ms -- 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