de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Copyright (c) 2008 Sun Microsystems Inc. All Rights Reserved
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * The contents of this file are subject to the terms
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * of the Common Development and Distribution License
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * (the License). You may not use this file except in
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * compliance with the License.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * You can obtain a copy of the License at
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * https://opensso.dev.java.net/public/CDDLv1.0.html or
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * opensso/legal/CDDLv1.0.txt
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * See the License for the specific language governing
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * permission and limitations under the License.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * When distributing Covered Code, include this CDDL
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Header Notice in each file and include the License file
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * at opensso/legal/CDDLv1.0.txt.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * If applicable, add the following below the CDDL Header,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * with the fields enclosed by brackets [] replaced by
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * your own identifying information:
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * "Portions Copyrighted [year] [name of copyright owner]"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * $Id: ServerXMLBase.java,v 1.3 2008/12/16 00:15:34 leiming Exp $
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpackage com.sun.identity.agents.tools.websphere;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport java.util.ArrayList;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.configurator.IStateAccess;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.ConfigUtil;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.Debug;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.xml.XMLDocument;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperimport com.sun.identity.install.tools.util.xml.XMLElement;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper/**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Base class to configure server.xml. Both configure and unconfigure of
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * server.xml tasks use this class.
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeperpublic abstract class ServerXMLBase implements IConfigKeys, IConstants {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Common function to find the server:Process element with server instance
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * name
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public XMLElement findClassPathElement(XMLDocument serverXMLDoc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String serverInst, String procDefElemName) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement cpElem = null;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement elem =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper findServerProcElement(serverXMLDoc.getRootElement(),
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverInst);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (elem != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ArrayList list = elem.getNamedChildElements(procDefElemName);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((list != null) && (list.size() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement procDef = (XMLElement) list.get(0);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (procDef != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper list = procDef.getNamedChildElements(STR_JVM_ENTRIES);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((list != null) && (list.size() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmEntries = (XMLElement) list.get(0);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (jvmEntries != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper cpElem = jvmEntries;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ServerXMLBase.findClassPathElement() - failed to find "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " jvmEntries element for "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " server instance = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + serverInst);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.findClassPathElement() - failed to find "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " jvmEntries element for " + " server instance = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + serverInst, ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return cpElem;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * The element is in either of two locations - either its a root element or
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * its a immediate child of the root element. WAS changes the process:Server
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * element from immediate child to root element if any changes are made to
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * this XML file through console and there is only one instance of the
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * server in the file
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper private XMLElement findServerProcElement(XMLElement parent,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String attrValue) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement serverElem = null;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String elementName = parent.getName();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (elementName.equals(STR_PROC_SERVER)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.findServerProcElement() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "Root element is the server:Process element, name = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + parent.getName());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverElem = parent;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper serverElem =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper getElement(parent, STR_PROC_SERVER, STR_NAME_ATTR, attrValue);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (serverElem != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.findServerProcElement() = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "Found server:Process element as an immediate child");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return serverElem;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Generic function to get an element with attribute name and value
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public XMLElement getElement(XMLElement parent, String elementName,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String attrName, String attrValue) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement result = null;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ArrayList list = parent.getNamedChildElements(elementName);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (list != null && list.size() > 0) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper int count = list.size();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper for (int i = 0; i < count; i++) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement element = (XMLElement) list.get(i);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String value = element.getAttributeValue(attrName);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (value.equals(attrValue)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper result = element;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper break;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return result;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * To simplify the logic, the function first look classpath as an attr and
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * then as an element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean configureClasspath(XMLDocument doc, XMLElement jvmEntries,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // store in a temp variable for later processing
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String preAgentClasspath =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.getAttributeValue(STR_CLASSPATH_ATTR);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper int count = jvmEntries.removeAttribute(STR_CLASSPATH_ATTR);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (count >= 1) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "removed XML attr "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "classpath"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " from jvmEntries element : attr count = " + count);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((preAgentClasspath != null)
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper && (preAgentClasspath.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper stateAccess.put(STR_KEY_PRE_AGENT_CP, preAgentClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ServerXMLBase.configureClasspath() - storing pre "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "agent classpath in install state = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + preAgentClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String finalCp =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper appendAgentClassPath(preAgentClasspath, stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "updating classpath attr " + " with = " + finalCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.updateAttribute(STR_CLASSPATH_ATTR, finalCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // empty value
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String finalCp = createAgentClassPath(stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "updating classpath attr " + " with = " + finalCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.updateAttribute(STR_CLASSPATH_ATTR, finalCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // classpath not present as attribute but as element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureClasspath()- "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "attribute not present,"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "nothing to do : attr count = " + count);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = updateClasspathElement(doc, jvmEntries, stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " failed to classpath in attr" + " with ex : ", ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Element gets updated or added
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean updateClasspathElement(XMLDocument doc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmEntries, IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Blindly add a new element for agent classpath even if there are
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // n already existing classpath elements (n > 0)
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (jvmEntries != null) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = addNewClassPathElement(doc, jvmEntries, stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.updateClasspathElement() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " failed to update classpath in element" + " with ex : ",
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Generic function to add new classpath element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean addNewClassPathElement(XMLDocument doc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmEntries, IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper StringBuffer sb = new StringBuffer(256);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append("<").append(STR_CLASSPATH_ELEM).append(">").append(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper createAgentClassPath(stateAccess)).append("</").append(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_CLASSPATH_ELEM).append(">");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement classPathElem =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper doc.newElementFromXMLFragment(sb.toString());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.addNewClassPathElement() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "New classpath element added " +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper classPathElem.toXMLString());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.addChildElement(classPathElem);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.addNewClassPathElement() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "exception caught ", ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /**
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * To simplify the logic, will first look for classpath as attr and then as
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper *
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean unConfigureClasspath(XMLDocument doc, XMLElement jvmEntries,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Store in a temp variable for later processing
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String classpath = jvmEntries.getAttributeValue(STR_CLASSPATH_ATTR);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // We have to update as an attribute if this check is true
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((classpath != null) && (classpath.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureClasspath() - " + "trying "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "to update classpath as an attribute");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String preAgentCp =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper (String) stateAccess.get(STR_KEY_PRE_AGENT_CP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((preAgentCp != null) && (preAgentCp.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "setting pre agent classpath =" + preAgentCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.updateAttribute(STR_CLASSPATH_ATTR, preAgentCp);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "setting agent classpath to empty value");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.updateAttribute(STR_CLASSPATH_ATTR, "");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // unconfigure classpath as an element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ArrayList list =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmEntries.getNamedChildElements(STR_CLASSPATH_ELEM);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((list != null) && (list.size() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // WAS can create more than one classpath element
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper for (int i = 0; i < list.size(); i++) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement classpathElem = (XMLElement) list.get(i);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Be sure this is the one to update
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((classpathElem != null)
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper && (classpathElem.getValue() != null)
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper && (classpathElem.getValue().indexOf(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ConfigUtil.getLocaleDirPath()) >= 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "found "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "classpath element to unconfigure ="
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + classpathElem.toXMLString());
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // Never know if there was pre agent classpath as
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // attr before agent install
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String preAgentClasspath =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper (String) stateAccess.get(STR_KEY_PRE_AGENT_CP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if ((preAgentClasspath != null)
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper && (preAgentClasspath.length() > 0)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "classpath "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " element updated with = "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + preAgentClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper classpathElem.updateValue(preAgentClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } else {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // remove the element since no pre agent
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper // classpath found
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log(
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "classpath element deleted, no previous "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "entry found ");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper classpathElem.delete();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper break;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureClasspath() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " failed to classpath in attr" + " with ex : ", ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Function to append agent classpath to pre existing classpath
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public String appendAgentClassPath(String classpath,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper StringBuffer sb = new StringBuffer(classpath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String[] agentEntries = getAgentClasspathEntries(stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper int count = agentEntries.length;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper for (int i = 0; i < count; i++) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(STR_CLASSPATH_SEP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(agentEntries[i]);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String resultClasspath = sb.toString();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.appendAgentClassPath() Original "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "classpath: " + classpath + "\nResult classpath: "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + resultClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return resultClasspath;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Function to get agent classpath
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public String createAgentClassPath(IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper StringBuffer sb = new StringBuffer();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String[] agentEntries = getAgentClasspathEntries(stateAccess);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper int count = agentEntries.length;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper for (int i = 0; i < count; i++) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(agentEntries[i]);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (i < (count - 1)) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(STR_CLASSPATH_SEP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String resultClasspath = sb.toString();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.createAgentClassPath() " + "classpath: "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + resultClasspath);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return resultClasspath;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * Helper function to get agent classpath entries as an array of strings
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper private String[] getAgentClasspathEntries(IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper StringBuffer sb = new StringBuffer(256);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(ConfigUtil.getHomePath()).append(STR_FILE_SEP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(stateAccess.getInstanceName()).append(STR_FILE_SEP);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper sb.append(STR_CONFIG_DIR_LEAF);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String instanceConfigDirPath = sb.toString();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String localeDir = ConfigUtil.getLocaleDirPath();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String[] entries = new String[] { instanceConfigDirPath, localeDir };
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return entries;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * get new JVM options
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper private String getJVMOptions() {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return STR_IBM_ENC_JVM_OPTIONS_VALUE +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_LOG_COMPATMODE_OPTION +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_LOG_CONFIG_FILE_OPTION_PREFIX +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper ConfigUtil.getConfigDirPath() + STR_FILE_SEP +
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper STR_LOG_CONFIG_FILENAME;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * add IBM JVM options
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean configureJVMOptions(XMLDocument doc, XMLElement jvmOptions,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String preJVMOptionsValue =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions.getAttributeValue(STR_JVM_OPTIONS_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String newJVMOptionsValue = getJVMOptions();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (preJVMOptionsValue != null && preJVMOptionsValue.length() > 0) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (preJVMOptionsValue.indexOf(newJVMOptionsValue) >= 0) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " IBM JVM options already exist, "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " skip adding them.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper newJVMOptionsValue =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper preJVMOptionsValue + " " + newJVMOptionsValue;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions.removeAttribute(STR_JVM_OPTIONS_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "removed XML attribute JVM Options"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " from jvmEntries element.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper .updateAttribute(STR_JVM_OPTIONS_NAME, newJVMOptionsValue);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "added IBM JVM options.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.configureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " failed to add JVM options with exception : ", ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper /*
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper * remove IBM JVM options
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper */
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public boolean unConfigureJVMOptions(XMLDocument doc,
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper XMLElement jvmOptions, IStateAccess stateAccess) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper boolean status = true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper try {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String preJVMOptionsValue =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions.getAttributeValue(STR_JVM_OPTIONS_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper String newJVMOptionsValue = getJVMOptions();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper if (preJVMOptionsValue == null || preJVMOptionsValue.length() == 0
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper || preJVMOptionsValue.indexOf(newJVMOptionsValue) < 0) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " IBM JVM options do not exist, "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " skip removing them.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return true;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper newJVMOptionsValue =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper preJVMOptionsValue.replaceAll(newJVMOptionsValue, "").trim();
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions.removeAttribute(STR_JVM_OPTIONS_NAME);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "removed XML attribute JVM Options"
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " from jvmEntries element.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper jvmOptions
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper .updateAttribute(STR_JVM_OPTIONS_NAME, newJVMOptionsValue);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "removed IBM JVM options.");
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper } catch (Exception ex) {
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper Debug.log("ServerXMLBase.unConfigureJVMOptions() - "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + " failed to remove JVM options with exception : ", ex);
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper status = false;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper return status;
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper }
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_PROC_SERVER = "process:Server";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_NAME_ATTR = "name";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_JVM_ENTRIES = "jvmEntries";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_JVM_OPTIONS_NAME = "genericJvmArguments";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_IBM_ENC_JVM_OPTIONS_VALUE =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "-DamKeyGenDescriptor.provider=IBMJCE "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "-DamCryptoDescriptor.provider=IBMJCE "
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper + "-DamRandomGenProvider=IBMJCE ";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_LOG_COMPATMODE_OPTION =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "-DLOG_COMPATMODE=Off ";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_LOG_CONFIG_FILE_OPTION_PREFIX =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "-Djava.util.logging.config.file=";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper public static final String STR_LOG_CONFIG_FILENAME =
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper "OpenSSOAgentLogConfig.properties";
de47fb992b4c3414ac5b445d5cab364b0b8b8b43Mark de Reeper}