Preloader image

You can use TomEE as described on Directory Structure page but in production it is better to split TomEE and application binaries and configuration.

Idea is to have this kind of layout (the root is the one you prefer):

[{ label: '/some/path', description: 'any location on your file system', children: [ { label: 'tomee', description: 'all tomee binaries will be there, note: you often do the same for the JVM versions you have', children: [ { label: 'tomee-1.7.1', description: 'a particular tomee version (just unzip it there)', children: [ { label: 'bin', description: 'the startup binaries/scripts' }, { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' }, { label: 'lib', description: 'the binaries' } ] }, { label: 'tomee-1.7.2', description: 'a particular tomee version (just unzip it there)', children: [ { label: 'bin', description: 'the startup binaries/scripts' }, { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' }, { label: 'lib', description: 'the binaries' } ] }, { label: 'tomee-7.0.0-M3', description: 'a particular tomee version (just unzip it there)', children: [ { label: 'bin', description: 'the startup binaries/scripts' }, { label: 'conf', description: 'default shared configuration for this version, can be overwritten by instance' }, { label: 'lib', description: 'the binaries' } ] } ] }, { label: 'applications', description: 'all applications', children: [ { label: 'application1', description: 'any application instance (ie configuration + binaries)', children: [ { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' }, { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' }, { label: 'lib', description: 'some additional binaries like JDBC drivers' }, { label: 'logs', description: 'instances logs location' }, { label: 'work', description: 'dedicated work directory' }, { label: 'temp', description: 'instance temporary folder' }, { label: 'webapps', description: 'instance webapp folder' } ] }, { label: 'application2', description: 'any application instance (ie configuration + binaries)', children: [ { label: 'bin', description: 'provide scripts for this instance (see under that file layout)' }, { label: 'conf', description: 'the instance configuration, typically what is in tomee/conf when used in standalone' }, { label: 'lib', description: 'some additional binaries like JDBC drivers' }, { label: 'logs', description: 'instances logs location' }, { label: 'work', description: 'dedicated work directory' }, { label: 'temp', description: 'instance temporary folder' }, { label: 'webapps', description: 'instance webapp folder' } ] } ] } ] }]

Click on a tree node or open a folder to see the detail there.

 

Instance scripts

The idea for instances (applications) scripts is to simply delegate to tomcat ones but customizing the JVM and TomEE versions.

Customizing the version (and locations) is done in bin/setenv.sh of instances.

Here are an example for the common scripts (of course you can write helper version like restart etc).

setenv.sh

#! /bin/sh

# which java
export JAVA_HOME="/some/path/java/jdk-8u60"
# which tomee
export CATALINA_HOME="/some/path/tomee/tomee-7.0.0-M3"
# where is the application - to let tomcat/tomee finds the configuration
export CATALINA_BASE="/some/path/application1/"
# to let tomee be able to kill the instance if shutdown doesn't work (see shutdown script)
export CATALINA_PID="/some/path/application1/work/tomee.pid"

startup

#! /bin/bash

proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
source "$proc_script_base/bin/setenv.sh"
nohup "$CATALINA_HOME/bin/startup.sh" "$@" > $proc_script_base/logs/nohup.log &

shutdown

#! /bin/bash

proc_script_base="`cd $(dirname $0) && cd .. && pwd`"
source "$proc_script_base/bin/setenv.sh"
# we support parameters like timeout and force, typically we would call it this way: ./shutdown 1200 -force
"$CATALINA_HOME/bin/shutdown.sh" "$@"