Приложение Grails развернуто как ROOT.war, j_spring_security_check выбрасывает NPE и HTTP 500 - PullRequest
1 голос
/ 26 мая 2011

Граальс 1.3.6 Tomcat6

Я создал производство ROOT.war. Удален каталог ROOT tomcat по умолчанию. Развернул ROOT.war и запустил tomcat. Приложение запускается просто отлично. Тем не менее, кажется, что весенний защитный фильтр не обрабатывается правильно. Для начала я могу получить доступ к защищенным страницам, но возникают ошибки из-за невозможности доступа к зарегистрированному принципалу. Другая проблема, если после отправки кредитов для входа на сервер сервер возвращает код состояния NPE и HTTP, равный 500, на http://host:8080/j_spring_security_check.

Я должен отметить, что локально у меня есть app.context = / in application.properties, и все локально работает очень хорошо на http://localhost:8080/

У кого-нибудь есть идеи?

ОБНОВЛЕНИЕ: По какой-то причине, в этот раз я получил больше трассировки стека для NPE, поэтому я публикую его здесь

java.lang.NullPointerException

    at org.apache.tomcat.util.buf.ByteChunk.equalsIgnoreCase(ByteChunk.java:563)

    at org.apache.tomcat.util.buf.MessageBytes.equalsIgnoreCase(MessageBytes.java:335)

    at org.apache.tomcat.util.http.MimeHeaders.getValue(MimeHeaders.java:289)

    at org.apache.tomcat.util.http.MimeHeaders.getHeader(MimeHeaders.java:318)

    at org.apache.coyote.Request.getHeader(Request.java:330)

    at org.apache.catalina.connector.Request.getHeader(Request.java:1877)

    at org.apache.catalina.connector.RequestFacade.getHeader(RequestFacade.java:643)

    at javax.servlet.http.HttpServletRequestWrapper.getHeader(HttpServletRequestWrapper.java:80)

    at org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.isAjax(SpringSecurityUtils.java:299)

    at org.codehaus.groovy.grails.plugins.springsecurity.AjaxAwareAuthenticationSuccessHandler.determineTargetUrl(AjaxAwareAuthenticationSuccessHandler.java:42)

    at org.springframework.security.web.authentication.AbstractAuthenticationTargetUrlRequestHandler.handle(AbstractAuthenticationTargetUrlRequestHandler.java:67)

    at org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler.onAuthenticationSuccess(SimpleUrlAuthenticationSuccessHandler.java:42)

    at org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler.onAuthenticationSuccess(SavedRequestAwareAuthenticationSuccessHandler.java:63)

    at org.codehaus.groovy.grails.plugins.springsecurity.AjaxAwareAuthenticationSuccessHandler.onAuthenticationSuccess(AjaxAwareAuthenticationSuccessHandler.java:65)

    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.successfulAuthentication(AbstractAuthenticationProcessingFilter.java:301)

    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)

    at org.codehaus.groovy.grails.plugins.springsecurity.RequestHolderAuthenticationFilter.doFilter(RequestHolderAuthenticationFilter.java:40)

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

    at org.codehaus.groovy.grails.plugins.springsecurity.MutableLogoutFilter.doFilter(MutableLogoutFilter.java:79)

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

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

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

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

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

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

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

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

    at org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:69)

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

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

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

    at org.codehaus.groovy.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:65)

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

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

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

    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)

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

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

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

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

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

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

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

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

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

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

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

    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)

    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

    at java.lang.Thread.run(Thread.java:636)

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

Хорошо, так коротко говоря, это не имеет никакого отношения к Spring Security. Я все еще собираю все вместе, но это как-то связано с набором плагинов, которые мы поддерживаем (больше похоже на модули проекта), встроенной конфигурацией плагинов, зависимостями плагинов и производственной войной.

0 голосов
/ 27 мая 2011

Похоже, что приложение выполняет request.getHeader(ajaxHeaderName), где имя:

String ajaxHeaderName = (String)ReflectionUtils.getConfigProperty("ajaxHeader");

(см. isAjax() в строке 294 здесь )

Значением по умолчанию для ajaxHeader является 'X-Requested-With' ( здесь ).

Вы явно устанавливаете значение конфигурации в prod?

Это не очень точный ответ, но, возможно, он отправит вас по правильному пути отладки.

...