Another commit (somewhat related) that will need to be reviewed is

Author: jleroux
Date: Tue Apr 29 15:35:32 2008
New Revision: 652177

URL: http://svn.apache.org/viewvc?rev=652177&view=rev
Log:
This add the possiblity to run RMI services under WASCE or Geronimo.
There is only one small drawback : so far if you restart the OFBiz EAR from the 
console you loose the RMI Dispatcher. However stopping and starting (even after 
a restart) is OK. I guess it's the same for the commande redeploy, I will test 
tomorrow.

Modified:
   ofbiz/trunk/framework/appserver/config/appserver.properties
   ofbiz/trunk/framework/appserver/templates/wasce2/README
   
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/container/ContainerLoader.java
   ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java

Regards,

Jacopo

On Jun 25, 2012, at 5:40 PM, Jacopo Cappellato wrote:

> 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>
>> 
>> 
> 

Reply via email to