svn commit: r646349 - in /ofbiz/trunk/framework: appserver/ appserver/src/org/ofbiz/appservers/ appserver/templates/wasce2/ base/src/base/org/ofbiz/base/util/string/ webapp/src/org/ofbiz/webapp/control/ webtools/webapp/webtools/WEB-INF/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r646349 - in /ofbiz/trunk/framework: appserver/ appserver/src/org/ofbiz/appservers/ appserver/templates/wasce2/ base/src/base/org/ofbiz/base/util/string/ webapp/src/org/ofbiz/webapp/control/ webtools/webapp/webtools/WEB-INF/

jleroux@apache.org
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>