ERROR: Waffle with Spring Boot using Java 9

771 views
Skip to first unread message

Mitul Patel

unread,
Jan 9, 2018, 12:40:18 PM1/9/18
to waffle

My background - I am novice Java developer but an expert .NET developer.

My organization is switching to JAVA and I am trying to master it. We have decided to use Spring Boot and JAVA 9 to start development.


To start JAVA web development we need SSO. I downloaded a demo project from https://github.com/mgoldgeier/waffle-spring-boot-demo to test it. I extended the application class to SpringBootServletInitializer and override SpringApplicationBuilder method to build WAR for tomcat.


It works from NetBeans, local spring boot JAR, and remote Tomcat (v8.5) with JAVA 8u152 but not with Java 9. Here is the error from Tomcat log


I am using Waffle 1.8.3, JAVA 9, Tomcat 8.5 on Windows 2012 server


Any help will be appreciated. Thank you.


org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [dispatcherServlet] in context with path [/waffle-test] threw exception [Filter execution threw an exception] with root cause

 java.lang.NoClassDefFoundError: Could not initialize class com.sun.jna.platform.win32.Sspi$CredHandle

                at waffle.windows.auth.impl.WindowsCredentialsHandleImpl.initialize(WindowsCredentialsHandleImpl.java:82)

                at waffle.windows.auth.impl.WindowsAuthProviderImpl.acceptSecurityToken(WindowsAuthProviderImpl.java:117)

                at waffle.servlet.spi.NegotiateSecurityFilterProvider.doFilter(NegotiateSecurityFilterProvider.java:143)

                at waffle.servlet.spi.SecurityFilterProviderCollection.doFilter(SecurityFilterProviderCollection.java:148)

                at waffle.spring.NegotiateSecurityFilter.doFilter(NegotiateSecurityFilter.java:104)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

                at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)

                at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)

                at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:347)

                at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:263)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101)

                at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:728)

                at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:467)

                at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:392)

                at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)

                at org.springframework.boot.web.support.ErrorPageFilter.forwardToErrorPage(ErrorPageFilter.java:183)

                at org.springframework.boot.web.support.ErrorPageFilter.handleException(ErrorPageFilter.java:166)

                at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:130)

                at org.springframework.boot.web.support.ErrorPageFilter.access$000(ErrorPageFilter.java:59)

                at org.springframework.boot.web.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:90)

                at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

                at org.springframework.boot.web.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:108)

                at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

                at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

                at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)

                at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

                at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)

                at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)

                at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)

                at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)

                at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)

                at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)

                at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)

                at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)

                at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)

                at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)

                at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

                at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)

                at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)

                at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

                at java.base/java.lang.Thread.run(Thread.java:844)

 

Jeremy Landis

unread,
Jan 10, 2018, 11:05:05 PM1/10/18
to waffle

Spring boot support is in waffle 1.9.0 which has not been officially released yet.  The issue you are running into most likely is a conflict with springboot use of JNA and the one that shipped with waffle 1.8.3.  I know it builds with java 9 now but has not been tested.  Can you look at the master on github and build there and give that demo a run (go under source package until you see demos).  I'm curious if our 1.9.0 has the same issue.  I don't expect much out of 1.8.x line in that regard but would want to know if the current master has issue.  If it does, please then open a ticket on github -> https://github.com/Waffle/waffle

Thanks,

Jeremy
Message has been deleted
Message has been deleted

Mitul Patel

unread,
Feb 28, 2018, 1:20:10 PM2/28/18
to waffle
At first I thought it's working but turns out I was getting cached response. I've compiled 1.9 branch and tried to use waffle-spring-springsecurity4, waffle-spring-springsecurity5, and waffle-spring-boot-starter. None worked using java 9. I am opening an issue and will attach some file that may help.

Thank you,
Mitul
Reply all
Reply to author
Forward
0 new messages