NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet

796 Views Asked by At

I have used jetty 10 and java 11. Also added jsp module and its dependencies. Still while running jetty i'm getting below error. I have used custom classLoader.

2022-06-09 11:45:08.094:INFO :oejs.Server:main: jetty-10.0.8; built: 2022-02-07T10:34:42.299Z; git: 716c7afd8e40d8f645b32aff06945a249d6eb511; jvm 11.0.14+9-Ubuntu-0ubuntu2.16.04
2022-06-09 11:45:08.127:INFO :oejdp.ScanningAppProvider:main: Deployment monitor [file:///opt/jetty-op/webapps/]
2022-06-09 11:45:10.274:INFO :oejw.StandardDescriptorProcessor:main: NO JSP Support for /, did not find org.eclipse.jetty.jsp.JettyJspServlet
2022-06-09 11:45:10.291:WARN :oejs.BaseHolder:main: Unable to load class org.eclipse.jetty.servlet.listener.ELContextCleaner
java.lang.ClassNotFoundException: org.eclipse.jetty.servlet.listener.ELContextCleaner
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:531)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at com.quickheal.loader.WebAppClassLoader.loadClass(WebAppClassLoader.java:26)
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:59)
    at org.eclipse.jetty.servlet.BaseHolder.doStart(BaseHolder.java:97)
    at org.eclipse.jetty.servlet.ListenerHolder.doStart(ListenerHolder.java:69)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:382)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:895)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:516)
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:151)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:186)
    at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:462)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:58)
    at org.eclipse.jetty.util.Scanner$DiscreteListener.pathAdded(Scanner.java:282)
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:836)
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:802)
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:709)
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:597)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:158)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:605)
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:246)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.server.Server.start(Server.java:469)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
    at org.eclipse.jetty.server.Server.doStart(Server.java:414)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.xml.XmlConfiguration.lambda$main$4(XmlConfiguration.java:1872)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1810)
2022-06-09 11:45:10.293:WARN :oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@16a0ee18{UI.xml,/,file:///tmp/jetty-0_0_0_0-7443-MDM-UI-OP-02_07_68_war-_-any-598330691539841733/webapp/,UNAVAILABLE}{/opt/jetty-op/webapps/webapp/MDM-UI-OP-02.07.68.war}
javax.servlet.UnavailableException: Class loading error for holder org.eclipse.jetty.servlet.listener.ELContextCleaner@4b7dc788{src=DESCRIPTOR:file:///opt/jetty-op/etc/webdefault.xml}
    at org.eclipse.jetty.servlet.BaseHolder.doStart(BaseHolder.java:104)
    at org.eclipse.jetty.servlet.ListenerHolder.doStart(ListenerHolder.java:69)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:382)
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:895)
    at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:40)
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:183)
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:516)
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:151)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:186)
    at org.eclipse.jetty.deploy.providers.WebAppProvider.fileAdded(WebAppProvider.java:462)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:58)
    at org.eclipse.jetty.util.Scanner$DiscreteListener.pathAdded(Scanner.java:282)
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:836)
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:802)
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:709)
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:597)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:158)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:605)
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:246)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
    at org.eclipse.jetty.server.Server.start(Server.java:469)
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121)
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
    at org.eclipse.jetty.server.Server.doStart(Server.java:414)
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
    at org.eclipse.jetty.xml.XmlConfiguration.lambda$main$4(XmlConfiguration.java:1872)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1810)
2022-06-09 11:45:10.504:INFO :oejss.DefaultSessionIdManager:main: Session workerName=node0
2022-06-09 11:45:10.541:INFO :oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@30bce90b{webapp,/webapp,file:///opt/jetty-op/webapps/webapp/,AVAILABLE}{/opt/jetty-op/webapps/webapp}
2022-06-09 11:45:10.568:INFO :oejus.SslContextFactory:main: x509=X509@4bff64c2(qhmdmstore,h=[172.18.42.7],a=[/172.18.42.7],w=[]) for Server@c2db68f[provider=null,keyStore=file:///opt/jetty-op/etc/keystore,trustStore=null]
2022-06-09 11:45:10.646:INFO :oejs.AbstractConnector:main: Started ServerConnector@5b07730f{SSL, (ssl, http/1.1)}{0.0.0.0:7443}
2022-06-09 11:45:10.657:INFO :oejs.Server:main: Started Server@799f10e1{STARTING}[10.0.8,sto=5000] @3083ms
1

There are 1 best solutions below

0
Joakim Erdfelt On
com.quickheal.loader.WebAppClassLoader.loadClass(WebAppClassLoader.java:26)

That is the cause of your issues.

Your custom classloader has to follow all of the rules for both the Servlet Spec and it's WebApp isolation and Jetty's WebAppClassLoader expectations within WebAppContext

That layer is never a normal Java ClassLoader.

Be aware that many libraries that use Servlet also expect behaviors from the same ClassLoader (including subtle things like Class caching, permissions, servlet constraints, java.lang.instrument.ClassFileTransformer support, system vs server isolation, inverted parent priority, etc)