Ejb3PolicyConfigurationFactorypublic abstract class Ejb3PolicyConfigurationFactory extends Object
Fields Summary |
---|
private static final Logger | log | private static final String | FACTORY_PROPThe standard name of the system property specifying the JACC
PolicyConfigurationFactory implementation class name. | private static final String | DEFAULT_FACTORY_NAMEThe default PolicyConfigurationFactory implementation | private static javax.security.jacc.PolicyConfigurationFactory | factoryThe loaded PolicyConfigurationFactory provider |
Methods Summary |
---|
public abstract javax.security.jacc.PolicyConfiguration | getPolicyConfiguration(java.lang.String contextID, boolean remove)This method is used to obtain an instance of the provider specific class
that implements the PolicyConfiguration interface that corresponds to the
identified policy context within the provider. The methods of the
PolicyConfiguration interface are used to define the policy statements of
the identified policy context.
If at the time of the call, the identified policy context does not exist
in the provider, then the policy context will be created in the provider
and the Object that implements the context's PolicyConfiguration Interface
will be returned. If the state of the identified context is "deleted" or
"inService" it will be transitioned to the "open" state as a result of the
call. The states in the lifecycle of a policy context are defined by the
PolicyConfiguration interface.
For a given value of policy context identifier, this method must always
return the same instance of PolicyConfiguration and there must be at most
one actual instance of a PolicyConfiguration with a given policy context
identifier (during a process context).
To preserve the invariant that there be at most one PolicyConfiguration
object for a given policy context, it may be necessary for this method to
be thread safe.
| public static javax.security.jacc.PolicyConfigurationFactory | getPolicyConfigurationFactory()This static method uses the javax.security.jacc.PolicyConfigurationFactory.provider
system property to create a provider factory implementation. The provider
class must provide a public no-arg ctor.
// Validate the caller permission
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPermission(new SecurityPermission("setPolicy"));
if (factory == null)
{
String factoryName = null;
Class clazz = null;
try
{
LoadAction action = new LoadAction();
try
{
clazz = (Class) AccessController.doPrivileged(action);
factoryName = action.getName();
}
catch (PrivilegedActionException ex)
{
ex.printStackTrace();
factoryName = action.getName();
Exception e = ex.getException();
if (e instanceof ClassNotFoundException)
throw (ClassNotFoundException) e;
else
throw new PolicyContextException("Failure during load of class: "+action.getName(), e);
}
factory = (PolicyConfigurationFactory) clazz.newInstance();
}
catch (ClassNotFoundException e)
{
String msg = "Failed to find PolicyConfigurationFactory : " + factoryName;
throw new ClassNotFoundException(msg, e);
}
catch (IllegalAccessException e)
{
String msg = "Unable to access class : " + factoryName;
throw new PolicyContextException(msg, e);
}
catch (InstantiationException e)
{
String msg = "Failed to create instance of: " + factoryName;
throw new PolicyContextException(msg, e);
}
catch (ClassCastException e)
{
StringBuffer msg = new StringBuffer(factoryName + " Is not a PolicyConfigurationFactory, ");
msg.append("PCF.class.CL: "+Ejb3PolicyConfigurationFactory.class.getClassLoader());
msg.append("\nPCF.class.CS: "+Ejb3PolicyConfigurationFactory.class.getProtectionDomain().getCodeSource());
msg.append("\nPCF.class.hash: "+System.identityHashCode(Ejb3PolicyConfigurationFactory.class));
msg.append("\nclazz.CL: "+clazz.getClassLoader());
msg.append("\nclazz.CS: "+clazz.getProtectionDomain().getCodeSource());
msg.append("\nclazz.super.CL: "+clazz.getSuperclass().getClassLoader());
msg.append("\nclazz.super.CS: "+clazz.getSuperclass().getProtectionDomain().getCodeSource());
msg.append("\nclazz.super.hash: "+System.identityHashCode(clazz.getSuperclass()));
ClassCastException cce = new ClassCastException(msg.toString());
cce.initCause(e);
}
}
return factory;
| public abstract boolean | inService(java.lang.String contextID)This method determines if the identified policy context exists with state
"inService" in the Policy provider associated with the factory.
|
|