Я не в спящем режиме, но поскольку этот вопрос до сих пор остается без ответа: мы расширили стандартный класс шва Identity по нескольким причинам. Возможно, вы захотите расширить его, чтобы помочь вам кэшировать результаты.
Поскольку этот кэш имеет область действия сеанса, он будет иметь преимущество в том, что он будет перезагружен при повторном входе / выходе пользователя, но это зависит от ваших требований.
С уважением,
Александр.
/**
* Extended Identity to implement i.e. caching
*/
@Name("org.jboss.seam.security.identity")
@Scope(SESSION)
@Install(precedence = Install.APPLICATION)
@BypassInterceptors
@Startup
public class MyIdentity extends Identity {
// place a concurrent hash map here
@Override
public boolean hasPermission(Object name, String action) {
// either use the use the cached result in the hash map ...
// ... or call super.hasPermission() and cache the result
}
}