Fixes for Tomcat 6 startup. development
authorJan Vrany <jan.vrany@fit.cvut.cz>
Wed, 20 Nov 2013 10:42:07 +0000
branchdevelopment
changeset 2940 451954b79f93
parent 2939 3f4853b3c30d
child 2941 c342efcd1bcb
child 2942 c39cbf09ea3d
Fixes for Tomcat 6 startup. - Tomcat6 standalone startup now checks for Java relase (JDK6 required) - JavaUtilities tomcat6x now returns ApacheTomcat6 startup class to avoid code duplication.
JavaUtilities.st
examples/tomcat6/ApacheTomcat6.st
--- a/JavaUtilities.st	Wed Nov 20 10:00:26 2013 +0000
+++ b/JavaUtilities.st	Wed Nov 20 10:42:07 2013 +0000
@@ -27,13 +27,6 @@
 	category:'Languages-Java-Utilities'
 !
 
-Object subclass:#Tomcat6x
-	instanceVariableNames:'bootstrap'
-	classVariableNames:'OldspaceIncreased'
-	poolDictionaries:''
-	privateIn:JavaUtilities
-!
-
 Object subclass:#Tomcat7x
 	instanceVariableNames:'bootstrap'
 	classVariableNames:'OldspaceIncreased'
@@ -78,9 +71,15 @@
 
 tomcat6x
 
