Packaging a Configured Instance as an Uber Jar
Sometimes it is preferable to package the application (or applications),
configuration and dependencies into a single executable jar. To do this with
Payara Micro use the --outputUberJar
command line option as in this example:
java -jar payara-micro.jar --deploy test.war --outputUberJar test.jar
This will package up the payara-micro.jar
and the WAR application into a
single JAR. The resulting file can be execute like this:
java -jar test.jar
Any additional command line options you specify when creating an Uber JAR are recorded, so the Payara Micro instance is configured later when executing the packaged JAR:
java -jar payara-micro.jar --deploy test.war --port 9080 --lite --clusterName test-cluster --clusterPassword test-password --outputUberJar test2.jar
All specified command line option will be retained when the Uber JAR is executed. |
Uber JAR Context Root
When creating an Uber JAR, the context root of the packaged application will
always be the name of the application WAR that is deployed. For example,
the test.war
that was packaged into the test2.jar
on port 9080 would be
accessible on the following path:
http://localhost:9080/test
Currently, this is always the case; including when a context root is specified
in a glassfish-web.xml
deployment descriptor.
If the WAR file is renamed to ROOT.war
and packaged as an Uber JAR, it will
be deployed to the root context:
java -jar payara-micro.jar --deploy ROOT.war --port 9080 --outputUberJar test3.jar
java -jar test3.jar
The application will now be accessible on:
http://localhost:9080/
Package Additional Files
Since Payara Server 4.1.1.171
It’s also possible to package additional files into an Uber JAR, by using a custom
root directory. You can run a Payara Micro instance first by generating the domain
directory first using the --rootDir
option first:
java -jar payara-micro.jar --rootDir /tmp/micro-dir/
You can then add files to the root directory like this:
> cd /tmp/micro-dir/
> ls -lsarth
total 784K
0 drwxr-xr-x 1 root 197609 0 Mar 24 18:16 docroot
160K -rw-r--r-- 1 root 197609 158K Mar 24 18:16 __ds_jdbc_ra.rar
0 drwxr-xr-x 1 root 197609 0 Mar 24 18:16 META-INF
160K -rw-r--r-- 1 root 197609 159K Mar 24 18:16 __cp_jdbc_ra.rar
160K -rw-r--r-- 1 root 197609 159K Mar 24 18:16 __xa_jdbc_ra.rar
160K -rw-r--r-- 1 root 197609 160K Mar 24 18:16 __dm_jdbc_ra.rar
0 drwxr-xr-x 1 root 197609 0 Mar 24 18:17 autodeploy
0 drwxr-xr-x 1 root 197609 0 Mar 24 18:20 lib
4.0K drwxr-xr-x 1 root 197609 0 Mar 30 19:22 config
128K drwxr-xr-x 1 root 197609 0 Mar 30 19:23 runtime
> cp ~/test-properties /tmp/micro-dir/config/.
And then, generate the Uber JAR using the modified root directory:
java -jar payara-micro.jar --rootDir /tmp/micro-dir/ --outputUberJar custom-micro.jar
You can verify that the files are located in the MICRO-INF/ directory:
> unzip -d custom-micro custom-micro.jar
> ls -lsarth custom-micro/** | grep
MICRO-INF/domain:
total 304K
1.0K -rw-r--r-- 1 fabio 197609 24 Apr 3 20:26 test.properties
Additional JAR files that are placed in the ${PAYARA_INSTALL_DIR}/lib
directory will be ignored when being packaged to the Uber JAR. To package additional
JAR files into an Uber JAR, check the
Adding Third Party JARs section
|