1

一部の Bean がまだ設定されていないために、本番環境で実行されているサーバーで (無害な) Null Pointer 例外が発生する理由を理解するのに苦労しています。これはシナリオです:

  1. 一部のユーザーは Web アプリケーションで作業しています
  2. Web アプリケーションが停止する
  3. Web アプリケーションの開始
  4. ほぼ即座に、クライアント ブラウザから Kerberos 認証が行われ、おそらくまだアクティブなスクリプトが実行されています
  5. Kerberos サービス認証プロバイダで NPE が発生し、UserService を呼び出そうとします (UserDetailsS​​ervice の実装) -- さらにいくつかのセキュリティ チェックが行われ、予想される Bean が NULL であるため NPE が発生します

スタックトレースのフラグメントは、質問の最後にあります。

これを開発環境で再現できなかったので、なぜこれが起こっているのかについてのアイデアを期待しています.

注:ZzzzSecurityContextServiceありlazy-init="true"ます。春バージョンは2.5.1.

Dec 10, 2012 10:14:11 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
        ...
Dec 10, 2012 10:14:13 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 33849 ms
Dec 10, 2012 10:14:15 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet ZzzzGwtClient threw exception
org.zzzz.system.security.SecurityDataAccessException: Error reading user 'Zzzzzz' info from the database.; nested exception is java.lang.NullPointerException
    at org.zzzz.system.security.UserService.loadUserByUsername(UserService.java:181)
    at org.zzzz.system.security.DelegatingUserDetailsService.loadUserByUsername(DelegatingUserDetailsService.java:21)
    at org.springframework.security.extensions.kerberos.KerberosServiceAuthenticationProvider.authenticate(KerberosServiceAuthenticationProvider.java:89)
    at org.springframework.security.providers.ProviderManager.doAuthentication(ProviderManager.java:195)
    at org.springframework.security.AbstractAuthenticationManager.authenticate(AbstractAuthenticationManager.java:46)
    at org.zzzz.session.WebAuthenticationFilter.attemptAuthentication(WebAuthenticationFilter.java:117)
    at org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:252)
        ...
Caused by: java.lang.NullPointerException
    at zzzz.services.ZzzzSecurityContextService.getStructureService(ZzzzSecurityContextService.java:241)
    at zzzz.services.ZzzzSecurityContextService.readSecurityContext(ZzzzSecurityContextService.java:50)
    at org.zzzz.system.security.SecurityContextService.getSecurityContext(SecurityContextService.java:41)
    at org.zzzz.system.security.UserService.loadUserByUsername(UserService.java:173)
    ... 29 more
4

0 に答える 0