User: stark
Date: 01/01/23 18:51:43
Modified: src/main/org/jboss/security/plugins JaasSecurityManager.java
Log:
Need to synchronize on the LoginContext during the construction of a
LoginContext because the load of the login config file is not thread safe.
Revision Changes Path
1.2 +16 -11
jboss/src/main/org/jboss/security/plugins/JaasSecurityManager.java
Index: JaasSecurityManager.java
===================================================================
RCS file:
/products/cvs/ejboss/jboss/src/main/org/jboss/security/plugins/JaasSecurityManager.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JaasSecurityManager.java 2001/01/10 01:24:11 1.1
+++ JaasSecurityManager.java 2001/01/24 02:51:43 1.2
@@ -152,19 +152,24 @@
Principal beanPrincipal;
try {
- lc = new LoginContext(beanName, new CallbackHandler() {
- public void handle(Callback[] callbacks) throws
UnsupportedCallbackException {
- for (int i = 0; i < callbacks.length; i++) {
- if (callbacks[i] instanceof NameCallback) {
- ((NameCallback) callbacks[i]).setName(userName);
- } else if (callbacks[i] instanceof PasswordCallback) {
- ((PasswordCallback) callbacks[i]).setPassword(password);
- } else {
- throw new UnsupportedCallbackException(callbacks[i],
"Unrecognized Callback");
+ synchronized( LoginContext.class )
+ { /* Need to synchronize on the LoginContext because the load of
+ is not thread safe.
+ */
+ lc = new LoginContext(beanName, new CallbackHandler() {
+ public void handle(Callback[] callbacks) throws
UnsupportedCallbackException {
+ for (int i = 0; i < callbacks.length; i++) {
+ if (callbacks[i] instanceof NameCallback) {
+ ((NameCallback) callbacks[i]).setName(userName);
+ } else if (callbacks[i] instanceof PasswordCallback) {
+ ((PasswordCallback)
callbacks[i]).setPassword(password);
+ } else {
+ throw new
UnsupportedCallbackException(callbacks[i], "Unrecognized Callback");
+ }
}
}
- }
- });
+ });
+ }
lc.login();
_passwords.put(principal, password);
subj = lc.getSubject();