1

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
greg-449
  • 109,219
  • 232
  • 102
  • 145
  • 1
    Not sure where you get `org.apache.jasper.servlet.JspServlet` from when the log states `org.eclipse.jetty.jsp.JettyJspServlet`. Also this doesn't seem to be your issue at all – XtremeBaumer Jun 09 '22 at 06:58
  • may be this is related to custom classloader which i have used in my code. And that's why getting "unable to load class org.eclipse.jetty.servlet.listener.ELContextCleaner java.lang.ClassNotFoundException: org.eclipse.jetty.servlet.listener.ELContextCleaner" – Rohini Patil Jun 09 '22 at 08:27

1 Answers1

1
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)

Joakim Erdfelt
  • 46,896
  • 7
  • 86
  • 136