David Ghedini

Linux, Java, Oracle, and PostgreSQL


David Ghedini

Tuesday Aug 14, 2012

Apache TomEE on CentOS 6

This post will cover installing Apache TomEE on CentOS 6.x

TomEE is a certified implementation of the Java EE 6 Web Profile.

What is most interesting is that it is build on top of Tomcat 7. Literally. Nothing has been removed from Tomcat 7, only added to.

Installation is quite identical to Tomcat 7 and you can even deploy TomEE as a WAR from within an existing Tomcat 7.x installation.

I wasn't keen on this option as the overall directory structure, jar locations, conf files, etc...are different from the apache-tomee-1.0.0-webprofile package layout, which we will be installing below.

Conversely, it could be an option to consider as apache-tomee-1.0.0-webprofile is packaged with Tomcat 7.0.27 (current stable is 7.0.29).

There is also a TomEE Plus package with additional features, but this is not Java EE6 certified. Installation of TomEE Plus is identical to Web Profile below, just change the file names.

Below, we'll install TomEE and configure it to run as a service. To see how to run TomEE as an unprivileged user, Manager configuration, run on port 80, etc, etc...please see my Tomcat 7 Installation post

To begin, we'll need to install the Java Development Kit (JDK) 6




Step 1: Install JDK 1.6 latest



You can download the latest JDK here: http://www.oracle.com/technetwork/java/javase/downloads/index.html

We'll install the latest JDK, which is JDK 6, Update 33.

For CentOS 64 bit, I'll be using jdk-6u33-linux-x64.bin (for 32 bit, use jdk-6u33-linux-i586.bin)

Download jdk-6u33-linux-x64.bin and save it the /opt directory.

[root@demo3 opt]# ls
jdk-6u33-linux-x64.bin


Creating a new directory /usr/java:

[root@demo3 opt ]# mkdir /usr/java  


Change to the /usr/java directory we created

[root@demo3 opt ]# cd /usr/java  
[root@demo3 java ]# 


Execute the bin file using 'sh /opt/jdk-6u33-linux-x64.bin' (if you saved jdk-6u33-linux-x64.bin to a location other than /opt, adjust accordingly)

[root@demo3 java]# sh /opt/jdk-6u33-linux-x64.bin


This will create the directory /usr/java/jdk1.6.0_33. This will be our JAVA_HOME.


We can now set JAVA_HOME and put Java into the path of our users.

To set the JAVA_HOME, add below to the .bash_profile of root (you can do the same for user tomcat - or any other user - later if you decide to run it under a non-privileged user).
JAVA_HOME=/usr/java/jdk1.6.0_33
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH


Once you have added the above to .bash_profile, issue '. ~/.bash_profile' as shown below. Or you can simply log out and log back in.

[root@demo3 ~]#  . ~/.bash_profile


Verify that Java is now in your path by issuing 'echo $JAVA_HOME'

[root@demo3 ~]# echo $JAVA_HOME
/usr/java/jdk1.6.0_33


You can also issue 'java -version' to check that Java is available to your user.

[root@demo3 ~]# java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03, mixed mode)


Step 2: Download and Unpack Apache TomEE 1.0.0 (or latest)



We will install TomEE under /usr/share.

Switch to the /usr/share directory:

[root@demo3 ~]# cd /usr/share
[root@demo3 share ]# 
Download apache-tomee-1.0.0-webprofile.tar.gz (or the latest version) here

and save it to /usr/share

unpack the file using tar -xzf:

[root@demo3 share ]# tar -xzf apache-tomee-1.0.0-webprofile.tar.gz 
This will create the directory /usr/share/apache-tomee-webprofile-1.0.0

This will be the home directory for TomEE


Step 3: Configure TomEE to Run as a Service.



Create a simple Start/Stop/Restart for TomEE.

Change to the /etc/init.d directory and create a script called 'tomee' as shown below.

[root@demo3 share]# cd /etc/init.d
[root@demo3 init.d]# vi tomee
And here is the script we will use.

#!/bin/bash
# description: TomEE Start Stop Restart
# processname: tomee
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.6.0_33
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=apache-tomee-webprofile-1.0.0

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;; 
stop)   
sh $CATALINA_HOME/bin/shutdown.sh
;; 
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;; 
esac    
exit 0
You can adjust your script according to your needs.

