Author: jleroux
Date: Wed Apr 23 10:31:16 2008
New Revision: 650946
URL: http://svn.apache.org/viewvc?rev=650946&view=rev
Log:
If present GERONIMO_HOME env var is no longer overloaded by
appserver.properties geronimoHome value (It was done the wrong side since env
vars are platform dependent for sure and not properties)
Better handling of processes ends (added finally to try blocks)
Redeployment is now possible
General refactoring of GenerateContainer.java
POS related JARs are no longer put in geronimo repository
Modified:
ofbiz/trunk/framework/appserver/config/appserver.properties
ofbiz/trunk/framework/appserver/src/org/ofbiz/appservers/GenerateContainer.java
ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml
Modified: ofbiz/trunk/framework/appserver/config/appserver.properties
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/appserver/config/appserver.properties?rev=650946&r1=650945&r2=650946&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/config/appserver.properties (original)
+++ ofbiz/trunk/framework/appserver/config/appserver.properties Wed Apr 23
10:31:16 2008
@@ -21,31 +21,36 @@
######## Default WASCE/Geronimo Settings. Refer to the Guidelines in the OFBiz
documentation : http://docs.ofbiz.org/x/Ah ########
### Path to geronimo home (in other words, application server location).
# You may also use a GERONIMO_HOME env var, in such case let commented out here
-#Linux
+### Linux
#geronimoHome=/home/jacques/IBM/WebSphere/AppServerCommunityEdition
#geronimoHome=/home/jacques/Apache Software
Foundation/geronimo-tomcat6-jee5-2.0.3
-# Windows *** Note that under Windows you must use / here in place of \ (or
put \\) ***
+### Windows *** Note that under Windows you must use / here in place of \ (or
put \\) ***
#geronimoHome=C:/Program Files/IBM/WebSphere/AppServerCommunityEdition
-#geronimoHome=C:/Program Files/Apache Software
Foundation/geronimo-tomcat6-jee5-2.0.3
+# Beware for geronimo-2.0.3 snapshot, under Windows some files have a path
longer than 256 chars. Hence I put it directly under c:
+#geronimoHome=C:/geronimo-tomcat6-jee5-2.0.3
### user login
user=system
# password
password=manager
-### Server is offline or not (should be ofline the 1st time you deploy since
you need to copy after lines from META-INF/REAME)
-offline=true
+### Server is offline or not. Should be offline the 1st time you deploy since
you need to copy after lines from META-INF/REAME hence by default true
+offline=ftrue
### Pause in deployment script ?
-pauseInGeronimoScript=false
+pauseInGeronimoScript=ftrue
-### host
-#host=192.168.2.7
-
-### port
-#port=1099
+### Undeploy/Deploy (useful when offline) or Redeploy (implies that the server
is running)
+redeploy=ftrue
### The number (instancesNumber) given here is in origin 0. Hence 0 means one
instance.
# In other word you give the n-1 number of instances (n being the number of
instances).
# For instance 2 means 3 instances deployed. # This to allow the default
instance which is not numbered
instancesNumber=0
+
+### host
+#host=192.168.2.7
+#geronimoHostHome=C/Program Files/IBM/WebSphere/AppServerCommunityEdition
+
+### port
+#port=31099
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=650946&r1=650945&r2=650946&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 23 10:31:16 2008
@@ -87,13 +87,16 @@
* @see org.ofbiz.base.container.Container#init(java.lang.String[],
java.lang.String)
*/
public void init(String[] args, String configFile) {
- this.ofbizHome = System.getProperty("ofbiz.home");
- this.configFile = configFile;
+ ofbizHome = System.getProperty("ofbiz.home");
+ 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);
+ isGeronimo = args[0].toLowerCase().contains("geronimo") ||
args[0].toLowerCase().contains("wasce");
+ if (isGeronimo) {
+ target="/META-INF/";
+ geronimoHome = System.getenv("GERONIMO_HOME");
+ if (geronimoHome == null) {
+ geronimoHome = UtilProperties.getPropertyValue("appserver",
"geronimoHome", null);
+ }
}
}
@@ -101,7 +104,7 @@
* @see org.ofbiz.base.container.Container#start()
*/
public boolean start() throws ContainerException {
- this.generateFiles();
+ generateFiles();
System.exit(1);
return true;
}
@@ -116,36 +119,55 @@
}
private void generateFiles() throws ContainerException {
+ if (isGeronimo) {
+ 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 as a geronimoHome property in appserver.properties file.", module);
+ throw new ContainerException("Error in Geronimo deployment,
please check the log");
+ }
+ }
File files[] = getTemplates();
Map<String, Object> dataMap = buildDataMap();
String user = UtilProperties.getPropertyValue("appserver", "user",
"system");
String password = UtilProperties.getPropertyValue("appserver",
"password", "manager");
- int instancesNumber = (int)
UtilProperties.getPropertyNumber("appserver", "instancesNumber");
+
boolean offline =
UtilProperties.propertyValueEqualsIgnoreCase("appserver", "offline", "true");
+ boolean redeploy =
UtilProperties.propertyValueEqualsIgnoreCase("appserver", "redeploy", "true");
+
+ String geronimoHostHome = UtilProperties.getPropertyValue("appserver",
"geronimoHostHome", null);
String host = UtilProperties.getPropertyValue("appserver", "host", "");
String port = UtilProperties.getPropertyValue("appserver", "port", "");
boolean pauseInGeronimoScript =
UtilProperties.propertyValueEqualsIgnoreCase("appserver",
"pauseInGeronimoScript", "true");
+
+ int instancesNumber = (int)
UtilProperties.getPropertyNumber("appserver", "instancesNumber");
String instanceNumber = "";
if (isGeronimo) {
- 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 as a geronimoHome property in setup.properties file.", module);
+ 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 as a geronimoHome property in appserver.properties file.", module);
+ throw new ContainerException("Error in Geronimo deployment,
please check the log");
+ }
+
+ if (UtilValidate.isNotEmpty(host) &&
UtilValidate.isNotEmpty(geronimoHostHome)) {
+ geronimoHomeDir = new File ("//" + host + "/" +
geronimoHostHome);
+ if (!(geronimoHomeDir.isDirectory())) {
+ Debug.logFatal("*** " + geronimoHostHome + " does not
exist or is not a directoy. Please set the location of Geronimo on host as a
geronimoHostHome property in appserver.properties file.", module);
throw new ContainerException("Error in Geronimo
deployment, please check the log");
}
+ } else {
+ geronimoHostHome = geronimoHome;
}
- 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
as a geronimoHome property in setup.properties file.", module);
+
+ if (redeploy && offline) {
+ Debug.logFatal("*** You can't use redeploy with a server
offline.", module);
throw new ContainerException("Error in Geronimo
deployment, please check the log");
}
for(int inst = 0; inst <= instancesNumber; inst++) {
instanceNumber = (inst == 0 ? "" : inst).toString();
GenerateGeronimoDeployment geronimoDeployment = new
GenerateGeronimoDeployment();
- List classpathJars = geronimoDeployment.generate(args[0],
geronimoHome, instanceNumber);
+ List classpathJars = geronimoDeployment.generate(args[0],
geronimoHostHome, instanceNumber);
if (classpathJars == null) {
throw new ContainerException("Error in Geronimo
deployment, please check the log");
}
@@ -225,45 +247,48 @@
String ofbizName = "ofbiz" + instanceNumber;
String separator = File.separator;
- String geronimoBin = geronimoHome + separator + "bin";
- File workingDir = new File(geronimoBin);
- ProcessBuilder pb = null;
+ File workingDir = new File(geronimoHome + separator + "bin");
+ ProcessBuilder processBuilder = null;
+ Process process = null;
String command = null;
String commandCommonPart = null;
- String commandCommonHostPart = "";
+ if ("\\".equals(separator)) { //Windows
+ commandCommonPart = "deploy --user " + user + "
--password " + password;
+ } else { // Linux
+ commandCommonPart = workingDir + "/deploy.sh --user " +
user + " --password " + password;
+ }
if (UtilValidate.isNotEmpty(host)) {
- commandCommonHostPart = " --host" + host +
(UtilValidate.isNotEmpty(port) ? port : "");
+ commandCommonPart += " --host " + host +
(UtilValidate.isNotEmpty(port) ? " --port " + port : "");
}
+ if (!redeploy) {
if ("\\".equals(separator)) { //Windows
- commandCommonPart = "deploy --user " + user + "
--password " + password + commandCommonHostPart;
if (offline) {
command = commandCommonPart + " --offline undeploy " +
ofbizName;
} else {
command = commandCommonPart + " undeploy " + ofbizName;
}
- pb = new ProcessBuilder("cmd.exe", "/c", command);
+ processBuilder = new ProcessBuilder("cmd.exe", "/c",
command);
} else { // Linux
- commandCommonPart = workingDir + "/deploy.sh --user " +
user + " --password " + password + commandCommonHostPart;
if (offline) {
command = commandCommonPart + " --offline undeploy " +
ofbizName;
} else {
command = commandCommonPart + " undeploy " + ofbizName;
}
- pb = new ProcessBuilder("sh", "-c", command);
+ processBuilder = new ProcessBuilder("sh", "-c",
command);
}
if (pauseInGeronimoScript) {
- Map<String, String> env = pb.environment();
+ Map<String, String> env = processBuilder.environment();
env.put("GERONIMO_BATCH_PAUSE", "on");
}
- pb.directory(workingDir);
+ processBuilder.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();
+ processBuilder.redirectErrorStream(true);
+ process = processBuilder.start();
+ java.io.InputStream is = process.getInputStream();
byte[] buf = new byte[2024];
int readLen = 0;
while((readLen = is.read(buf,0,buf.length)) != -1) {
@@ -274,43 +299,57 @@
}
}
is.close();
- p.waitFor();
- // System.out.println(p.waitFor());
- // System.out.println("exit value" +
p.exitValue());
+ process.waitFor();
+ // System.out.println(process.waitFor());
+ // System.out.println("exit value" +
process.exitValue());
Debug.logInfo(ofbizName + " undeployment ended" , module);
} catch (IOException e) {
throw new ContainerException(e);
} catch (InterruptedException e) {
throw new ContainerException(e);
+ } finally {
+ process.destroy();
+ }
}
+ if (redeploy) {
+ if ("\\".equals(separator)) { //Windows
+ command = commandCommonPart + " redeploy " + ofbizHome;
+ processBuilder = new ProcessBuilder("cmd.exe", "/c",
command);
+ } else { // Linux
+ command = commandCommonPart + " redeploy " + ofbizHome;
+ processBuilder = new ProcessBuilder("sh", "-c",
command);
+ }
+
+ } else {
if ("\\".equals(separator)) { //Windows
if (offline) {
- command = "deploy --user " + user + " --password " +
password + " --offline deploy --inPlace " + ofbizHome;
+ command = commandCommonPart + " --offline deploy
--inPlace " + ofbizHome;
} else {
- command = "deploy --user " + user + " --password " +
password + " deploy --inPlace " + ofbizHome;
+ command = commandCommonPart + " deploy --inPlace "
+ ofbizHome;
}
- pb = new ProcessBuilder("cmd.exe", "/c", command);
+ processBuilder = new ProcessBuilder("cmd.exe", "/c",
command);
} else { // Linux
if (offline) {
- command = workingDir + "/deploy.sh --user " + user +
" --password " + password + " --offline deploy --inPlace " + ofbizHome;
+ command = commandCommonPart + " --offline deploy
--inPlace " + ofbizHome;
} else {
- command = workingDir + "/deploy.sh --user " + user +
" --password " + password + " deploy --inPlace " + ofbizHome;
+ command = commandCommonPart + " deploy --inPlace "
+ ofbizHome;
+ }
+ processBuilder = new ProcessBuilder("sh", "-c",
command);
}
- pb = new ProcessBuilder("sh", "-c", command);
}
if (pauseInGeronimoScript) {
- Map<String, String> env = pb.environment();
+ Map<String, String> env = processBuilder.environment();
env.put("GERONIMO_BATCH_PAUSE", "on");
}
- pb.directory(workingDir);
+ processBuilder.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();
+ processBuilder.redirectErrorStream(true);
+ process = processBuilder.start();
+ java.io.InputStream is = process.getInputStream();
byte[] buf = new byte[2024];
int readLen = 0;
while((readLen = is.read(buf,0,buf.length)) != -1) {
@@ -321,14 +360,16 @@
}
}
is.close();
- p.waitFor();
- // System.out.println(p.waitFor());
- // System.out.println("exit value" +
p.exitValue());
+ process.waitFor();
+// System.out.println(process.waitFor());
+// System.out.println("exit value" + process.exitValue());
Debug.logInfo(ofbizName + " deployment ended" , module);
} catch (IOException e) {
throw new ContainerException(e);
} catch (InterruptedException e) {
throw new ContainerException(e);
+ } finally {
+ process.destroy();
}
}
} else {
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=650946&r1=650945&r2=650946&view=diff
==============================================================================
--- ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml
(original)
+++ ofbiz/trunk/framework/appserver/templates/wasce2/geronimo-application.xml
Wed Apr 23 10:31:16 2008
@@ -58,7 +58,7 @@
<#if location.contains("/applications/")>
<#assign location =
location.substring(location.lastIndexOf("applications"))/>
</#if>
- <#if location.contains("/specialpurpose/")>
+ <#if location.contains("/specialpurpose/") &&
!location.contains("/pos/")>
<#assign location =
location.substring(location.lastIndexOf("specialpurpose"))/>
</#if>
<#if location.contains("/hot-deploy/")>