Running ADF Essentials on Tomcat in a Docker container
I develop sample applications pretty often. I try out some ideas, play with some techniques and share the result of my investigations with my colleagues and blog readers by the means of sample applications. When someone wants to see how the technique was implemented they just look into the source code and that’s enough to get the idea. But if they want to see how it actually works and play with it, they need to find the right version of JDeveloper, start it, run the sample application and, probably, dance a little with a tambourine to get it working. Too complicated and not fun. What would be fun is to have a lightweight Docker container with deployed sample application which everyone can easily run on their Docker environment. In this post I am going to show what I did to create a preconfigured docker-image-template which I will use to create images with deployed sample applications.
Since the key is to have a lightweight container and since my sample ADF applications rarely go beyond essentials functionality I decided to create a Docker container running Tomcat with ADF Essentials on top of that.
So, let’s start:
1. Pull and run Tomcat image from Docker hub:
docker run -it -p 8888:8080 --name adftomcat tomcat:8.0
Having done that, you would be able to observe the running Tomcat here http://localhost:8888.
2. Install the latest Java in the container:
In a separate terminal window dive into the container:
docker exec -it adftomcat bash
And install Java:
apt-get update apt-get install software-properties-common add-apt-repository "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" apt-get update apt-get install oracle-java8-installer
3. Download ADF Essentials (including client) from Oracle Website
This will give you to archives: adf-essentials.zip and adf-essentials-client-ear.zip. Copy them in the container:
docker cp ~/Downloads/adf-essentials.zip adftomcat:/usr/local/tomcat/lib docker cp ~/Downloads/adf-essentials-client-ear.zip adftomcat:/usr/local/tomcat/lib
Go to the container (docker exec -it adftomcat bash
) and unzip them with -j option:
unzip -j/usr/local/tomcat/lib/adf-essentials.zip unzip -j/usr/local/tomcat/lib/adf-essentials-client-ear.zip
4. Download javax.mail-api-1.4.6.jar from
here and copy it into the container:
docker cp ~/Downloads/javax.mail-api-1.4.6.jar adftomcat:/usr/local/tomcat/lib
5. Install nano text editor in the container:
apt-get install nano
6. In the container create setenv.sh file in /usr/local/tomcat/bin
folder:
nano /usr/local/tomcat/bin/setenv.sh
With the following content:
JAVA_HOME=/usr/lib/jvm/java-8-oracle CATALINA_OPTS='-Doracle.mds.cache=simple -Dorg.apache.el.parser.SKIP_IDENTIFIER_CHECK=true'
7. In the container update /usr/local/tomcat/conf/context.xml
file:
nano /usr/local/tomcat/conf/context.xml
And add the following line in the<Context> section
<JarScanner scanManifest="false"/>
8. Basically, this is enough to deploy an ADF application to the container. I created an image out of this preconfigured container for future uses as a template.
docker commit adftomcat efedorenko/adftomcat
9. Develop a “Tomcat-compatable” sample ADF application (check Chandresh’s blog describing how to create an ADF application suitable for Tomcat). Deploy it to a war and copy the war into the container:
docker cp tcatapp.war adftomcat:/usr/local/tomcat/webapps
10. Restart the container
docker stop adftomcat docker start -I adftomcat
11. Check the application availability here http://localhost:8888/MY_CONTEXT_ROOT/faces/main.jsf
12. Now we can create an image out of this container, run it in a docker cloud or just share it with your colleagues so they can run it wherever they prefer.
That’s it!
Published on Java Code Geeks with permission by Eugene Fedorenko , partner at our JCG program. See the original article here: Running ADF Essentials on Tomcat in a Docker container Opinions expressed by Java Code Geeks contributors are their own. |