I could really use some help. So I have created my own realm that extends the JNDIRealm, you can see that class further down. I also created the LDAPMessageFormat class. So I put these classes into a jar, which I put into server/lib folder in tomcat. In my server.xml instead of using the className for the org.apache....JNDIRealm, I put in the name of my realm. When I startup tomcat, I get this error,
ServerLifecycleLister: Can't create mbean for realm [EMAIL PROTECTED] Does anyone know how to fix this problem? I would greatly appreciate any help. In case you are wondering, all the realm should do in addition to the JNDIRealm is to fix the bug, http://nagoya.apache.org/bugzilla/show_bug.cgi?id=16541. Many thanks in advance! Jessica public class StrykerJNDIRealm extends JNDIRealm { /** * Set the message format pattern for selecting users in this Realm. * * @param userSearch The new user search pattern */ public void setUserSearch(String userSearch) { System.out.println("in StrykerJNDI realm"); this.userSearch = userSearch; if (userSearch == null) userSearchFormat = null; else userSearchFormat = new LDAPMessageFormat(userSearch); } } public class LDAPMessageFormat extends MessageFormat { /** * @param pattern */ public LDAPMessageFormat(String pattern) { super(pattern); } public String format(String[] pattern) { String format = format((Object)pattern); return filterEncode(format); } /** * Put the <code>filter</code> into the proper form. LDAP servers require a ',' within an attribute * to be encoded by a '\'. It further requires a '\' to encode a '\' when using a search filter. * * @param String filter The <code>filter</code> to be encoded */ public String filterEncode(String filter) { int backslash = filter.indexOf('\\'); int nextSlash = 1; int equal = 0; int comma = 0; boolean firstTime = true; String charAfterBack = filter.substring(backslash + 1, backslash + 2); while (nextSlash > 0 && backslash > 0) { // Section 4 of http://rfc.sunsite.dk/rfc/rfc2253.html states // // "Implementations MUST allow a value to be surrounded by quote ('"' // ASCII 34) characters, which are not part of the value. Inside the // quoted value, the following characters can occur without any // escaping: // ',', '=', '+', '<', '>', '#' and ';' " // // So if none of these characters are currently being escaped return original filter if ((charAfterBack.compareTo(",")) != 0 && (charAfterBack.compareTo("=")) != 0 && (charAfterBack.compareTo("+")) != 0 && (charAfterBack.compareTo("<")) != 0 && (charAfterBack.compareTo(">")) != 0 && (charAfterBack.compareTo("#")) != 0 && (charAfterBack.compareTo("+")) != 0 && (charAfterBack.compareTo(";")) != 0) return filter; /*String before = filter.substring(0, backslash + 1); String after = filter.substring(backslash + 1); nextSlash = after.indexOf('\\'); backslash = backslash + nextSlash + 1; filter = before + "\\" + after;*/ // remove the backslash that is escaping String before = filter.substring(0, backslash); String after = filter.substring(backslash + 1); nextSlash = after.indexOf('\\'); backslash = backslash + nextSlash + 1; //find where to put the quotes around //beginning of quotes after the objectname = attribute = ..., attribute=..., if (firstTime) { equal = before.indexOf('='); equal = (before.substring(equal + 1)).indexOf('=') + equal + 1; firstTime = false; } else equal = before.indexOf('='); //end of quotes before comma separating attributes //making sure not to grab the comma that is being escaped comma = (after.substring(1)).indexOf(','); if (comma > 0 && equal > 0) filter = before.substring(0, equal + 1) + "\"" + before.substring(equal + 1) + after.substring(0, comma + 1) + "\"" + after.substring(comma + 1); } return filter; } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]