Make the script executable:

[root@demo3 init.d]# chmod 755 tomee
Add to chkconfig with run levels 234 (or whatever you prefer)

[root@demo3 init.d]# chkconfig --add tomee
[root@demo3 init.d]# chkconfig --level 234 tomee on
Verify it:

[root@demo3 init.d]# chkconfig --list tomee
tomee          0:off   1:off   2:on    3:on    4:on    5:off   6:off
Test the script.

Start TomEE:
[root@demo3 ~]# service tomee start
Using CATALINA_BASE:   /usr/share/apache-tomee-webprofile-1.0.0
Using CATALINA_HOME:   /usr/share/apache-tomee-webprofile-1.0.0
Using CATALINA_TMPDIR: /usr/share/apache-tomee-webprofile-1.0.0/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_33
Using CLASSPATH:       /usr/share/apache-tomee-webprofile-1.0.0/bin/bootstrap.jar:/usr/share/apache-tomee-webprofile-1.0.0/bin/tomcat-juli.jar
Check if the Tomcat Manager page is visible at http://yourIPaddress:8080. If not check your firewall and logs.

Stop TomEE:

[root@demo3 ~]# service tomee stop
Using CATALINA_BASE:   /usr/share/apache-tomee-webprofile-1.0.0
Using CATALINA_HOME:   /usr/share/apache-tomee-webprofile-1.0.0
Using CATALINA_TMPDIR: /usr/share/apache-tomee-webprofile-1.0.0/temp
Using JRE_HOME:        /usr/java/jdk1.6.0_33
Using CLASSPATH:       /usr/share/apache-tomee-webprofile-1.0.0/bin/bootstrap.jar:/usr/share/apache-tomee-webprofile-1.0.0/bin/tomcat-juli.jar
Review the catalina.out log located at /usr/share/apache-tomee-webprofile-1.0.0/logs/catalina.out and check for any errors.

[root@demo3 init.d]# more /usr/share/apache-tomee-webprofile-1.0.0/logs/catalina.out


Step 4 (Optional): Configure Remote Access to TomEE Console



By default, the TomEE Console is restricted via a valve to 127.0.0.1 (localhost).

You can remove or change this via the context.xml at:

/usr/share/apache-tomee-webprofile-1.0.0/webapps/tomee/META-INF/context.xml

<Context>
  <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1|0:0:0:0:0:0:0:1(%.*)?|^::1$" deny=""/>
</Context>


As with Tomcat 7, piping (|) is used in place of commas.


Below is a quick look at the TomEE Console screens and it's tabs:


TomEE Console Welcome Page:

TomEE Console



TomEE Console Test Page:

TomEE Console Test



TomEE Console JNDI Page:

TomEE Console JNDI



TomEE Console EJB Page:

TomEE Console EJB



TomEE Console Class Page:

TomEE Console Class



TomEE Console Invoke Page:

TomEE Console Invoke



To see how to run TomEE as an unprivileged user, Manager configuration, run on port 80, etc... please see my Tomcat 7 Installation post Related Tomcat Posts

Learn More About Apache Tomcat 7 Apache Tomcat Foundation Tomcat 7

Tomcat 7 Hosting

Bookmark and Share



Comments:

Great article!

I have also published cookbook type e-book for TomEE. This cookbook is written for learning TomEE internals by server administrators and Java EE developers. Administrators will learn how to configure TomEE for using it in a production environment. Developers will learn how to create web applications using the Java™ Platform, Enterprise Edition 6 (Java EE 6) technologies provided by TomEE runtime and to deploy these enterprise applications into TomEE.

If you wish, you can buy the cookbook from https://www.e-junkie.com/ecom/gb.php?c=cart&i=1271538&cl=256523&ejc=2

Posted by Gurkan Erdogdu on August 22, 2013 at 01:50 PM CDT #

Thanks, I had a big problem with instal this stuff. Good job!

Posted by Jakub on October 03, 2013 at 03:45 AM CDT #

Post a Comment:
  • HTML Syntax: Allowed

Main Menu

Built With

Search

Pages

LinkedIn

Technorati Profile

Add Technorati Favorite

Tag Cloud

Enciva Solutions

Navigation

Visitors

Sponsors

Feeds

Tag Cloud

VPS Hosting: 1Gbps Network