Here’s a script that I used to configure a Shared Library in WebSphere 6.1 using Jython.
from string import whitespace sharedLibName = "APPLICATION_SHARED_LIB" # See if library already exists. cellId = AdminConfig.list("Cell") sharedLibraryId = AdminConfig.list("Library") if (sharedLibraryId.find(sharedLibName) < 0): # Library does not exist. print "Creating Shared Library" params = []; params.append(["name", sharedLibName]); sharedLibraryId = AdminConfig.create("Library", cellId, params); # Find PARENT_LAST class loader print "Finding Class Loader" parentLastClassLoader = None; classLoaders = AdminConfig.list("Classloader") classLoaders = classLoaders.split(); for classLoader in classLoaders: mode = AdminConfig.showAttribute(classLoader, "mode"); if (mode == "PARENT_LAST"): parentLastClassLoader = classLoader; print "Found Parent Last Class Loader: " + classLoader; # Create a class loader if (parentLastClassLoader == None): print "Creating Class Loader"; applicationServer = AdminConfig.list("ApplicationServer") params = []; params.append(["mode", "PARENT_LAST"]); parentLastClassLoader = AdminConfig.create("Classloader", applicationServer, params) print "Created Parent Last Class Loader: " + parentLastClassLoader; # Add the shared library to the class loader. params = []; params.append(["libraryName", sharedLibName]); params.append(["sharedClassloader", "true"]); AdminConfig.create("LibraryRef", parentLastClassLoader, params) print "Using Shared Library: " + sharedLibraryId; # Set a WAS variable to point to SharedLib print "Update the Variable Map" variableMap = AdminConfig.list("VariableMap").split(); # Find the variable map for the server. for v in variableMap: if (v.find("/server") >= 0): variableMap = v print "Updating Variable Map: " + variableMap params = []; params.append(["symbolicName", "APP_SHARED_LIB_PATH"]); params.append(["value", "${APP_PROJECTS_ROOT}/SharedLib/MyApp"]); params.append(["description", "Root folder containing shared libs"]); AdminConfig.create("VariableSubstitutionEntry", variableMap, params); # Add all of our shared libs to Shared Library print "Adding Classpath"; classpath = [] classpath.append("${APP_SHARED_LIB_PATH}/activation.jar") classpath.append("${APP_SHARED_LIB_PATH}/commons-lang-2.1.jar") classpath.append("${APP_SHARED_LIB_PATH}/commons-logging.jar") classpath.append("${APP_SHARED_LIB_PATH}/dom4j-1.6.1.jar") classpath.append("${APP_SHARED_LIB_PATH}/smtp.jar") classpathStr = "" for c in classpath: if len(classpathStr) > 0: classpathStr += ";"; classpathStr += c; params = []; params.append(["classPath", classpathStr]); AdminConfig.modify(sharedLibraryId, params); # Save Config at the end. AdminConfig.save();
Fantastic piece of code. The class path configuration with semicolon solved my problems. Cheers! MC