Sujey, Jetty 6 to Jetty 9!!! Happy new decade! !)
After you start the server, can you do a Server.dumpStdErr() and post the output? Your configuration of the login service by setting a new security handler on the context is a bit strange. You should be able to just add the login service as a bean on the server and it will be found. Do any of the frameworks you are using set the Thread context classloader? regards On Wed, 11 Mar 2020 at 20:18, Sujay Pujari <[email protected]> wrote: > Hello Jetty users, > > > > We are migrating Jetty from v6 to ver 9.4.27 & using embedded Jetty. > > Where in authentication is performed using form based , Jaas > authentication. > > In Jaas.conf file we have configured to use following custom module > > class com.acme.es.nuvo.ediscovery.jaas.DiscoveryLoginModule which extends > from AbstractLoginModule. > > Now inside Login method of this class, We have following line of code > > Credential cr = Credential.getCredential(pwdStr); > > > > *Where we are getting NoClassDefFoundError for > org.eclipse.jetty.util.security.Credential.* > > Note : This issue is observed on Jetty 9.x & 8.x ( but was working fine > with 6.x ) > > > > Inspite of the fact that jetty-util jar corresponding to this is present > in the buildpath. > > Also, > > Verbose:class shows that this class is getting loaded. > > class load: org.eclipse.jetty.util.security.Credential from: > file:/../lib/Jetty9.4.15/jetty-util-9.4.15.v20190215.jar > > > > Can anybody suggest what I might be missing ? Any appropriate way to > troubleshoot this? > > Any help would be really appreciated. > > > > *Here is detailed stack:* > > > > javax.security.auth.login.LoginException: java.lang.NoClassDefFoundError: > org.eclipse.jetty.util.security.Credential > > at > com.acme.es.nuvo.ediscovery.jaas.DiscoveryLoginModule.login(DiscoveryLoginModule.java:148) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) > > at java.lang.reflect.Method.invoke(Method.java:508) > > at > javax.security.auth.login.LoginContext.invoke(LoginContext.java:788) > > at > javax.security.auth.login.LoginContext.access$000(LoginContext.java:196) > > at > javax.security.auth.login.LoginContext$4.run(LoginContext.java:698) > > at > javax.security.auth.login.LoginContext$4.run(LoginContext.java:696) > > at > java.security.AccessController.doPrivileged(AccessController.java:650) > > at > javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:696) > > at > javax.security.auth.login.LoginContext.login(LoginContext.java:597) > > at > org.eclipse.jetty.jaas.JAASLoginService.login(JAASLoginService.java:251) > > at > org.eclipse.jetty.security.authentication.LoginAuthenticator.login(LoginAuthenticator.java:67) > > at > org.eclipse.jetty.security.authentication.FormAuthenticator.login(FormAuthenticator.java:182) > > at > org.eclipse.jetty.security.authentication.DeferredAuthentication.login(DeferredAuthentication.java:118) > > at > org.eclipse.jetty.server.Request.login(Request.java:2411) > > at > com.acme.es.nuvo.ediscovery.ui.actions.LoginAction.login(LoginAction.java:70) > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) > > at java.lang.reflect.Method.invoke(Method.java:508) > > at > com.acme.es.nuvo.ediscovery.ui.DiscoveryAction.dispatchMethod(DiscoveryAction.java:149) > > at > org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187) > > at > org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) > > at > org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) > > at > com.acme.es.nuvo.ediscovery.ui.DiscoveryRequestProcessor.process(DiscoveryRequestProcessor.java:84) > > at > org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) > > at > com.acme.es.nuvo.ediscovery.ui.SecureServlet.process(SecureServlet.java:67) > > at > org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) > > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:790) > > at > org.eclipse.jetty.servlet.ServletHolder$NotAsyncServlet.service(ServletHolder.java:1395) > > at > org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:755) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1617) > > at > com.acme.es.nuvo.common.CompressionFilter.doFilter(CompressionFilter.java:80) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) > > at > com.acme.es.nuvo.common.CacheFilter.doFilter(CacheFilter.java:92) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) > > at > com.acme.es.nuvo.common.Utf8Filter.doFilter(Utf8Filter.java:34) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) > > at > com.acme.es.nuvo.common.LocaleFilter.doFilter(LocaleFilter.java:57) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) > > at > com.acme.es.nuvo.common.SecurityTokenFilter.doFilter(SecurityTokenFilter.java:78) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1604) > > at > com.acme.es.nuvo.common.SSLFilter.doFilter(SSLFilter.java:58) > > at > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1596) > > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:545) > > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:566) > > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235) > > at > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1610) > > at > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233) > > at > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1300) > > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188) > > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:485) > > at > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1580) > > at > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186) > > at > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1215) > > at > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > > at > org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:221) > > at > org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) > > at > org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:81) > > at > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) > > at org.eclipse.jetty.server.Server.handle(Server.java:500) > > at > org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:383) > > at > org.eclipse.jetty.server.HttpChannel$$Lambda$59.0000000000D9AA80.dispatch(Unknown > Source) > > at > org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:547) > > at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:375) > > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:273) > > at > org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311) > > at > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > > at > org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:543) > > at > org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:398) > > at > org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:161) > > at > org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) > > at > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) > > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:336) > > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:313) > > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:171) > > at > org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:129) > > at > org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:375) > > at > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:806) > > at > org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:938) > > at java.lang.Thread.run(Thread.java:785) > > Caused by: java.lang.ClassNotFoundException: > org.eclipse.jetty.util.security.Credential > > at > org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:565) > > at java.lang.ClassLoader.loadClass(ClassLoader.java:809) > > ... 86 more > > > > > > Other details : > > > > A. > > We are instantiating jetty instance through Java code and where we refer > jetty.xml for server configuration. > > > > B. > > In jetty.xml we uses following > > > > <Configure id="Server" class="org.eclipse.jetty.server.Server"> > > … > > … > > > > <Call name=*"addBean"*> > > <Arg> > > <New id=*"DeploymentManager"* class= > *"org.eclipse.jetty.deploy.DeploymentManager"*> > > <Set name=*"contexts"*> > > <Ref refid=*"Contexts"* /> > > </Set> > > <Call id=*"webappprovider"* name=*"addAppProvider"*> > > <Arg> > > <New class= > *"org.eclipse.jetty.deploy.providers.WebAppProvider"*> > > <Set name=*"monitoredDirName"*><Property name= > *"Project.home"* default=*"."* />/*config*/jetty_contexts</Set> > > > <Set name=*"scanInterval"*>0</Set> > > <Set name=*"extractWars"*>true</Set> > > <!-- <Set name="Recursive">true</Set> --> > > > </New> > > </Arg> > > </Call> > > </New> > > </Arg> > > </Call> > > > > … > > > > > > </Configure> > > > > > > > > C. one of the file present at <project.home>/*config*/jetty_contexts is > ediscovery.xml > > > > <Configure class=*"org.eclipse.jetty.webapp.WebAppContext"*> > > > > > > <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> > > <!-- Required minimal context configuration : --> > > <!-- + contextPath --> > > <!-- + war OR resourceBase --> > > <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> > > > > > > <Set name=*"contextPath"*>/*ediscovery*</Set> > > <!-- <Set name="parentLoaderPriority">true</Set>--> > > <Set name=*"war"*><SystemProperty name=*"Project.home"* default=*"."*/> > /*lib*/Application_ui.war</Set> > > > > ….. > > > > > > <Set name=*"securityHandler"*> > > <New class=*"org.eclipse.jetty.security.ConstraintSecurityHandler"*> > > <Set name=*"loginService"*> > > <New class=*"org.eclipse.jetty.jaas.JAASLoginService"*> > > <Set name=*"name"*>*ediscovery*</Set> > > <Set name=*"loginModuleName"*>DiscoveryLoginModule</Set> > > <Set name=*"CallbackHandlerClass"*> > > org.eclipse.jetty.jaas.callback.DefaultCallbackHandler > > </Set> > > <Set name=*"roleClassNames"*> > > <Array type=*"java.lang.String"*> > > <Item>org.eclipse.jetty.jaas.JAASRole</Item> > > </Array> > > </Set> > > </New> > > </Set> > > <Set name=*"checkWelcomeFiles"*>true</Set> > > </New> > > </Set> > > > > … > > > > > > </Configure> > > > > > > Now I have few observations. > > > > When in File C i.e. ediscovery.xml I make following line uncommented > > <Set name="parentLoaderPriority">true</Set> > > Then, > > In my eclipse I don’t see any No Class Def Found Error. > > > > But, > > 1. In my build environment ( installed version, I see same error , > classpath has required jars present ) > 2. Jetty 6 we were nor setting parentLoaderPriority to True. > > > > > > > > > > Any help to troubleshoot this problem will be appreciated. > > > > Thanks & Regards, > > Sujay > DISCLAIMER > ========== > This e-mail may contain privileged and confidential information which is > the property of Persistent Systems Ltd. It is intended only for the use of > the individual or entity to which it is addressed. If you are not the > intended recipient, you are not authorized to read, retain, copy, print, > distribute or use this message. If you have received this communication in > error, please notify the sender and delete all copies of this message. > Persistent Systems Ltd. does not accept any liability for virus infected > mails. > _______________________________________________ > jetty-users mailing list > [email protected] > To unsubscribe from this list, visit > https://www.eclipse.org/mailman/listinfo/jetty-users > -- Greg Wilkins <[email protected]> CTO http://webtide.com
_______________________________________________ jetty-users mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
