Floating Controllers

Concept

Floating builds provide more flexibility than individual builds, and can be distributed to many users within an organization. A floating build licensed for N seats will allow N JEB clients to connect to it concurrently. When a client leaves, its seat is vacated, allowing another client to connect to the Controller.

Currently, only the Enterprise version of JEB2 supports floating licenses.

When starting, as well as during its execution, JEB will regularly probe the Controller to determine whether or not it is allowed to run. This check is based on the number of seats available in your licensed build: eg, a floating license for 5 seats allows 5 different users to run JEB concurrently.

In order to start the Controller, use the --controller flag along with the -c flag. Example on a Linux machine:

$ jeb_linux.sh -c --controller

In order to start JEB, proceed as usual, for instance on Windows:

$ jeb_wincon.bat

Technical notes:

Initial Execution

Note: starting with JEB version 2.2.10, the floating controller no longer requires a support package to run. Whether the machine that will run the controller is connected to the internet or not, simply run the startup script with -c --controller, and follow the initial installation steps. Then, proceed with section Controller Settings.

On a machine connected to the Internet

If the machine executing the controller is connected to the Internet, the following will happen:

Sample log output:

C:\jeb>jeb_wincon.bat -c --controller
Downloading jeb2-sp-win64-v2.zip...
Reading 36675855 bytes: 9>>>>8>>>>7>>>>6>>>>5>>>>4>>>>3>>>>2>>>>1>>>>0
Copying file...
Success
JEB decryption password: ***************
...
...
<EULA>

Governing Law, Jurisdiction and Costs
This Agreement shall be governed, construed, and enforced in accordance with the laws of the State of California, without regard to its conflict of laws rules.

Severability
If any provision of this Agreement shall be held to be invalid or unenforceable, the remainder of this Agreement shall remain in full force and effect. To the extent any express or implied restrictions are not permitted by applicable laws, these express or implied restrictions shall remain in force and effect to the maximum extent permitted by such applicable laws.
Write "yes" to agree, then press enter: yes
Hello Nicolas Falliere. Set up your JEB controller by generating a license key. This one-time operation will only take a few seconds.
Please visit https://www.pnfsoftware.com/genlk, and use the following "license data" blob to generate a key
License data: .............................................
Input your license key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on 0.0.0.0/0.0.0.0:23477...

On a machine NOT connected to the Internet

If the machine executing the controller is not connected to the Internet, the following will happen:

Sample log output when the download fails: (JEB 2.2.9-)

C:\jeb>jeb_wincon.bat -c --controller
Downloading jeb2-sp-win64-v2.zip...
A network error occurred
Download error.
If this system is offline, please visit https://www.pnfsoftware.com/jeb2/downloads to manually retrieve the support package.
The support package was not dropped

You will have to download a support package manually, and drop it in your bin/ folder. Instructions and download links can be found here: https://www.pnfsoftware.com/jeb2/downloads

Controller Settings

After the first step is completed successfully, executing the controller should display something like the following:

C:\jeb>jeb_wincon.bat -c --controller
Mode: Controller for floating clients
Note: X client(s) may simultaneously connect to this controller instance
Listening on 0.0.0.0/0.0.0.0:23477...

As can be seen, by default, the controller is listening on port 23477 on all interfaces. This can be changed by editing the file bin/jeb-client.cfg and adding two entries named .ControllerInterface and .ControllerPort.

For example, if you wish to listen exclusively on localhost, port 30000:

.ControllerInterface = localhost
.ControllerPort = 35000

Updating the Controller

There is no auto-update feature in the controller. The update procedure is: