You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2013/11/01 18:41:42 UTC

svn commit: r1537998 - in /ofbiz/branches/release13.07: ./ framework/base/src/org/ofbiz/base/container/ framework/catalina/src/org/ofbiz/catalina/container/ framework/common/servicedef/ framework/common/webcommon/includes/ framework/service/config/ fra...

Author: jleroux
Date: Fri Nov  1 17:41:41 2013
New Revision: 1537998

URL: http://svn.apache.org/r1537998
Log:
"Applied fix from trunk for revision: 1537996" 
------------------------------------------------------------------------
r1537996 | jleroux | 2013-11-01 18:40:51 +0100 (ven. 01 nov. 2013) | 2 lignes

Fixes a bug reported by  Eric Kingston  at "Sales/Purchase Quote product id auto complete malfunction" https://issues.apache.org/jira/browse/OFBIZ-5379

------------------------------------------------------------------------


Modified:
    ofbiz/branches/release13.07/   (props changed)
    ofbiz/branches/release13.07/build.xml
    ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/ClassLoaderContainer.java
    ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java
    ofbiz/branches/release13.07/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
    ofbiz/branches/release13.07/framework/common/servicedef/services_test.xml
    ofbiz/branches/release13.07/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl
    ofbiz/branches/release13.07/framework/service/config/serviceengine.xml
    ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceEngine.java
    ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceLocation.java
    ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/engine/XMLRPCClientEngine.java
    ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/rmi/RmiServiceContainer.java
    ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/test/XmlRpcTests.java
    ofbiz/branches/release13.07/framework/start/src/org/ofbiz/base/start/Config.java

Propchange: ofbiz/branches/release13.07/
------------------------------------------------------------------------------
  Merged /ofbiz/trunk:r1533839,1537996

Modified: ofbiz/branches/release13.07/build.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/build.xml?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/build.xml (original)
+++ ofbiz/branches/release13.07/build.xml Fri Nov  1 17:41:41 2013
@@ -408,11 +408,13 @@ under the License.
     <!-- ================================================================== -->
 
     <target name="start"
-            description="Start OFBiz">
+            description="Start OFBiz (use -Dportoffset=portNumber to shift all ports with the portNumber value)">
         <java jar="ofbiz.jar" fork="true">
             <jvmarg value="${memory.initial.param}"/>
             <jvmarg value="${memory.max.param}"/>
             <jvmarg value="${memory.maxpermsize.param}"/>
+            <arg value="start"/>
+            <arg value="-portoffset=${portoffset}"/>
         </java>
     </target>
     <target name="start-batch"
@@ -436,21 +438,23 @@ under the License.
         </java>
     </target>
     <target name="start-pos"
-            description="Start OFBiz POS (Point of sale)">
+            description="Start OFBiz POS (Point of sale). Use -Dportoffset=portNumber to shift all ports with the portNumber value.">
         <java jar="ofbiz.jar" fork="true">
             <jvmarg value="${memory.initial.param}"/>
             <jvmarg value="${memory.max.param}"/>
             <jvmarg value="${memory.maxpermsize.param}"/>
             <arg value="pos"/>
+          <arg value="-portoffset=${portoffset}"/>
         </java>
     </target>
     <target name="start-both"
-            description="Start OFBiz in both Web and POS (Point of sale) modes">
+            description="Start OFBiz in both Web and POS (Point of sale) modes. Use -Dportoffset=portNumber to shift all ports with the portNumber value.">
         <java jar="ofbiz.jar" fork="true">
             <jvmarg value="${memory.initial.param}"/>
             <jvmarg value="${memory.max.param}"/>
             <jvmarg value="${memory.maxpermsize.param}"/>
             <arg value="both"/>
+            <arg value="-portoffset=${portoffset}"/>
         </java>
     </target>
     <target name="stop"

Modified: ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/ClassLoaderContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/ClassLoaderContainer.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/ClassLoaderContainer.java (original)
+++ ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/ClassLoaderContainer.java Fri Nov  1 17:41:41 2013
@@ -18,11 +18,11 @@
  *******************************************************************************/
 package org.ofbiz.base.container;
 
+import java.net.URL;
+
+import org.ofbiz.base.start.Classpath;
 import org.ofbiz.base.util.CachedClassLoader;
 import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.start.Classpath;
-
-import java.net.URL;
 
 /**
  * ClassLoader Container; Created a CachedClassLoader for use by all following containers
@@ -32,6 +32,7 @@ public class ClassLoaderContainer implem
 
     public static final String module = ClassLoaderContainer.class.getName();
     protected static CachedClassLoader cl = null;
+    public static Integer portOffset = 0;
     private String name;
 
     @Override
@@ -46,6 +47,34 @@ public class ClassLoaderContainer implem
         }
 
         cl = new CachedClassLoader(new URL[0], parent);
+        
+        if (args != null) {
+            for (String argument : args) {
+                // arguments can prefix w/ a '-'. Just strip them off
+                if (argument.startsWith("-")) {
+                    int subIdx = 1;
+                    if (argument.startsWith("--")) {
+                        subIdx = 2;
+                    }
+                    argument = argument.substring(subIdx);
+                }
+
+                // parse the arguments
+                if (argument.indexOf("=") != -1) {
+                    String argumentName = argument.substring(0, argument.indexOf("="));
+                    String argumentVal = argument.substring(argument.indexOf("=") + 1);
+
+                    if ("portoffset".equalsIgnoreCase(argumentName) && !"${portoffset}".equals(argumentVal)) {
+                        try {
+                            ClassLoaderContainer.portOffset = Integer.valueOf(argumentVal);
+                        } catch (NumberFormatException e) {
+                            e.printStackTrace();
+                        }
+                    }
+                }
+            }
+        }
+        
         Thread.currentThread().setContextClassLoader(cl);
         Debug.logInfo("CachedClassLoader created", module);
     }

Modified: ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java (original)
+++ ofbiz/branches/release13.07/framework/base/src/org/ofbiz/base/container/NamingServiceContainer.java Fri Nov  1 17:41:41 2013
@@ -57,9 +57,9 @@ public class NamingServiceContainer impl
         ContainerConfig.Container.Property port = cfg.getProperty("port");
         if (port.value != null) {
             try {
-                this.namingPort = Integer.parseInt(port.value);
+                this.namingPort = Integer.parseInt(port.value) + ClassLoaderContainer.portOffset;
             } catch (Exception e) {
-                throw new ContainerException("Invalid port defined in container [naming-container] configuration; not a valid int");
+                throw new ContainerException("Invalid port defined in container [naming-container] configuration or as portOffset; not a valid int");
             }
         }
 

Modified: ofbiz/branches/release13.07/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java (original)
+++ ofbiz/branches/release13.07/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java Fri Nov  1 17:41:41 2013
@@ -246,6 +246,8 @@ public class CatalinaContainer implement
 
         for (Connector con: tomcat.getService().findConnectors()) {
             ProtocolHandler ph = con.getProtocolHandler();
+            int port = con.getPort();
+            con.setAttribute("port", port);
             if (ph instanceof Http11Protocol) {
                 Http11Protocol hph = (Http11Protocol) ph;
                 Debug.logInfo("Connector " + hph.getName() + " @ " + hph.getPort() + " - " +
@@ -483,7 +485,8 @@ public class CatalinaContainer implement
         // need some standard properties
         String protocol = ContainerConfig.getPropertyValue(connectorProp, "protocol", "HTTP/1.1");
         String address = ContainerConfig.getPropertyValue(connectorProp, "address", "0.0.0.0");
-        int port = ContainerConfig.getPropertyValue(connectorProp, "port", 0);
+        int port = ContainerConfig.getPropertyValue(connectorProp, "port", 0) + ClassLoaderContainer.portOffset;
+        
         boolean secure = ContainerConfig.getPropertyValue(connectorProp, "secure", false);
         if (protocol.toLowerCase().startsWith("ajp")) {
             protocol = "ajp";
@@ -543,8 +546,12 @@ public class CatalinaContainer implement
 
             try {
                 for (ContainerConfig.Container.Property prop: connectorProp.properties.values()) {
-                    connector.setProperty(prop.name, prop.value);
-                    //connector.setAttribute(prop.name, prop.value);
+                    if ("port".equals(prop.name)) { 
+                        connector.setProperty(prop.name, "" + port);
+                    } else {
+                        connector.setProperty(prop.name, prop.value);
+                        //connector.setAttribute(prop.name, prop.value);
+                    }
                 }
 
                 if (connectorProp.properties.containsKey("URIEncoding")) {

Modified: ofbiz/branches/release13.07/framework/common/servicedef/services_test.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/servicedef/services_test.xml?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/common/servicedef/services_test.xml (original)
+++ ofbiz/branches/release13.07/framework/common/servicedef/services_test.xml Fri Nov  1 17:41:41 2013
@@ -72,21 +72,18 @@ under the License.
 
     <service name="groupTest" engine="group" location="testGroup" invoke=""/>
 
-    <service name="testHttp" engine="http"
-            location="http://localhost:8080/webtools/control/httpService" invoke="testScv">
+    <service name="testHttp" engine="http" location="main-http" invoke="testScv">
         <description>HTTP service wrapper around the test service</description>
         <attribute name="message" type="String" mode="IN" optional="true"/>
         <attribute name="resp" type="String" mode="OUT"/>
     </service>
 
-    <service name="testSoap" engine="soap" export="true"
-            location="http://localhost:8080/webtools/control/SOAPService" invoke="testSOAPScv">
+    <service name="testSoap" engine="soap" export="true" location="main-soap" invoke="testSOAPScv">
         <description>SOAP service; calls the OFBiz test SOAP service</description>
         <implements service="testSOAPScv"/>
     </service>
     
-    <service name="testSoapSimple" engine="soap" export="true"
-            location="http://localhost:8080/webtools/control/SOAPService" invoke="testScv">
+    <service name="testSoapSimple" engine="soap" export="true" location="main-soap" invoke="testScv">
         <description>simple SOAP service; calls the OFBiz test service</description>
         <implements service="testScv"/>
     </service>

Modified: ofbiz/branches/release13.07/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl (original)
+++ ofbiz/branches/release13.07/framework/common/webcommon/includes/ajaxAutocompleteOptions.ftl Fri Nov  1 17:41:41 2013
@@ -48,7 +48,7 @@ var autocomp = [
                   <#if (key == context.returnField)>
                       <#assign returnField = field/>
                   <#else>
-                      <#assign displayString = displayString + StringUtil.wrapString(field) + " ">
+                      <#assign displayString = displayString + StringUtil.wrapString(field?string) + " ">
                   </#if>
               </#if>
             </#list>

Modified: ofbiz/branches/release13.07/framework/service/config/serviceengine.xml
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/config/serviceengine.xml?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/config/serviceengine.xml (original)
+++ ofbiz/branches/release13.07/framework/service/config/serviceengine.xml Fri Nov  1 17:41:41 2013
@@ -59,9 +59,8 @@ under the License.
         <engine name="jms" class="org.ofbiz.service.jms.JmsServiceEngine"/>
         <engine name="rmi" class="org.ofbiz.service.rmi.RmiServiceEngine"/>
         <engine name="soap" class="org.ofbiz.service.engine.SOAPClientEngine"/>
-        <!-- The engine xml-rpc-local is only used by a test service and for
-             this reason it is configured to run on port 8080 (see rmi-dispatcher in service/ofbiz-component.xml);
-             in order to use this in OFBiz change the port accordingly (for demo the default value is 8080)
+        <!-- The engine xml-rpc-local is only used by a test service and for this reason it is configured to run on port 8080.
+             In order to use this in OFBiz change the port accordingly (for demo the default value is 8080)
         -->
         <engine name="xml-rpc-local" class="org.ofbiz.service.engine.XMLRPCClientEngine">
             <parameter name="url" value="http://localhost:8080/webtools/control/xmlrpc"/>
@@ -71,7 +70,8 @@ under the License.
 
         <service-location name="main-rmi" location="rmi://localhost:1099/RMIDispatcher"/>
         <service-location name="main-http" location="http://localhost:8080/webtools/control/httpService"/>
-
+        <service-location name="main-soap" location="http://localhost:8080/webtools/control/SOAPService"/>
+        
         <service-location name="entity-sync-rmi" location="rmi://localhost:1099/RMIDispatcher"/>
         <service-location name="entity-sync-http" location="http://localhost:8080/webtools/control/httpService"/>
 

Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceEngine.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceEngine.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceEngine.java (original)
+++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceEngine.java Fri Nov  1 17:41:41 2013
@@ -24,6 +24,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.lang.ThreadSafe;
 import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.service.config.ServiceConfigException;
@@ -88,6 +89,16 @@ public final class ServiceEngine {
             for (Element serviceLocationElement : serviceLocationElementList) {
                 serviceLocations.add(new ServiceLocation(serviceLocationElement));
             }
+            for (ServiceLocation serviceLocation : serviceLocations) {
+                String location = serviceLocation.getLocation();
+                if (location.contains("localhost") && ClassLoaderContainer.portOffset != 0) {
+                    Integer port = 1099 + ClassLoaderContainer.portOffset; 
+                    location = location.replace("1099", port.toString());
+                    port = 8080 + ClassLoaderContainer.portOffset; 
+                    location = location.replace("8080", port.toString());
+                    serviceLocation.setLocation(location);
+                }                    
+            }
             this.serviceLocations = Collections.unmodifiableList(serviceLocations);
         }
         List<? extends Element> notificationGroupElementList = UtilXml.childElementList(engineElement, "notification-group");

Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceLocation.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceLocation.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceLocation.java (original)
+++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/config/model/ServiceLocation.java Fri Nov  1 17:41:41 2013
@@ -28,7 +28,7 @@ import org.w3c.dom.Element;
 @ThreadSafe
 public final class ServiceLocation {
 
-    private final String location;
+    private String location;
     private final String name;
 
     ServiceLocation(Element serviceLocationElement) throws ServiceConfigException {
@@ -48,6 +48,10 @@ public final class ServiceLocation {
         return location;
     }
 
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
     public String getName() {
         return name;
     }

Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/engine/XMLRPCClientEngine.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/engine/XMLRPCClientEngine.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/engine/XMLRPCClientEngine.java (original)
+++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/engine/XMLRPCClientEngine.java Fri Nov  1 17:41:41 2013
@@ -28,6 +28,7 @@ import javolution.util.FastMap;
 import org.apache.xmlrpc.XmlRpcException;
 import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
 import org.ofbiz.base.config.GenericConfigException;
+import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilMisc;
@@ -90,6 +91,10 @@ public class XMLRPCClientEngine extends 
         String keyAlias  = null;
         try {
             url = ServiceConfigUtil.getEngineParameter(engine, "url");
+            if (ClassLoaderContainer.portOffset != 0) {
+                Integer port = 8080 + ClassLoaderContainer.portOffset; 
+                url = url.replace("8080", port.toString());
+            }
             login = ServiceConfigUtil.getEngineParameter(engine, "login");
             password = ServiceConfigUtil.getEngineParameter(engine, "password");
             keyStoreComponent = ServiceConfigUtil.getEngineParameter(engine, "keyStoreComponent");

Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/rmi/RmiServiceContainer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/rmi/RmiServiceContainer.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/rmi/RmiServiceContainer.java (original)
+++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/rmi/RmiServiceContainer.java Fri Nov  1 17:41:41 2013
@@ -26,6 +26,7 @@ import java.rmi.server.RMIServerSocketFa
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
+import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.container.Container;
 import org.ofbiz.base.container.ContainerConfig;
 import org.ofbiz.base.container.ContainerException;
@@ -80,6 +81,11 @@ public class RmiServiceContainer impleme
         String useCtx = initialCtxProp == null || initialCtxProp.value == null ? "false" : initialCtxProp.value;
         String host = lookupHostProp == null || lookupHostProp.value == null ? "localhost" : lookupHostProp.value;
         String port = lookupPortProp == null || lookupPortProp.value == null ? "1099" : lookupPortProp.value;
+        if (ClassLoaderContainer.portOffset != 0) {
+            Integer portValue = Integer.valueOf(port);
+            portValue += ClassLoaderContainer.portOffset;
+            port = portValue.toString();
+        }                
         String keystore = ContainerConfig.getPropertyValue(cfg, "ssl-keystore", null);
         String ksType = ContainerConfig.getPropertyValue(cfg, "ssl-keystore-type", "JKS");
         String ksPass = ContainerConfig.getPropertyValue(cfg, "ssl-keystore-pass", null);

Modified: ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/test/XmlRpcTests.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/test/XmlRpcTests.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/test/XmlRpcTests.java (original)
+++ ofbiz/branches/release13.07/framework/service/src/org/ofbiz/service/test/XmlRpcTests.java Fri Nov  1 17:41:41 2013
@@ -23,6 +23,7 @@ import java.util.Locale;
 import java.util.Map;
 
 import org.apache.xmlrpc.client.XmlRpcClient;
+import org.ofbiz.base.container.ClassLoaderContainer;
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
@@ -37,10 +38,14 @@ public class XmlRpcTests extends Abstrac
 
     public static final String module = XmlRpcTests.class.getName();
     public static final String resource = "ServiceErrorUiLabels";
-    public static final String url = "http://localhost:8080/webtools/control/xmlrpc";
+    public static String url = "http://localhost:8080/webtools/control/xmlrpc";
 
     public XmlRpcTests(String name) {
         super(name);
+        if (ClassLoaderContainer.portOffset != 0) {
+            Integer port = 8080 + ClassLoaderContainer.portOffset; 
+            url = url.replace("8080", port.toString());
+        }
     }
 
     /**

Modified: ofbiz/branches/release13.07/framework/start/src/org/ofbiz/base/start/Config.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release13.07/framework/start/src/org/ofbiz/base/start/Config.java?rev=1537998&r1=1537997&r2=1537998&view=diff
==============================================================================
--- ofbiz/branches/release13.07/framework/start/src/org/ofbiz/base/start/Config.java (original)
+++ ofbiz/branches/release13.07/framework/start/src/org/ofbiz/base/start/Config.java Fri Nov  1 17:41:41 2013
@@ -57,7 +57,7 @@ public class Config {
         String firstArg = args.length > 0 ? args[0] : "";
         String configFileName = getConfigFileName(firstArg);
         Config result = new Config();
-        result.readConfig(configFileName);
+        result.readConfig(configFileName, args);
         return result;
     }
 
@@ -283,7 +283,7 @@ public class Config {
         }
     }
 
-    public void readConfig(String config) throws IOException {
+    public void readConfig(String config, String[] args) throws IOException {
         // check the java_version
         String javaVersion = System.getProperty("java.version");
         String javaVendor = System.getProperty("java.vendor");
@@ -352,6 +352,14 @@ public class Config {
         // parse the port number
         try {
             adminPort = Integer.parseInt(adminPortStr);
+            if (args.length > 0) {
+                for (String arg : args) {
+                    if (arg.toLowerCase().contains("portoffset=")) {
+                        adminPort = adminPort != 0 ? adminPort : 10523; // This is necessary because the ASF machines don't allow ports 1 to 3, see  INFRA-6790
+                        adminPort += Integer.parseInt(arg.split("=")[1]);
+                    }
+                }
+            }
         } catch (Exception e) {
             adminPort = 0;
         }
@@ -396,16 +404,16 @@ public class Config {
         // set the default locale
         String localeString = props.getProperty("ofbiz.locale.default");
         if (localeString != null && localeString.length() > 0) {
-            String args[] = localeString.split("_");
-            switch (args.length) {
+            String locales[] = localeString.split("_");
+            switch (locales.length) {
                 case 1:
-                    Locale.setDefault(new Locale(args[0]));
+                    Locale.setDefault(new Locale(locales[0]));
                     break;
                 case 2:
-                    Locale.setDefault(new Locale(args[0], args[1]));
+                    Locale.setDefault(new Locale(locales[0], locales[1]));
                     break;
                 case 3:
-                    Locale.setDefault(new Locale(args[0], args[1], args[2]));
+                    Locale.setDefault(new Locale(locales[0], locales[1], args[2]));
             }
             System.setProperty("user.language", localeString);
         }