-    ^Tomcat6x new
+    (Smalltalk at: #ApacheTomcat6) isNil ifTrue:[
+        (Smalltalk loadPackage:'stx:libjava/examples/tomcat6') ifFalse:[
+            self error:'Failed to load Tomcat 6.x package'.
+        ].
+    ].
+    ^ (Smalltalk at: #ApacheTomcat6) new
 
     "Created: / 07-05-2012 / 22:03:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-11-2013 / 10:05:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 tomcat7x
@@ -90,150 +89,6 @@
     "Created: / 07-05-2012 / 22:11:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
-!JavaUtilities::Tomcat6x methodsFor:'accessing - paths'!
-
-catalinaHome
-    "Bit hacky, but..."
-    "/    OperatingSystem getLoginName = 'jv' ifTrue: [
-    "/        ^ '/home/jv/Projects/libjava/sources/libjava/branches/jk_new_structure/src/examples/tomcat/apache-tomcat-6.0.35-src/output/build'
-    "/    ].
-    
-    OperatingSystem getLoginName = 'm' ifTrue: [
-        ^ '/home/m/Projects/stx/libjava/branches/jk_new_structure/src/examples/tomcat/apache-tomcat-6.0.35-src/output/build'
-    ].
-     "Add your default here"
-    ^ ((Smalltalk at: #'stx_libjava') packageDirectory / 'examples' / 'tomcat' 
-        / 'apache-tomcat-6.0.35-src' / 'output' 
-        / 'build') pathName
-
-    "Created: / 08-12-2011 / 22:17:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-12-2011 / 14:32:49 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified (format): / 23-08-2012 / 00:12:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 23-08-2012 / 01:58:37 / m"
-!
-
-classPath1
-
-    ^ self catalinaHome , '/bin/*.jar'
-
-    "Created: / 08-12-2011 / 22:43:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 09-01-2013 / 16:47:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-classPath2
-
-    ^ self catalinaHome , '/lib/*.jar'
-
-    "Created: / 08-12-2011 / 22:44:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-sourcePath
-    | pkgdir  root  path  p |
-    pkgdir := Smalltalk getPackageDirectoryForPackage: self class package.
-    pkgdir isNil ifTrue: [ ^ #() ].
-    root := pkgdir / 'examples' / 'tomcat' / 'apache-tomcat-6.0.35-src'.
-    OperatingSystem getLoginName = 'm' ifTrue: [
-        root := '/home/m/Projects/stx/libjava/branches/jk_new_structure/src/examples/tomcat/apache-tomcat-6.0.35-src' 
-                asFilename
-    ].
-    OperatingSystem getLoginName = 'jv' ifTrue: [
-        root := '/home/jv/Projects/libjava/sources/libjava/branches/jk_new_structure/src/examples/tomcat/apache-tomcat-6.0.35-src/' 
-                asFilename
-    ].
-    root exists ifFalse: [ ^ #() ].
-    path := OrderedCollection new.
-    (p := root / 'java') exists ifTrue: [ path add: p ].
-    (p := root / 'java-extras') exists ifTrue: [ path add: p ].
-    ^ path
-
-    "Created: / 08-12-2011 / 23:16:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 13-12-2011 / 14:33:42 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
-    "Modified: / 30-07-2012 / 15:11:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 23-08-2012 / 01:58:54 / m"
-! !
-
-!JavaUtilities::Tomcat6x methodsFor:'initialization'!
-
-initializeVM
-
-    Java flushAllJavaResources.
-    Java initialize.
-    JavaVM initializeVM.
-
-    "Created: / 08-12-2011 / 00:01:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-setup
-
-    | catalinaHome java_lang_System |
-
-    catalinaHome := self catalinaHome.
-    catalinaHome asFilename exists ifFalse:[
-        self error:'Catalina home does not exist'.
-        ^self.
-    ].
-
-    Java addToClassPath: self classPath1.
-    Java addToClassPath: self classPath2.
-    self sourcePath do:[:each|Java addToSourcePath:  each].
-    JavaVM booted ifFalse:[self initializeVM].
-    java_lang_System := Java classForName:'java.lang.System'.
-
-    {
-        'java.util.logging.config.file'.    catalinaHome , '/conf/logging.properties' .
-        'java.util.logging.manager'.        'org.apache.juli.ClassLoaderLogManager' .
-        'java.endorsed.dirs'.               catalinaHome , '/endorsed' .
-        'catalina.base'.                    catalinaHome .
-        'catalina.home'.                    catalinaHome .
-        'java.io.tmpdir'.                   catalinaHome , '/temp' .
-    } pairWiseDo:[:key :value|
-        java_lang_System perform: #'setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;'
-            with: (Java as_String: key)
-            with: (Java as_String: value)
-    ].
-    OldspaceIncreased ~~ true ifTrue:[
-        ObjectMemory moreOldSpace: 64"MB"*(1024*1024).
-        OldspaceIncreased := true.
-    ].
-
-    "Created: / 18-04-2012 / 08:08:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
-!JavaUtilities::Tomcat6x methodsFor:'start/stop'!
-
-start
-
-    | notifier |
-
-    self setup.
-
-    notifier := (Java classForName: 'stx.libjava.tomcat.StartupNotifier').
-
-
-    [
-        (Java classForName: 'org.apache.catalina.startup.Bootstrap')
-        perform: #'main([Ljava/lang/String;)V'
-        with: ((Java classForName:'java.lang.String') javaArrayClass with:(Java as_String:'start')).
-    ] fork.
-
-    notifier waitUntilStarted.
-    Transcript showCR: '== TomCat ready!! =='
-
-    "Created: / 07-12-2011 / 23:59:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 10-01-2013 / 16:55:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-!
-
-stop
-
-    self setup.
-
-    (Java classForName: 'org.apache.catalina.startup.Bootstrap')
-        perform: #'main([Ljava/lang/String;)V'
-        with: ((Java classForName:'java.lang.String') javaArrayClass with:(Java as_String:'stop'))
-
-    "Created: / 08-12-2011 / 00:32:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-! !
-
 !JavaUtilities::Tomcat7x methodsFor:'accessing - paths'!
 
 catalinaHome
--- a/examples/tomcat6/ApacheTomcat6.st	Wed Nov 20 10:00:26 2013 +0000
+++ b/examples/tomcat6/ApacheTomcat6.st	Wed Nov 20 10:42:07 2013 +0000
@@ -128,10 +128,13 @@
             exceptionOrNil suspendedContext fullPrintAllOn: Stderr.
         ].
         Stderr nextPutLine:'Exiting'.
-        Smalltalk exit:1.
+        Smalltalk isStandAloneApp ifTrue:[
+            Smalltalk exit:1.
+        ].
     ].
 
     "Created: / 24-04-2013 / 10:49:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-11-2013 / 10:28:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !ApacheTomcat6 class methodsFor:'multiple applications support'!
@@ -366,11 +369,23 @@
 
 initializeVM
 
+    | openJDK6 |
+
+    Java release isJava6 ifFalse:[
+        openJDK6 := JavaRelease openJDK6.
+        openJDK6 isAvailable ifTrue:[
+            Java release: openJDK6
+        ] ifFalse:[
+            self class error: 'OpenJDK6 not available. Tomcat6 does not work on JDK 7 (yet). Try to set STX_LIBJAVA_RELEASE=JDK6'.
+        ].
+    ].
+
     Java flushAllJavaResources.
     Java initialize.
     JavaVM initializeVM.
 
     "Created: / 08-12-2011 / 00:01:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-11-2013 / 10:30:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 setup