diff --git a/core/src/main/java/org/acegisecurity/util/FilterToBeanProxy.java b/core/src/main/java/org/acegisecurity/util/FilterToBeanProxy.java
index 6c427cdbbb..407516e07b 100644
--- a/core/src/main/java/org/acegisecurity/util/FilterToBeanProxy.java
+++ b/core/src/main/java/org/acegisecurity/util/FilterToBeanProxy.java
@@ -150,7 +150,12 @@ public class FilterToBeanProxy implements Filter {
.getServletContext());
}
- private void doInit() throws ServletException {
+ private synchronized void doInit() throws ServletException {
+ if (initialized) {
+ // already initialized, so don't re-initialize
+ return;
+ }
+
initialized = true;
String targetBean = filterConfig.getInitParameter("targetBean");
diff --git a/doc/xdocs/changes.xml b/doc/xdocs/changes.xml
index cb1e1b0fdd..09e11f5438 100644
--- a/doc/xdocs/changes.xml
+++ b/doc/xdocs/changes.xml
@@ -36,6 +36,7 @@
AbstractAuthenticationToken.getName() now returns username alone if UserDetails present
AuthorityGranter.grant now returns a java.util.Set of role names, instead of a single role name
JavaDoc improvements
+ Correct synchronization issue with FilterToBeanProxy initialization
Correct location of AuthenticationSimpleHttpInvokerRequestExecutor in clientContext.xml