Hi all, this is part of my review of framework code to make it cleaner. I see a series of questionable changes in this commit, do you agree? Jacques, before I start my review please let me know if you want to do a first pass on it.
Thanks, Jacopo On Apr 9, 2008, at 3:51 PM, jler...@apache.org wrote: > Author: jleroux > Date: Wed Apr 9 06:51:39 2008 > New Revision: 646349 > > URL: http://svn.apache.org/viewvc?rev=646349&view=rev > Log: > New version which automatically deploys in application server see > http://docs.ofbiz.org/x/Ah for more informations > One base, one webapp, and the webtools web.xml files are slightly modified, > nothing harmful anyway > > Modified: > ofbiz/trunk/framework/appserver/ofbiz-component.xml > > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java > > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java > ofbiz/trunk/framework/appserver/templates/wasce2/README > ofbiz/trunk/framework/appserver/templates/wasce2/application.xml > ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml > > ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java > > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml > > Modified: ofbiz/trunk/framework/appserver/ofbiz-component.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/ofbiz-component.xml?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- ofbiz/trunk/framework/appserver/ofbiz-component.xml (original) > +++ ofbiz/trunk/framework/appserver/ofbiz-component.xml Wed Apr 9 06:51:39 > 2008 > @@ -23,4 +23,5 @@ > > xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> > <resource-loader name="main" type="component"/> > <classpath type="jar" location="build/lib/*"/> > + <classpath type="dir" location="config"/> > </ofbiz-component> > > Modified: > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java > (original) > +++ > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java > Wed Apr 9 06:51:39 2008 > @@ -19,23 +19,50 @@ > > package org.ofbiz.appservers; > > -import java.util.Map; > +import java.io.File; > +import java.io.FileInputStream; > +import java.io.FileNotFoundException; > +import java.io.FileWriter; > +import java.io.IOException; > +import java.io.InputStreamReader; > +import java.io.Reader; > +import java.io.StringWriter; > +import java.io.Writer; > import java.util.List; > -import java.util.ArrayList; > -import java.util.HashMap; > -import java.util.Iterator; > -import java.io.*; > +import java.util.Map; > + > +import javax.xml.parsers.DocumentBuilder; > +import javax.xml.parsers.DocumentBuilderFactory; > +import javax.xml.parsers.ParserConfigurationException; > +import javax.xml.transform.OutputKeys; > +import javax.xml.transform.Result; > +import javax.xml.transform.Source; > +import javax.xml.transform.Transformer; > +import javax.xml.transform.TransformerConfigurationException; > +import javax.xml.transform.TransformerException; > +import javax.xml.transform.TransformerFactory; > +import javax.xml.transform.TransformerFactoryConfigurationError; > +import javax.xml.transform.dom.DOMSource; > +import javax.xml.transform.stream.StreamResult; > > import javolution.util.FastList; > import javolution.util.FastMap; > > +import org.ofbiz.base.component.ComponentConfig; > +import org.ofbiz.base.component.ComponentConfig.WebappInfo; > import org.ofbiz.base.container.Container; > import org.ofbiz.base.container.ContainerException; > +import org.ofbiz.base.start.Classpath; > import org.ofbiz.base.util.Debug; > import org.ofbiz.base.util.UtilURL; > +import org.ofbiz.base.util.UtilProperties; > +import org.ofbiz.base.util.UtilValidate; > import org.ofbiz.base.util.template.FreeMarkerWorker; > -import org.ofbiz.base.start.Classpath; > -import org.ofbiz.base.component.ComponentConfig; > +import org.w3c.dom.Attr; > +import org.w3c.dom.Document; > +import org.w3c.dom.NamedNodeMap; > +import org.w3c.dom.Node; > +import org.xml.sax.SAXException; > > /** > * GenerateContainer - Generates Configuration Files For Application Servers > @@ -47,14 +74,15 @@ > > public static final String module = GenerateContainer.class.getName(); > public static final String source = "/framework/appserver/templates/"; > - public static final String target = "/setup/"; > - private boolean isGeronimo = false; > - > + public static String target = "/setup/"; > > protected String configFile = null; > protected String ofbizHome = null; > protected String args[] = null; > > + private boolean isGeronimo = false; > + private String geronimoHome = null; > + > /** > * @see org.ofbiz.base.container.Container#init(java.lang.String[], > java.lang.String) > */ > @@ -63,6 +91,10 @@ > this.configFile = configFile; > this.args = args; > this.isGeronimo = args[0].toLowerCase().contains("geronimo") || > args[0].toLowerCase().contains("wasce"); > + if (this.isGeronimo) { > + this.target="/META-INF/"; > + this.geronimoHome = UtilProperties.getPropertyValue("appserver", > "geronimoHome", null); > + } > } > > /** > @@ -86,30 +118,216 @@ > private void generateFiles() throws ContainerException { > File files[] = getTemplates(); > Map<String, Object> dataMap = buildDataMap(); > + > + String user = UtilProperties.getPropertyValue("appserver", "user", > "system"); > + String password = UtilProperties.getPropertyValue("appserver", > "password", "manager"); > + boolean offline = > UtilProperties.propertyValueEqualsIgnoreCase("appserver", "offline", "true"); > + boolean pauseInGeronimoScript = > UtilProperties.propertyValueEqualsIgnoreCase("appserver", > "pauseInGeronimoScript", "true"); > + int instancesNumber = (int) > UtilProperties.getPropertyNumber("appserver", "instancesNumber"); > + String instanceNumber = ""; > + > if (isGeronimo) { > - String serverType = args[0]; > - String geronimoHome = null; > - if (args.length > 2) { > - geronimoHome = args[2]; > - } > - GenerateGeronimoDeployment geronimoDeployment = new > GenerateGeronimoDeployment(); > - List classpathJars = geronimoDeployment.generate(serverType, > geronimoHome); > - if (classpathJars == null) { > - throw new ContainerException("Error in Geronimo deployment, > please check the log"); > + if (geronimoHome == null) { > + geronimoHome = System.getenv("GERONIMO_HOME"); > + if (geronimoHome == null) { > + Debug.logFatal("'GERONIMO_HOME' was not found in your > environment. Please set the location of Geronimo into a GERONIMO_HOME env var > or pass it as geronimoHome property in setup.properties file.", module); > + throw new ContainerException("Error in Geronimo > deployment, please check the log"); > + } > + File geronimoHomeDir = new File (geronimoHome); > + if (! (geronimoHomeDir.isDirectory())) { > + Debug.logFatal(geronimoHome + " does not exist or is not > a directoy. Please set the location of Geronimo into a GERONIMO_HOME env var > or pass it as geronimoHome property in setup.properties file.", module); > + throw new ContainerException("Error in Geronimo > deployment, please check the log"); > + } > } > - dataMap.put("classpathJars", classpathJars); > - } > > - //Debug.log("Using Data : " + dataMap, module); > - String applicationPrefix = ""; > - if (args.length > 3 && args[3].length() > 0) { > - applicationPrefix = args[3] + "-"; > - } > - dataMap.put("applicationPrefix", applicationPrefix); > - dataMap.put("pathSeparatorChar", File.pathSeparatorChar); > - for (File file: files) { > - if (isGeronimo && !(file.isDirectory() || file.isHidden() || > file.getName().equalsIgnoreCase("geronimo-web.xml"))) { > - parseTemplate(file, dataMap); > + for(int inst = 0; inst <= instancesNumber; inst++) { > + instanceNumber = (inst == 0 ? "" : inst).toString(); > + GenerateGeronimoDeployment geronimoDeployment = new > GenerateGeronimoDeployment(); > + List classpathJars = geronimoDeployment.generate(args[0], > geronimoHome, instanceNumber); > + if (classpathJars == null) { > + throw new ContainerException("Error in Geronimo > deployment, please check the log"); > + } > + dataMap.put("classpathJars", classpathJars); > + dataMap.put("pathSeparatorChar", File.pathSeparatorChar); > + dataMap.put("instanceNumber", instanceNumber); > + // if > (UtilValidate.isNotEmpty(instanceNumber)) { > + // List webApps = (List) > dataMap.get("webApps"); > + // for (Object webAppObject: webApps) { > + // WebappInfo webAppInfo = > (ComponentConfig.WebappInfo) webAppObject; > + // String webAppLocation = > webAppInfo.getLocation(); > + // String webXmlLocation = > webAppLocation + "/WEB-INF/web.xml"; > + // if > (isFileExistsAndCanWrite(webXmlLocation)) { > + // DocumentBuilderFactory > docFactory = DocumentBuilderFactory.newInstance(); > + // DocumentBuilder docBuilder = > null; > + // try { > + // docBuilder = > docFactory.newDocumentBuilder(); > + // } catch > (ParserConfigurationException e) { > + // throw new > ContainerException(e); > + // } > + // Document doc = null; > + // try { > + // doc = > docBuilder.parse(webXmlLocation); > + // } catch (SAXException e) { > + // throw new > ContainerException(e); > + // } catch (IOException e) { > + // throw new > ContainerException(e); > + // } > + // Node webApp = > doc.getFirstChild(); > + // Node contextParam = > doc.createElement("context-param"); > + // NamedNodeMap > contextParamAttributes = contextParam.getAttributes(); > + // > + // Attr paramName = > doc.createAttribute("param-name"); > + // > paramName.setValue("instanceNumber"); > + // > contextParamAttributes.setNamedItem(paramName); > + // > + // Attr paramValue = > doc.createAttribute("param-value"); > + // > paramValue.setValue(instanceNumber); > + // > contextParamAttributes.setNamedItem(paramValue); > + // // Node nodeToAppend = > doc.importNode(contextParam, true); this should not be needed > + // // > webApp.appendChild(nodeToAppend); > + // > + // // > webApp.appendChild(contextParam); this is the line needed but commented for > now > + // > + // Transformer transformer; > + // try { > + // transformer = > TransformerFactory.newInstance().newTransformer(); > + // } catch > (TransformerConfigurationException e) { > + // throw new > ContainerException(e); > + // } catch > (TransformerFactoryConfigurationError e) { > + // throw new > ContainerException(e); > + // } > + // > transformer.setOutputProperty(OutputKeys.INDENT, "yes"); > + // > + // StreamResult result = new > StreamResult(new StringWriter()); > + // DOMSource source = new > DOMSource(doc); > + // try { > + // > transformer.transform(source, result); > + // } catch (TransformerException > e) { > + // throw new > ContainerException(e); > + // } > + // String xmlString = > result.getWriter().toString(); > + // System.out.println(xmlString); > //TODO write to file using writeToXmlFile > + // break; // Only the 1st web.xml > file need to be modified > + // } else { > + // Debug.logInfo("Unable to > change the deployment descriptor : " + webXmlLocation + ". Maybe it does not > exist, or is in read only mode ?", module); > + // } > + // } > + // } > + > + //Debug.log("Using Data : " + dataMap, module); > + for (int i = 0; i < files.length; i++) { > + if (!(files[i].isDirectory() || files[i].isHidden() || > files[i].getName().equalsIgnoreCase("geronimo-web.xml"))) { > + parseTemplate(files[i], dataMap); > + } > + } > + > + String ofbizName = "ofbiz" + instanceNumber; > + String separator = File.separator; > + String geronimoBin = geronimoHome + separator + "bin"; > + File workingDir = new File(geronimoBin); > + ProcessBuilder pb = null; > + String command = null; > + > + if ("\\".equals(separator)) { //Windows > + if (offline) { > + command = "deploy --user " + user + " --password " > + password + " --offline undeploy " + ofbizName; > + } else { > + command = "deploy --user " + user + " --password " > + password + " undeploy " + ofbizName; > + } > + pb = new ProcessBuilder("cmd.exe", "/c", command); > + } else { // Linux > + if (offline) { > + command = workingDir + "/deploy.sh --user " + user + > " --password " + password + " --offline undeploy " + ofbizName; > + } else { > + command = workingDir + "/deploy.sh --user " + user > + " --password " + password + " undeploy " + ofbizName; > + } > + pb = new ProcessBuilder("sh", "-c", command); > + } > + > + if (pauseInGeronimoScript) { > + Map<String, String> env = pb.environment(); > + env.put("GERONIMO_BATCH_PAUSE", "on"); > + } > + pb.directory(workingDir); > + > + try { > + System.out.println("Currently undeploying " + ofbizName > + ", using : <<" + command + ">>, please wait ..."); > + pb.redirectErrorStream(true); > + Process p = pb.start(); > + java.io.InputStream is = p.getInputStream(); > + byte[] buf = new byte[2024]; > + int readLen = 0; > + while((readLen = is.read(buf,0,buf.length)) != -1) { > + if ("\\".equals(separator)) { //Windows > + System.out.print(new String(buf,0,readLen)); > + } else { > + System.out.println(new String(buf,0,readLen)); > > + } > + } > + is.close(); > + p.waitFor(); > + // System.out.println(p.waitFor()); > + // System.out.println("exit value" + > p.exitValue()); > + Debug.logInfo(ofbizName + " undeployment ended" , > module); > + } catch (IOException e) { > + throw new ContainerException(e); > + } catch (InterruptedException e) { > + throw new ContainerException(e); > + } > + > + if ("\\".equals(separator)) { //Windows > + if (offline) { > + command = "deploy --user " + user + " --password " > + password + " --offline deploy --inPlace " + ofbizHome; > + } else { > + command = "deploy --user " + user + " --password " > + password + " deploy --inPlace " + ofbizHome; > + } > + pb = new ProcessBuilder("cmd.exe", "/c", command); > + } else { // Linux > + if (offline) { > + command = workingDir + "/deploy.sh --user " + user + > " --password " + password + " --offline deploy --inPlace " + ofbizHome; > + } else { > + command = workingDir + "/deploy.sh --user " + user > + " --password " + password + " deploy --inPlace " + ofbizHome; > + } > + pb = new ProcessBuilder("sh", "-c", command); > + } > + > + if (pauseInGeronimoScript) { > + Map<String, String> env = pb.environment(); > + env.put("GERONIMO_BATCH_PAUSE", "on"); > + } > + pb.directory(workingDir); > + > + try { > + System.out.println("Currently deploying " + ofbizName + > ", using : <<" + command + ">>, please wait ..."); > + pb.redirectErrorStream(true); > + Process p = pb.start(); > + java.io.InputStream is = p.getInputStream(); > + byte[] buf = new byte[2024]; > + int readLen = 0; > + while((readLen = is.read(buf,0,buf.length)) != -1) { > + if ("\\".equals(separator)) { //Windows > + System.out.print(new String(buf,0,readLen)); > + } else { > + System.out.println(new String(buf,0,readLen)); > > + } > + } > + is.close(); > + p.waitFor(); > + // System.out.println(p.waitFor()); > + // System.out.println("exit value" + > p.exitValue()); > + Debug.logInfo(ofbizName + " deployment ended" , module); > + } catch (IOException e) { > + throw new ContainerException(e); > + } catch (InterruptedException e) { > + throw new ContainerException(e); > + } > + } > + } else { > + //Debug.log("Using Data : " + dataMap, module); > + for (int i = 0; i < files.length; i++) { > + if (!files[i].isDirectory() && !files[i].isHidden()) { > + parseTemplate(files[i], dataMap); > + } > } > } > } > @@ -158,6 +376,7 @@ > } > } > } > + > List[] lists = { jar, dir }; > return lists; > } > @@ -213,5 +432,28 @@ > } catch (IOException e) { > throw new ContainerException(e); > } > + } > + > + // This method writes a DOM document to a file > + public static void writeToXmlFile(Document doc, String filename) { > + try { > + // Prepare the DOM document for writing > + Source source = new DOMSource(doc); > + > + // Prepare the output file > + File file = new File(filename); > + Result result = new StreamResult(file); > + > + // Write the DOM document to the file > + Transformer xformer = > TransformerFactory.newInstance().newTransformer(); > + xformer.transform(source, result); > + } catch (TransformerConfigurationException e) { > + } catch (TransformerException e) { > + } > + } > + > + public boolean isFileExistsAndCanWrite(String fileName) { > + File f = new File(fileName); > + return f.exists() && f.canWrite(); > } > } > > Modified: > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java > (original) > +++ > ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateGeronimoDeployment.java > Wed Apr 9 06:51:39 2008 > @@ -52,18 +52,8 @@ > public static final String source = "/framework/appserver/templates/"; > > protected String geronimoRepository = null; > - protected String geronimoHome = null; > > - @SuppressWarnings("unchecked") > - public List<String> generate(String geronimoVersion, String > geronimoHome) { > - // Check environment for Geronimo Home > - if (geronimoHome == null) { > - geronimoHome = System.getenv("GERONIMO_HOME"); > - if (geronimoHome == null) { > - Debug.logFatal("'GERONIMO_HOME' was not found in your > environment. Please set the location of Geronimo into GERONIMO_HOME.", > module); > - return null; > - } > - } > + public List<String> generate(String geronimoVersion, String > geronimoHome, String instanceNumber) { > geronimoRepository = geronimoHome + "/repository"; > Debug.logInfo("The WASCE or Geronimo Repository is " + > geronimoRepository, module); > Classpath classPath = new > Classpath(System.getProperty("java.class.path")); > > Modified: ofbiz/trunk/framework/appserver/templates/wasce2/README > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/README?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- ofbiz/trunk/framework/appserver/templates/wasce2/README (original) > +++ ofbiz/trunk/framework/appserver/templates/wasce2/README Wed Apr 9 > 06:51:39 2008 > @@ -17,9 +17,10 @@ > under the License. > --> > > -Websphere Application Server Community Edition 2 Setup - 2008-03-31 - > Jacques Le Roux > +Websphere Application Server Community Edition (WASCE) 2 > +or Geronimo 2.0.3 Setup - 2008-04-08 - Jacques Le Roux > > -To use WASCE 2 with OFBiz 4.0 follow the following steps (all steps assume > Orion is already installed and working) > +To use OFBiz with WASCE 2 or Geronimo 2.0.3 follow the following steps (all > steps assume WASCE 2 or Geronimo 2.0.3 is already installed and working) > > ======================================================================================================================================================= > If you use WASCE, copy the 2 lines below in the setJavaOpts section > (Windows) or somewhere in the setEnv script you will find in GERONIMO_HOME/bin > @@ -33,13 +34,44 @@ > <#assign classpath = classpath + dir + pathSeparatorChar/> > </#list> > <#assign classpath = classpath?substring(0, classpath?length - 1)/> > + > +Windows > +------- > set JAVA_OPTS=-Dofbiz.home="${ofbizHome}" -Xms256M -Xmx512M > -XX:MaxPermSize=128M -Duser.language=en > set CLASSPATH=${classpath} > > +Linux > +----- > +Add this 2 lines after the > + elif [ "$1" = "run" ]; then > +line > + JAVA_OPTS="-Dofbiz.home="${ofbizHome}" -Xms256M -Xmx512M > -XX:MaxPermSize=128M -Duser.language=en" > + CLASSPATH="${classpath}" > +Don't forget to escape the inside quotes in ${ofbizHome}. > + > ======================================================================================================================================================= > - Change also this line of the geronimo script in the doneSetArgs section > (Windows) or somewhere in the Geronimo script. > + Change also this line of the geronimo script in the doneSetArgs section > (Windows) or somewhere in the geronimo script > ======================================================================================================================================================= > - > +Windows > +------- > %_EXECJAVA% %JAVA_OPTS% %GERONIMO_OPTS% %JAVA_AGENT_OPTS% > -Djava.ext.dirs="%GERONIMO_BASE%\lib\ext;%JRE_HOME%\lib\ext" > -Djava.endorsed.dirs="%GERONIMO_BASE%\lib\endorsed;%JRE_HOME%\lib\endorsed" > -Dorg.apache.geronimo.base.dir="%GERONIMO_BASE%" > -Djava.io.tmpdir="%GERONIMO_TMPDIR%" -jar %_JARFILE% %_LONG_OPT% > %CMD_LINE_ARGS% > to > %_EXECJAVA% %JAVA_OPTS% %GERONIMO_OPTS% %JAVA_AGENT_OPTS% > -Djava.ext.dirs="%GERONIMO_BASE%\lib\ext;%JRE_HOME%\lib\ext" > -Djava.endorsed.dirs="%GERONIMO_BASE%\lib\endorsed;%JRE_HOME%\lib\endorsed" > -Dorg.apache.geronimo.base.dir="%GERONIMO_BASE%" > -Djava.io.tmpdir="%GERONIMO_TMPDIR%" -cp .;%_JARFILE%;%CLASSPATH% %_LONG_OPT% > %CMD_LINE_ARGS% %MAINCLASS% > + > +Linux > +----- > +In the <<elif [ "$1" = "run" ]>> block > +Replace the line > + -jar "$GERONIMO_HOME"/bin/server.jar $LONG_OPT "$@" > +by > + -classpath ".":"$GERONIMO_HOME"/bin/server.jar:"$CLASSPATH" > org.apache.geronimo.cli.daemon.DaemonCLI $LONG_OPT "$@" > + > +======================================================================================================================================================= > + Windows only > + ------------ > + If you want to use OFBiz multi-instances in Geronimo or WASCE using you > might put "exit" as last line in the deploy script. > + Else, of course you may also type exit by hand.... > + > + Alternatively you may not put exit at the end of the deploy script, > + choose to not have pause in script and type "exit" yourself in the > command windows (actually I found later that it's an easier way) > +======================================================================================================================================================= > > Modified: ofbiz/trunk/framework/appserver/templates/wasce2/application.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/application.xml?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- ofbiz/trunk/framework/appserver/templates/wasce2/application.xml > (original) > +++ ofbiz/trunk/framework/appserver/templates/wasce2/application.xml Wed Apr > 9 06:51:39 2008 > @@ -29,36 +29,31 @@ > id="Application_ID" > version="5"> > > - <description>The Apache OFBiz Project</description> > - <display-name>OFBiz</display-name> > + <description>The Apache OFBiz Project this is instance > ${instanceNumber}</description> > + <display-name>OFBiz instance ${instanceNumber}</display-name> > > <#list webApps as webapp> > <#assign location = webapp.getLocation()?if_exists/> > - <#if location.contains("framework") && (location.contains("webtools") || > location.contains("images")) > - || location.contains("applications") > - || location.contains("specialpurpose") > - || location.contains("hot-deploy")> > - <#if location.contains("framework") && (location.contains("webtools") > || location.contains("images"))> > + <#assign origin = webapp.getLocation()?if_exists/> > + <#if location.contains("/framework/") && > (location.contains("/webtools/") || location.contains("/images/"))> > <#assign location = > location.substring(location.lastIndexOf("framework"))/> > </#if> > - <#if location.contains("applications")> > + <#if location.contains("/applications/")> > <#assign location = > location.substring(location.lastIndexOf("applications"))/> > </#if> > - <#if location.contains("specialpurpose")> > + <#if location.contains("/specialpurpose/")> > <#assign location = > location.substring(location.lastIndexOf("specialpurpose"))/> > </#if> > - <#if location.contains("hot-deploy") && !location.contains("images")> > + <#if location.contains("/hot-deploy/")> > <#assign location = > location.substring(location.lastIndexOf("hot-deploy"))/> > </#if> > - <#if !(location.contains("neogia") && location.contains("shipment")) > - && !(location.contains("hot-deploy") && location.contains("images"))> > - <module id="${applicationPrefix}${webapp.getName()}"> > + <#if location != origin> > + <module id="${webapp.getName()}${instanceNumber}"> > <web> > <web-uri>${location}/</web-uri> > - <context-root>${webapp.getContextRoot()}</context-root> > + > <context-root>${webapp.getContextRoot()}${instanceNumber}</context-root> > </web> > </module> > - </#if> > </#if> > </#list> > </application> > > Modified: > ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml > (original) > +++ ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml > Wed Apr 9 06:51:39 2008 > @@ -28,7 +28,7 @@ > <dep:environment> > <dep:moduleId> > <dep:groupId>org.ofbiz</dep:groupId> > - <dep:artifactId>${applicationPrefix}ofbiz</dep:artifactId> > + <dep:artifactId>ofbiz${instanceNumber}</dep:artifactId> > <dep:version>1.0</dep:version> > <dep:type>ear</dep:type> > </dep:moduleId> > @@ -51,31 +51,26 @@ > > <#list webApps as webapp> > <#assign location = webapp.getLocation()?if_exists/> > - <#if location.contains("framework") && > (location.contains("webtools") || location.contains("images")) > - || location.contains("applications") > - || location.contains("specialpurpose") > - || location.contains("hot-deploy")> > - <#if location.contains("framework") && > (location.contains("webtools") || location.contains("images"))> > + <#assign origin = webapp.getLocation()?if_exists/> > + <#if location.contains("/framework/") && > (location.contains("/webtools/") || location.contains("/images/"))> > <#assign location = > location.substring(location.lastIndexOf("framework"))/> > - </#if> > - <#if location.contains("applications")> > - <#assign location = > location.substring(location.lastIndexOf("applications"))/> > - </#if> > - <#if location.contains("specialpurpose")> > - <#assign location = > location.substring(location.lastIndexOf("specialpurpose"))/> > - </#if> > - <#if location.contains("hot-deploy") && > !location.contains("images")> > - <#assign location = > location.substring(location.lastIndexOf("hot-deploy"))/> > - </#if> > - <#if !(location.contains("neogia") && > location.contains("shipment")) > - && !(location.contains("hot-deploy") && > location.contains("images"))> > + </#if> > + <#if location.contains("/applications/")> > + <#assign location = > location.substring(location.lastIndexOf("applications"))/> > + </#if> > + <#if location.contains("/specialpurpose/")> > + <#assign location = > location.substring(location.lastIndexOf("specialpurpose"))/> > + </#if> > + <#if location.contains("/hot-deploy/")> > + <#assign location = > location.substring(location.lastIndexOf("hot-deploy"))/> > + </#if> > + <#if location != origin> > <module> > <web>${location}/</web> > <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2"> > - <context-root>${webapp.getContextRoot()}</context-root> > + > <context-root>${webapp.getContextRoot()}${instanceNumber}</context-root> > </web-app> > </module> > - </#if> > </#if> > </#list> > > > Modified: > ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java > (original) > +++ > ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/string/FlexibleStringExpander.java > Wed Apr 9 06:51:39 2008 > @@ -30,6 +30,7 @@ > import org.ofbiz.base.util.BshUtil; > import org.ofbiz.base.util.Debug; > import org.ofbiz.base.util.UtilDateTime; > +import org.ofbiz.base.util.UtilValidate; > import org.ofbiz.base.util.collections.FlexibleMapAccessor; > import org.ofbiz.base.util.UtilFormatOut; > import org.ofbiz.base.util.UtilMisc; > @@ -395,6 +396,11 @@ > targetBuffer.append(UtilFormatOut.formatCurrency(new > Double(envVal.toString()), currencyCode, locale)); > } else { > targetBuffer.append(envVal.toString()); > + } > + } else if (envName.equals("ofbiz.home")) { // This is only used > in case of Geronimo or WASCE using OFBiz multi-instances. It allows to > retrieve ofbiz.home value set in JVM env > + String ofbizHome = System.getProperty("ofbiz.home"); > + if (UtilValidate.isNotEmpty(ofbizHome)) { > + targetBuffer.append(ofbizHome); > } > } else { > Debug.logWarning("Could not find value in environment for the > name [" + envName + "], inserting nothing.", module); > > Modified: > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > (original) > +++ > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > Wed Apr 9 06:51:39 2008 > @@ -346,6 +346,15 @@ > if (Debug.infoOn()) Debug.logInfo("Adding web.xml context-param > to application attribute with name [" + initParamName + "] and value [" + > initParamValue + "]", module); > config.getServletContext().setAttribute(initParamName, > initParamValue); > } > + String GeronimoMultiOfbizInstances = (String) > config.getServletContext().getAttribute("GeronimoMultiOfbizInstances"); > + if (UtilValidate.isNotEmpty(GeronimoMultiOfbizInstances)) { > + String ofbizHome = System.getProperty("ofbiz.home"); > + if (GeronimoMultiOfbizInstances.equalsIgnoreCase("true") && > UtilValidate.isEmpty(ofbizHome)) { > + ofbizHome = System.getProperty("ofbiz.home"); // This is > only used in case of Geronimo or WASCE using OFBiz multi-instances. It allows > to retrieve ofbiz.home value set in JVM env > + System.out.println("Set OFBIZ_HOME to - " + ofbizHome); > + System.setProperty("ofbiz.home", ofbizHome); > + } > + } > } > > protected String getServerId() { > > Modified: ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml?rev=646349&r1=646348&r2=646349&view=diff > ============================================================================== > --- ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml (original) > +++ ofbiz/trunk/framework/webtools/webapp/webtools/WEB-INF/web.xml Wed Apr 9 > 06:51:39 2008 > @@ -149,4 +149,11 @@ > </user-data-constraint> > </security-constraint> > --> > + > + <context-param> > + <param-name>GeronimoMultiOfbizInstances</param-name> > + <param-value>true</param-value> > + <description>This is only used in case of Geronimo or WASCE using OFBiz > multi-instances. It allows to retrieve ofbiz.home value set in JVM > env</description> > + </context-param> > + > </web-app> > >