1

サーバーを再起動しようとすると、以下の例外が発生しました。

2012-06-07 17:46:14,872 ERROR [http-0.0.0.0-8080-25]-[org.jboss.web.tomcat.security.JBossWebRealm] Error during authenticate
java.util.ConcurrentModificationException
    at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
    at java.util.AbstractList$Itr.next(AbstractList.java:343)
    at org.jboss.security.plugins.JBossAuthorizationManager.getRolesAsSet(JBossAuthorizationManager.java:317)
    at org.jboss.security.plugins.JBossAuthorizationManager.getUserRoles(JBossAuthorizationManager.java:233)
    at org.jboss.security.plugins.auth.JaasSecurityManagerBase.getUserRoles(JaasSecurityManagerBase.java:457)
    at org.jboss.security.plugins.JaasSecurityManager.getUserRoles(JaasSecurityManager.java:208)
    at org.jboss.web.tomcat.security.JBossWebRealm.getCachingPrincipal(JBossWebRealm.java:669)
    at org.jboss.web.tomcat.security.JBossWebRealm.authenticate(JBossWebRealm.java:409)
    at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:181)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:662)

JBOSS の JBossAuthorizationManager のメソッド getRolesAsSet のコードは次のとおりです。 //プライベート メソッド

private HashSet<Principal> getRolesAsSet(RoleGroup roles)
    {
       HashSet<Principal> userRoles = null;
       if( roles != null )
       {
          userRoles = new HashSet<Principal>();
          List<Role> rolesList = roles.getRoles();
          for(Role r: rolesList)
          {
             userRoles.add(new SimplePrincipal(r.getRoleName()));
          } 
       }
       return userRoles;
    } 

私が知っているように (そしてメソッドでいくつかの簡単なテストを既に行っています)、いくつかのスレッドが RoleGroup "ロール" のロールを追加または削除すると同時に、roleList の反復子が呼び出されると、上記のように ConcurrentModificationException が発生します。

これはJBOSSのバグだと思います。これを回避するために JBOSS で何らかの設定を行うことができるかどうかはわかりません。私のJBOSSサーバーのバージョンは「jboss-5.1.0.GA」です

アドバイスをお願いします。ありがとう。

4

0 に答える 0