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