--- webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/SaveJNDIRealmAction.java (revision 345868) +++ webapps/admin/WEB-INF/classes/org/apache/webapp/admin/realm/SaveJNDIRealmAction.java (working copy) @@ -65,6 +65,9 @@ */ private String createStandardRealmTypes[] = { "java.lang.String", // parent + "java.lang.String", //Connection URL + "java.lang.String", //Connection name + "java.lang.String", //Connection password }; @@ -164,8 +167,11 @@ TomcatTreeBuilder.getMBeanFactory(); // Create a new StandardRealm object - values = new String[1]; + values = new String[4]; values[0] = parent; + values[1] = rform.getConnectionURL(); + values[2] = rform.getConnectionName(); + values[3] = rform.getConnectionPassword(); operation = "createJNDIRealm"; rObjectName = (String) mBServer.invoke(fname, operation, --- catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java (revision 345868) +++ catalina/src/share/org/apache/catalina/mbeans/MBeanFactory.java (working copy) @@ -42,6 +42,7 @@ import org.apache.catalina.realm.DataSourceRealm; import org.apache.catalina.realm.JDBCRealm; import org.apache.catalina.realm.JNDIRealm; +import org.apache.catalina.realm.JAASRealm; import org.apache.catalina.realm.MemoryRealm; import org.apache.catalina.realm.UserDatabaseRealm; import org.apache.catalina.session.StandardManager; @@ -404,12 +405,52 @@ * * @exception Exception if an MBean cannot be created or registered */ - public String createJNDIRealm(String parent) + public String createJNDIRealm(String parent,String connectionURL,String connectionName,String connectionPassword) throws Exception { // Create a new JNDIRealm instance JNDIRealm realm = new JNDIRealm(); + realm.setConnectionURL(connectionURL); + realm.setConnectionName(connectionName); + realm.setConnectionPassword(connectionPassword); + // Add the new instance to its parent component + ObjectName pname = new ObjectName(parent); + ContainerBase containerBase = getParentContainerFromParent(pname); + // Add the new instance to its parent component + containerBase.setRealm(realm); + // Return the corresponding MBean name + ObjectName oname = realm.getObjectName(); + if (oname != null) { + return (oname.toString()); + } else { + return null; + } + + + } + + /** + * Create a new JAAS Realm. + * + * @param parent MBean Name of the associated parent component + * + * @exception Exception if an MBean cannot be created or registered + */ + public String createJAASRealm(String parent,String appName,String userClassNames,String roleClassNames,String useContextClassLoader) + throws Exception { + + // Create a new JAASRealm instance + JAASRealm realm = new JAASRealm(); + realm.setAppName(appName); + realm.setUserClassNames(userClassNames); + realm.setRoleClassNames(roleClassNames); + if("true".equals(useContextClassLoader)||"TRUE".equals(useContextClassLoader)){ + realm.setUseContextClassLoader(true); + } + else{ + realm.setUseContextClassLoader(false); + } // Add the new instance to its parent component ObjectName pname = new ObjectName(parent); ContainerBase containerBase = getParentContainerFromParent(pname); @@ -427,7 +468,6 @@ } - /** * Create a new Memory Realm. * --- catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml (revision 345868) +++ catalina/src/share/org/apache/catalina/mbeans/mbeans-descriptors.xml (working copy) @@ -119,8 +119,37 @@ returnType="java.lang.String"> + type="java.lang.String"/> + + + + + + + + + +