After installation of POP-Java we need to take some steps if we want to enable some advanced features.

To do this a small dedicated shell was created. To run it go into the POP installation directory and run:

$ java -javaagent:JarFile/popjava.jar -cp JarFile/popjava.jar popjava.scripts.POPJShell
This shell is not interactive, you must type every command.
Use ``help`` to know the available commands.
Every command has a --help (-h) flag which print its options.

This will open the shell. To execute a command simply write it and press enter. No history is available at this time.

$ help
Available options:
  help                  print this help
  jm                    configuration of the local job manager
  debug                 toggle system debug option
  keystore              all keystore related operations.

About the Shell

Every command in the shell has a help method, usually by adding -h or --help to it. When it asks for a missing value is because that value could have been given by an option. See below.

$ jm node add -h
usage: jm node add [OPTIONS]
add a new node to a network
Available options:
  --type, -t          The type of node we are working with (jobmanager, tfc, direct)
  --uuid, -u          The UUID of the network to add the node into
  --host, -H          The destination host of the node
  --port, -p          The destination port of the node
  --protocol, -P      The node specific protocol (socket, ssl, daemon)
  --certificate, -c   The certificate for the SSL connection
Node specific options will be asked.

TLS Configuration

In case you want to use secure connections, you first have to create a keystore. Using the keystore create command the command will ask us to insert all the needed values. It will also save the keystore information in the POP-Java’s global configuration so users will be able to use secure connection too.

$ keystore create
missing value for 'file': global.jks
missing value for 'storepass':
missing value for 'keypass':
missing value for 'alias': localNodeOnly
missing value for 'rdn': OU=PopJava,CN=testNode
Generating keystore...
Saving configuration...

Job Manager Configuration

If there is not a third party application to configure the Job Manager, the shell also partially give this capability.

The first thing to do is start the Job Manager.

$ jm start
Job Manager started.

With this we can now interact with it.

Network creation

To create a new network you will have to execute the jm network create command. Its output should something like the folowing snippet.

$ jm network create
missing value for 'name': friendly net
missing value for 'uuid':
Network 'friendly net' created with id [d3fe0096-e582-4b85-bdc0-a429b169d24f]
Network certificate available at '/home/dosky/pop-java-dist/friendly net@d3fe0096-e582-4b85-bdc0-a429b169d24f.cer'

The command will also export a .cer file which can be shared with trusted parties to communicate with them.


The UUID value is what really identify the network, if someone else want to communicate with you it has to create a network matching the generated UUID in the command above. This means not leaving it blank.

You can see the existing network by running jm network list

$ jm network list
Note that networks are identified by their UUID.
| UUID                                     | Friendly name                  |
| d3fe0096-e582-4b85-bdc0-a429b169d24f     | friendly net                   |

Adding friendly nodes

Similarly to how we add network, a command exists in order to add friendly nodes.

$ jm node add
missing value for 'type': jobmanager
missing value for 'uuid': d3fe0096-e582-4b85-bdc0-a429b169d24f
missing value for 'host': <host>
missing value for 'port': <port>
missing value for 'protocol': ssl
missing value for 'certificate': other certificate.cer
Node added to network 'd3fe0096-e582-4b85-bdc0-a429b169d24f'


Currently there exists three type of node: tfc, jobmanager, direct.

Currently there exists two protocol: socket, ssl.

When working with ssl a certificate is needed and the connection will be encrypted, while socket will be unencrypted.

Other options

POP-Java is very flexible, most of its options can be user configurable.

The shell by itself doesn’t give the possibility of setting most of those options, bu they can be manually modified by adding the keyword and the value in the file situated in the etc directory of the POP installation.

A use can potentially modify those option for its own application by adding a -configfile=<file> option at the program execution.

For more information in regards of the options, check the popjava.util.Configuration class in the Javadoc or the developer Configuration section.