2015-09-20 22:31:33 +00:00
|
|
|
---
|
|
|
|
layout: "docs"
|
|
|
|
page_title: "Drivers: Java"
|
|
|
|
sidebar_current: "docs-drivers-java"
|
|
|
|
description: |-
|
|
|
|
The Java task driver is used to run Jars using the JVM.
|
|
|
|
---
|
|
|
|
|
|
|
|
# Java Driver
|
|
|
|
|
|
|
|
Name: `java`
|
|
|
|
|
2016-03-16 16:56:04 +00:00
|
|
|
The `Java` driver is used to execute Java applications packaged into a Java Jar
|
|
|
|
file. The driver requires the Jar file to be accessible from the Nomad
|
|
|
|
client via the [`artifact` downloader](/docs/jobspec/index.html#artifact_doc).
|
2015-09-21 19:20:51 +00:00
|
|
|
|
|
|
|
## Task Configuration
|
|
|
|
|
|
|
|
The `java` driver supports the following configuration in the job spec:
|
|
|
|
|
2016-03-16 16:56:04 +00:00
|
|
|
* `jar_path` - The path to the downloaded Jar. In most cases this will just be
|
|
|
|
the name of the Jar. However, if the supplied artifact is an archive that
|
|
|
|
contains the Jar in a subfolder, the path will need to be the relative path
|
|
|
|
(`subdir/from_archive/my.jar`).
|
2015-10-16 19:43:06 +00:00
|
|
|
|
2016-01-11 19:12:09 +00:00
|
|
|
* `args` - (Optional) A list of arguments to the optional `command`.
|
2016-07-18 14:24:30 +00:00
|
|
|
References to environment variables or any [interpretable Nomad
|
2016-02-06 23:34:21 +00:00
|
|
|
variables](/docs/jobspec/interpreted.html) will be interpreted
|
2016-01-11 19:12:09 +00:00
|
|
|
before launching the task. For example:
|
|
|
|
|
|
|
|
```
|
2016-02-06 23:34:21 +00:00
|
|
|
args = ["${nomad.datacenter}", "${MY_ENV}", "${meta.foo}"]
|
2016-01-11 19:12:09 +00:00
|
|
|
```
|
2015-11-18 23:16:42 +00:00
|
|
|
|
|
|
|
* `jvm_options` - (Optional) A list of JVM options to be passed while invoking
|
|
|
|
java. These options are passed not validated in any way in Nomad.
|
2015-09-21 19:20:51 +00:00
|
|
|
|
2015-11-03 21:16:17 +00:00
|
|
|
## Examples
|
|
|
|
|
|
|
|
A simple config block to run a Java Jar:
|
|
|
|
|
2016-03-16 16:56:04 +00:00
|
|
|
```
|
2015-11-03 21:16:17 +00:00
|
|
|
task "web" {
|
|
|
|
driver = "java"
|
|
|
|
|
|
|
|
config {
|
2016-04-14 20:04:04 +00:00
|
|
|
jar_path = "local/hello.jar"
|
2016-07-20 07:31:44 +00:00
|
|
|
jvm_options = ["-Xmx2048m", "-Xms256m"]
|
2015-11-03 21:16:17 +00:00
|
|
|
}
|
2016-03-16 16:56:04 +00:00
|
|
|
|
|
|
|
# Specifying an artifact is required with the "java"
|
|
|
|
# driver. This is the # mechanism to ship the Jar to be run.
|
|
|
|
artifact {
|
|
|
|
source = "https://dl.dropboxusercontent.com/u/1234/hello.jar"
|
|
|
|
|
|
|
|
options {
|
|
|
|
checksum = "md5:123445555555555"
|
|
|
|
}
|
|
|
|
}
|
2015-11-03 21:16:17 +00:00
|
|
|
```
|
|
|
|
|
2016-03-16 16:56:04 +00:00
|
|
|
## Client Requirements
|
|
|
|
|
|
|
|
The `java` driver requires Java to be installed and in your systems `$PATH`. The
|
|
|
|
task must also specify at least one artifact to download as this is the only way
|
|
|
|
to retrieve the Jar being run.
|
|
|
|
|
2015-09-21 19:20:51 +00:00
|
|
|
## Client Attributes
|
|
|
|
|
|
|
|
The `java` driver will set the following client attributes:
|
|
|
|
|
2015-09-23 19:16:43 +00:00
|
|
|
* `driver.java` - Set to `1` if Java is found on the host node. Nomad determines
|
|
|
|
this by executing `java -version` on the host and parsing the output
|
2015-09-23 16:44:17 +00:00
|
|
|
* `driver.java.version` - Version of Java, ex: `1.6.0_65`
|
|
|
|
* `driver.java.runtime` - Runtime version, ex: `Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)`
|
|
|
|
* `driver.java.vm` - Virtual Machine information, ex: `Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)`
|
2015-09-21 19:20:51 +00:00
|
|
|
|
|
|
|
## Resource Isolation
|
|
|
|
|
|
|
|
The resource isolation provided varies by the operating system of
|
|
|
|
the client and the configuration.
|
|
|
|
|
|
|
|
On Linux, Nomad will attempt to use cgroups, namespaces, and chroot
|
|
|
|
to isolate the resources of a process. If the Nomad agent is not
|
|
|
|
running as root many of these mechanisms cannot be used.
|
|
|
|
|
2015-10-25 17:00:08 +00:00
|
|
|
As a baseline, the Java jars will be run inside a Java Virtual Machine,
|
2015-09-23 16:44:17 +00:00
|
|
|
providing a minimum amount of isolation.
|
2015-09-20 22:31:33 +00:00
|
|
|
|