By default, it shouldn't be retrieving the roles at every method call, it is supposed to be caching them. I have a custom login module that assigns roles based on a different database schema, and I've noticed that when I update my schema and authenticate with the same user, I get the previous role-set.
Plus, I've seen them refer to caching the authentication information to avoid precisely the problem you're having. Check your JMX console, look for the following:
Under that, check to make sure that:
AuthenticationCacheJndiName is set to