any volonteer to do the same for windows setclasspath.bat script (look the TODO)?
the idea is "if java 7 then set endorsed dir to endorsed7 otherwise set endorsed dir to endorsed" if it can help here how to get the javaminor version on win (i didn't find how to get rid of the temp file): java -version 2> tmp_tomee_start.txt set /p java_version= < tmp_tomee_start.txt del tmp_tomee_start.txt set java_version=%java_version:~16,1% echo %java_version% - Romain ---------- Forwarded message ---------- From: <[email protected]> Date: 2012/7/14 Subject: svn commit: r1361502 - in /openejb/trunk/openejb: container/openejb-core/src/main/java/org/apache/openejb/config/ tomee/tomee-common/src/main/java/org/apache/tomee/installer/ To: [email protected] Author: rmannibucau Date: Sat Jul 14 09:43:03 2012 New Revision: 1361502 URL: http://svn.apache.org/viewvc?rev=1361502&view=rev Log: TOMEE-281 starting to manage java 7 version, still some work to do for win scripts Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java?rev=1361502&r1=1361501&r2=1361502&view=diff ============================================================================== --- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java (original) +++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/config/RemoteServer.java Sat Jul 14 09:43:03 2012 @@ -114,9 +114,10 @@ public class RemoteServer { } File home = getHome(); + String javaVersion = System.getProperty("java.version"); if (verbose) { System.out.println("OPENEJB_HOME = "+ home.getAbsolutePath()); - String systemInfo = "Java " + System.getProperty("java.version") + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version"); + String systemInfo = "Java " + javaVersion + "; " + System.getProperty("os.name") + "/" + System.getProperty("os.version"); System.out.println("SYSTEM_INFO = "+systemInfo); } @@ -175,6 +176,9 @@ public class RemoteServer { File endorsed = new File(home, "endorsed"); + if (javaVersion != null && javaVersion.startsWith("1.7.")) { // java 7 + endorsed = new File(home, "endorsed7"); // doesn't exist but just to ignore it with j7 + } File temp = new File(home, "temp"); List<String> argsList = new ArrayList<String>() {}; Modified: openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java?rev=1361502&r1=1361501&r2=1361502&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java (original) +++ openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Installer.java Sat Jul 14 09:43:03 2012 @@ -205,7 +205,9 @@ public class Installer { private void addJavaeeInEndorsed() { File endorsed = new File(paths.getCatalinaHomeDir(), "endorsed"); - endorsed.mkdir(); + if (!endorsed.mkdir()) { + alerts.addWarning("can't create endorsed directory"); + } copyClasses(paths.getJavaEEAPIJar(), new File(endorsed, "annotation-api.jar"), "javax/annotation/.*"); @@ -220,6 +222,46 @@ public class Installer { alerts.addError("can't copy " + paths.getJAXBImpl().getPath() + " to " + endorsed.getPath() + "/jaxb-impl.jar"); } } + + // java 7 doesn't need endorsed folder + String setClasspathSh = Installers.readAll(paths.getSetClasspathSh(), alerts); + if (setClasspathSh != null && !setClasspathSh.contains("any endorsed lib for java 7")) { + if (Installers.backup(paths.getSetClasspathSh(), alerts)) { + // add our magic bits to the catalina sh file + final String newSetClasspathSh = setClasspathSh.replace("JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed", + "java_version=`java -version 2>&1 | grep version`\n" + + " if [[ $java_version =~ 1.7.* ]]; then\n" + + " # it doesn't exist but not important since we don't need any endorsed lib for java 7\n" + + " JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed7\n" + + " else\n" + + " JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed\n" + + " fi\n"); + if (Installers.writeAll(paths.getSetClasspathSh(), newSetClasspathSh, alerts)) { + alerts.addInfo("Endorsed lib set for java 6 and ignored for java 7 (unix)"); + } + } + } + + // TODO: same for win + /* + String setClasspathBat = Installers.readAll(paths.getSetClasspathBat(), alerts); + if (setClasspathBat != null && !setClasspathBat.contains("any endorsed lib for java 7")) { + if (Installers.backup(paths.getSetClasspathBat(), alerts)) { + // add our magic bits to the catalina sh file + final String newSetClasspathBat = setClasspathBat.replace("set \"JAVA_ENDORSED_DIRS=%CATALINA_HOME%\\endorsed\"", + "java_version=`java -version 2>&1 | grep version`\n" + + " if [[ $java_version =~ 1.7.* ]]; then\n" + + " # it doesn't exist but not important since we don't need any endorsed lib for java 7\n" + + " JAVA_ENDORSED_DIRS=\"$CATALINA_HOME\"/endorsed7\n" + + " else\n" + + " set \"JAVA_ENDORSED_DIRS=%CATALINA_HOME%\\endorsed\"\n" + + " fi\n"); + if (Installers.writeAll(paths.getSetClasspathBat(), newSetClasspathBat, alerts)) { + alerts.addInfo("Endorsed lib set for java 6 and ignored for java 7 (win)"); + } + } + } + */ } private void copyClasses(File sourceJar, File destinationJar, String pattern) { @@ -615,8 +657,7 @@ public class Installer { try { Class<?> clazz = loadClass(className, Installer.class.getClassLoader()); Method method = clazz.getMethod(propertyName); - Object result = method.invoke(null, (Object[]) null); - return result; + return method.invoke(null, (Object[]) null); } catch (Throwable e) { return null; } @@ -629,9 +670,9 @@ public class Installer { } for (ClassLoader loader : loaders) { try { - Class<?> clazz = Class.forName(className, true, loader); - return clazz; + return Class.forName(className, true, loader); } catch (ClassNotFoundException e) { + // no-op } } return null; Modified: openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java?rev=1361502&r1=1361501&r2=1361502&view=diff ============================================================================== --- openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java (original) +++ openejb/trunk/openejb/tomee/tomee-common/src/main/java/org/apache/tomee/installer/Paths.java Sat Jul 14 09:43:03 2012 @@ -463,4 +463,20 @@ public class Paths { } return tomcatUsersXml; } + + public File getSetClasspathSh() { + final File binDir = getCatalinaBinDir(); + if (binDir == null) { + return null; + } + return new File(binDir, "setclasspath.sh"); + } + + public File getSetClasspathBat() { + final File binDir = getCatalinaBinDir(); + if (binDir == null) { + return null; + } + return new File(binDir, "setclasspath.bat"); + } }
