Friday, April 28, 2023

GWT 2.10.0 and TLD/JAR Scanner Error

Hello,

I have a GWT 2.10.0 project compiled in Java 11, built with Maven 3.8.4 through the GWT-maven-plugin, and deployed to a WebLogic 14c server. Recently I have seen errors related to the Tomcat JAR scanner and the embedded server utilized in development mode. The application was working but after the upgrade to version 2.10.0, errors fill the server out log in WebLogic that the Tomcat StandardJarScanner failed to scan JAR files from the classloader hierarchy along with a silent failure of the application itself. After ensuring GWT was starting in Production Mode, I added the following elements to the configuration section of the plugin to ensure the server would not start up:

<noServer>true</noServer>
<compilerArgs>
    <arg>-noincremental</arg>
</compilerArgs>

After recompiling with these changes the application was able to function normally once again but the errors regarding the JAR scanner being unable to scan from the classloader hierarchy remained. The JARs it attempted to scan were ones that are not part of the application nor in any of the dependency trees of the dependencies of the gwt-maven-plugin.

I want to disable that JAR scanning and the errors it produces when the application is started. I attempted to do so by adding a context.xml to the webapp/META-INF to the scanning with configuration to limit the scanner but it did not seem to have an effect. Here are logs for the errors happening in the out file for the WL server the application is deployed to:

Failed to scan <JarFile> from classloader hierarchy
Java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.tomcat.util.compat.Jre9Compat.jarFileNewInstance(Jre9Compat.java:209)
at org.apache.tomcat.util.scan.JarFileUrlJar.<init>(JarFileUrlJar.java:65)
at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:49)
at org.apache.tomcat.util.scan.StandardJarScanner.process(StandardJarScanner.java:387)
at org.apache.tomcat.util.scan.StandardJarScanner.processURLs(StandardJarScanner.java:322)
at org.apache.tomcat.util.scan.StandardJarScanner.doScanClassPath(StandardJarScanner.java:284)
at org.apache.tomcat.util.scan.StandardJarScanner.scan(StandardJarScanner.java:235)
at org.apache.jasper.servlet.TldScanner.scanJars(TldScanner.java:262)
at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104)
at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101)
at weblogic.servlet.internal.WebAppServletContext.initContainerInitializers(WebAppServletContext.java:1428)
...


Additionally, in the server log file there is this outputted on startup:
<warning: No org.apache.tomcat.JarScanner set in ServletContext. Falling back to default JarScanner implementation.>

This link (https://stackoverflow.com/questions/66689374/spring-boot-with-jetty-disable-o-a-tomcat-util-scan-standardjarscanner) mentioned that the org.apache.tomcat.util.scan.StandardJarScanner can originate from apache-jsp JARs which gwt-dev 2.10.0 has a dependency. I confirmed this in my IDE and maven repository but I have been unable to prevent the scanning of the classpath hierarchy for TLDs. Is there a way to disable this scanning of TLDs and JAR files from the classloader hierarchy?

Help is very much appreciated!

Thank you,
Aynesh Patel

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-web-toolkit/424aa622-82e3-4231-b6e5-368cf9629584n%40googlegroups.com.

No comments:

Post a Comment