THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Wiki Markup |
---|
{warning} These instructions are out of date and are currently being worked on. In the mean time, please use the installer servlet. {warning} composition-setup} {composition-setup} h1. {anchor:install-openejb}Install OpenEJBopenejb.war Once Tomcat has been [installed|Tomcat Installation], the OpenEJB plugin for Tomcat can be installed. The commands in this example are executed from within the Tomcat installation directory. h2. Unpack OpenEJB Tomcat plugin in Tomcat webapps directory Change to the webapps directory: {code:none}{warning:title=Be Careful}This is the most error prone step. A web application does not contain a root directory, so if you unpack it in the wrong directory, it is difficult to undo. Please, follow this step closely, and most importantly *make sure you execute the unpack command from within the new webapps/openejb directory*.{warning} Due to the structure of war files, you must create a new directory for OpenEJB, change to the new directory and execute the unpack command from within the new directory. If you get this wrong, it is difficult to undo, so follow the steps closely. {deck:id=unpack tomcat} {card:label=Windows}{noformat:nopanel=true} C:\apache-tomcat-6.0.14$ cd14>mkdir webapps{code} Unpack the openejb\openejb C:\apache-tomcat-36.0.0-SNAPSHOT-bin.zip file. {code:none}14>cd webapps\openejb C:\apache-tomcat-6.0.14/webapps$ jar\webapps\openejb>jar -xvf ../openejb-tomcat-3.0.0-SNAPSHOT-bin.zip\openejb.war created: WEB-INF/ created: WEB-INF/classes/ created: openejbWEB-INF/classes/org/ created: openejb/WEB-INF/classes/org/apache/ created: openejb/lib/ inflated: openejb/lib/geronimo-javamail_1.4_spec-1.1.jar inflated: openejb/lib/xbean-finder-3.1.jar ...snip... {code} The OpenEJB directory should contain the following files: {code:none}WEB-INF/classes/org/apache/openejb/ ...snip... C:\apache-tomcat-6.0.14\webapps\openejb>dir Volume in drive C has no label. Volume Serial Number is 0000-0000 Directory of C:\apache-tomcat-6.0.14\webapps\openejb 09/21/2007 10:19 AM <DIR> . 09/21/2007 10:19 AM <DIR> .. 09/21/2007 10:19 AM 1,000 index.html 09/21/2007 10:19 AM <DIR> lib 09/21/2007 10:19 AM 11,358 LICENSE 09/21/2007 10:19 AM <DIR> META-INF 09/21/2007 10:19 AM 11,649 NOTICE 09/21/2007 10:19 AM 1,018 openejb.xml 09/21/2007 10:19 AM 1,886 README.txt 09/21/2007 10:19 AM <DIR> tomcat 09/21/2007 10:19 AM <DIR> WEB-INF 5 File(s) 26,911 bytes 6 Dir(s) 4,633,796,608 bytes free C:\apache-tomcat-6.0.14\webapps\openejb>cd ..\.. C:\apache-tomcat-6.0.14> {noformat}{card} {card:label=Unix}{noformat:nopanel=true} apache-tomcat-6.0.14$ mkdir webapps/openejb apache-tomcat-6.0.14$ cd webapps/openejb/ apache-tomcat-6.0.14/webapps/openejb$ jar -xvf path/to/openejb.war created: WEB-INF/ created: WEB-INF/classes/ created: WEB-INF/classes/org/ created: WEB-INF/classes/org/apache/ created: WEB-INF/classes/org/apache/openejb/ ...snip... apache-tomcat-6.0.14/webapps/webapps$openejb$ ls openejb LICENSE META-INF/ NOTICE README.txt WEB-INF/ index.html lib/ openejb.xml {code} Return to the Tomcat install directory {code:none} tomcat/ apache-tomcat-6.0.14/webapps/webapps$openejb$ cd ../.. apache-tomcat-6.0.{code14$ {noformat}{card} {deck} h2. Add the OpenEJB listener to Tomcat All Tomcat listener listenersclasses must be available in the Tomcat common class loader, so the openejb-loader jar must be copied into the Tomcat lib directory. {code:none} deck:id=copy openejb loader} {card:label=Windows}{noformat:nopanel=true} C:\apache-tomcat-6.0.14>copy webapps\openejb\lib\openejb-loader-3.0.0-SNAPSHOT.jar lib\openejb-loader.jar 1 file(s) copied. {noformat}{card} {card:label=Unix}{noformat:nopanel=true} apache-tomcat-6.0.14$ cp webapps/openejb/lib/openejb-loader-3.0.0-SNAPSHOT*.jar lib/{codeopenejb-loader.jar {noformat}{card} {deck} Add the following {highlight}highlighted lines{highlight} to your conf/server.xml file to load the OpenEJB listener: {panel:title=conf/server.xml} <!-- Note: A "Server" is not itself a "Container", so you may not define subcomponents such as "Valves" at this level. Documentation at /docs/config/server.html --> <Server port="8005" shutdown="SHUTDOWN"> {highlight}<!-- OpenEJB plugin for tomcat -->{highlight} {highlight}<Listener className="org.apache.openejb.loader.OpenEJBListener" />{highlight} <!--APR library loader. Documentation at /docs/apr.html --> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> ...snip... {panel} h2. DeleteUpdate the Tomcat annotations-api.jar file Tomcat contains an old non-compliant version of the javax.annotation classes and these invalid classes must be removedupdated so OpenEJB can process annotations. Simply, renamereplace the annotationannotations-api.jar in sothe itTomcat doesn'tlib enddirectory with the updated annotations-api.jar in the OpenEJB {{".jar"}}. For example: {code:none}war. {deck:id=update annotations-api.jar} {card:label=Windows}{noformat:nopanel=true} C:\apache-tomcat-6.0.14>copy webapps\openejb\tomcat\annotations-api.jar lib\annotations-api.jar Overwrite lib\annotations-api.jar? (Yes/No/All): y 1 file(s) copied. {noformat}{card} {card:label=Unix}{noformat:nopanel=true} apache-tomcat-6.0.14$ mv libcp webapps/openejb/tomcat/annotations-api.jar lib/annotations-api.jar-INVALID{code {noformat}{card} {deck} h2. Add OpenEJB javaagent to Tomcat startup OpenJPA, the Java Persistence implementation used by OpenEJB, currently must enhanced persistence classes to function properly, and this requires the installation of a javaagent into the Tomcat startup process. First, copy the OpenEJB JavaAgent jar into the lib directory. {deck:id=unpack tomcat} {card:label=Windows}{noformat:nopanel=true} C:\apache-tomcat-6.0.14>copy webapps\openejb\lib\openejb-javaagent-3.0.0-SNAPSHOT.jar lib\openejb-javaagent.jar 1 file(s) copied. {noformat}{card} {card:label=Unix}{noformat:nopanel=true} apache-tomcat-6.0.14$ cp webapps/openejb/lib/openejb-javaagent-*.jar lib/openejb-javaagent.jar {noformat}{card} {deck} Simply, add the following {highlight}highlighted lines{highlight} to the bin/catalina.bat (Windows) or bin/catalina.sh (Unix) file to enable the OpenEJB javaagent: {deck:id=update script} {card:label=Windows} {panel:title=bin/catalina.bat} ...snip... if not exist "%CATALINA_BASE%\conf\logging.properties" goto noJuli set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" :noJuli {highlight}rem Add OpenEJB javaagent if not exist "%CATALINA_BASE%\webapps\openejb\lib\openejb-javaagent.jar" goto noOpenEJBJavaagent set JAVA_OPTS="-javaagent:%CATALINA_BASE%\webapps\openejb\lib\openejb-javaagent.jar" %JAVA_OPTS% :noOpenEJBJavaagent{highlight} rem ----- Execute The Requested Command --------------------------------------- echo Using CATALINA_BASE: %CATALINA_BASE% echo Using CATALINA_HOME: %CATALINA_HOME% ...snip... {panel} {card} {card:label=Unix} {panel:title=bin/catalina.sh} ...snip... \# Set juli LogManager if it is present if [ -r "$CATALINA_BASE"/conf/logging.properties ]; then JAVA_OPTS="$JAVA_OPTS "-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" "-Djava.util.logging.config.file="$CATALINA_BASE/conf/logging.properties" fi {highlight}\# Add OpenEJB javaagent if [ -r "$CATALINA_BASE"/webapps/openejb/lib/openejb-javaagent-3.0.0-SNAPSHOT.jar ]; then JAVA_OPTS=""-javaagent:$CATALINA_BASE/webapps/openejb/lib/openejb-javaagent-3.0.0-SNAPSHOT.jar" $JAVA_OPTS" fi{highlight} \# ----- Execute The Requested Command ----------------------------------------- \# Bugzilla 37848: only output this if we have a TTY if [ $have_tty -eq 1 ]; then echo "Using CATALINA_BASE: $CATALINA_BASE" ...snip... {panel} {card} {deck} *NOTE:* The example above is an excerpt from the middle of the bin/catalina.sh file. Search for "Execute" in the file to locate the correct position in the file to add the new lines. |