FileDocCategorySizeDatePackage
RealmConfig.javaAPI DocGlassfish v2 API6269Fri May 04 22:35:22 BST 2007com.sun.enterprise.security

RealmConfig

public class RealmConfig extends Object
Process realm initial configuration.

This class contains S1AS-specific initialization code for Realms, used by RealmManager.

Fields Summary
private static Logger
logger
Constructors Summary
Methods Summary
public static voidcreateRealms(java.lang.String defaultRealm, AuthRealm[] realms)


    
           
    
        assert(realms != null);

        String goodRealm = null; // need at least one good realm

        for (int i=0; i < realms.length; i++) {

            AuthRealm aRealm = realms[i];
            String realmName = aRealm.getName();
            String realmClass = aRealm.getClassname();
            assert (realmName != null);
            assert (realmClass != null);

            try {
                ElementProperty[] realmProps =
                    aRealm.getElementProperty();

                Properties props = new Properties();

                for (int j=0; j < realmProps.length; j++) {
                    ElementProperty p = realmProps[j];
                    String name = p.getName();
                    String value = p.getValue();
                    props.setProperty(name, value);
                }
                Realm.instantiate(realmName, realmClass, props);

                logger.fine("Configured realm: " + realmName);

                if (goodRealm == null) {
                    goodRealm = realmName;
                }
            } catch (Exception e) {
                logger.log(Level.WARNING,
                           "realmconfig.disable", realmName);
                logger.log(Level.WARNING, "security.exception", e);
            }
        }

        // done loading all realms, check that there is at least one
        // in place and that default is installed, or change default
        // to the first one loaded (arbitrarily).

        if (goodRealm == null) {
            logger.severe("realmconfig.nogood");

        } else {
            try {
                Realm def = Realm.getInstance(defaultRealm);
                if (def == null) {
                    defaultRealm = goodRealm;
                }
            } catch (Exception e) {
                defaultRealm = goodRealm;
            }
            Realm.setDefaultRealm(defaultRealm);
            logger.fine("Default realm is set to: "+ defaultRealm);
        }
    
public static voidcreateRealms()
Load all configured realms from server.xml and initialize each one. Initialization is done by calling Realm.initialize() with its name, class and properties. The name of the default realm is also saved in the Realm class for reference during server operation.

This method superceeds the RI RealmManager.createRealms() method.

        
        try {
            logger.fine("Initializing configured realms.");
            
            ConfigContext configContext =
                ApplicationServer.getServerContext().getConfigContext();
            assert(configContext != null);

            Server configBean =
                ServerBeansFactory.getServerBean(configContext);
            assert(configBean != null);

            SecurityService securityBean =
                ServerBeansFactory.getSecurityServiceBean(configContext);
            assert(securityBean != null);

                                // grab default realm name
            String defaultRealm = securityBean.getDefaultRealm();

                                // get set of auth-realms and process each
            AuthRealm[] realms = securityBean.getAuthRealm();
            assert(realms != null);

            createRealms(defaultRealm, realms);
            
        } catch (Exception e) {
            logger.log(Level.SEVERE, "realmconfig.nogood", e);

        }