2015-08-10 3 views
1

У меня есть приложение Grails 2.5, для которого я добавляю поддержку websocket. WebSocket был добавлен с помощью этого блога в качестве руководства: http://caseyscarborough.com/blog/2014/12/07/using-websockets-in-grails/ интеграция работает при создании приложения Grails с нуля, но когда я пытаюсь интегрировать в моем приложении он бросает эту StackTraceWebsocket HandshakeRequest throwing ClasscastException

| Error java.lang.ClassCastException: java.util.ArrayList cannot be 
cast to [Ljava.lang.Object; | Error  at 
org.apache.tomcat.websocket.server.WsHandshakeRequest.<init>(WsHandshakeRequest.java:73) 
| Error  at 
org.apache.tomcat.websocket.server.UpgradeUtil.doUpgrade(UpgradeUtil.java:149) 
| Error  at 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:77) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.processFilterChain(UrlMappingsFilter.java:440) 
| Error  at 
org.codehaus.groovy.grails.web.mapping.filter.UrlMappingsFilter.doFilterInternal(UrlMappingsFilter.java:241) 
| Error  at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) 
| Error  at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) 
| Error  at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
| Error  at 
com.application.CustomAuthFilter.super$3$doFilter(CustomAuthFilter.groovy) 
| Error  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method) | Error  at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
| Error  at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
| Error  at java.lang.reflect.Method.invoke(Method.java:497) | Error 
    at 
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
| Error  at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) 
| Error  at 
groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1207) | 
Error at 
groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1121) 
| Error  at 
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:130) 
| Error  at 
com.application.CustomAuthFilter.doFilter(CustomAuthFilter.groovy:368) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter.doFilter(AbstractPreAuthenticatedProcessingFilter.java:89) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.codehaus.groovy.grails.plugins.springsecurity.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:79) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.saml.SAMLLogoutProcessingFilter.processLogout(SAMLLogoutProcessingFilter.java:169) 
| Error  at 
org.springframework.security.saml.SAMLLogoutProcessingFilter.doFilter(SAMLLogoutProcessingFilter.java:93) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.saml.SAMLLogoutFilter.processLogout(SAMLLogoutFilter.java:157) 
| Error  at 
org.springframework.security.saml.SAMLLogoutFilter.doFilter(SAMLLogoutFilter.java:103) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.saml.metadata.MetadataDisplayFilter.doFilter(MetadataDisplayFilter.java:83) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.saml.SAMLEntryPoint.doFilter(SAMLEntryPoint.java:102) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) 
| Error  at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) 
| Error  at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) 
| Error  at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
| Error  at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69) 
| Error  at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67) 
| Error  at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:230) 
| Error  at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:196) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) 
| Error  at 
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
| Error  at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) 
| Error  at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
| Error  at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
| Error  at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
| Error  at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
| Error  at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
| Error  at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
| Error  at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
| Error  at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
| Error  at 
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040) 
| Error  at 
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) 
| Error  at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313) 
| Error  at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
| Error  at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
| Error  at java.lang.Thread.run(Thread.java:745) 
null 

Любая помощь, чтобы как диагностировать проблему будет оценено. Заранее спасибо.

UPDATE: Если я установил адрес контроллера, который делает подключение к интернету за пределами весенней безопасности, я больше не получаю эту ошибку, и соединение будет успешно завершено.

+0

Какую версию Tomcat вы используете? Вы уверены, что используете согласованные версии Tomcat? –

+0

Tomcat версия 7.0.54. Образцовое приложение работает, с той лишь разницей, что мое приложение имеет плагин spring-security-plugin для grails. – Questioner

+0

Какую версию плагина-весны вы используете? –

ответ

0

Я смог решить это с помощью @Rob Winch. Вы указали мне в правильном направлении, когда вы сказали, что что-то переписывает объект HttpServletRequest. Оказывается, какой-то пользовательский код groovy добавлял параметры к объекту запроса, используя эту примечательную запись: [str]. На самом деле это java.util.ArrayList в Groovy, а не String [] (массив). Именно это и привело к сбою запроса на встряску руки. Еще раз спасибо.