Use additional Java library
stack-clients is another commonly used Java library within TheWorldAvatar. It is therefore chosen as an example to demonstrate how to use additional Java library. The same principle can be applied to any other Java packages.
Build and package the jar files¶
All commands tested in WSL2.
The first step is to build the stack-clients package:
Then copy the stack-clients.jar file and the lib folder into a temporary folder, say name tmp_stack:
Finally install the stack-clients library into the twa:
Note that here we are not providing the
--jaroption so thatjpsrmwill use the first jar file it finds in thetmp_stackfolder. Given that there is only one jar file in this folder, this will work just fine.
Upon successful installation, you will see below messages in the concole:
Info: Adding the StackClients resource...
Info: Adding StackClients resource to the registry.
Info: Fetching StackClients resource files.
Info: Installing StackClients files...
Info: Installing StackClients files complete.
Info: Saving the registry.
The temporary folder can now be safely removed:
rm -rfshould be used with caution!!!
Instantiate and launch gateway¶
Note that it is recommended to have ONLY ONE gateway object in your Python application per java resource you wish to access. This can be easily achieved by instantiating and starting the resource gateway objects in a single module and then to import these objects instances to any other module that requires it.
Therefore, one can instantiate the gateway for StackClients in the following way:
File: stack_clients_gateway.py
from twa.resources import StackClients
stackClientsGw = StackClients()
stackClientsGw.launchGateway()
and importing it in any other Python modules:
File: my_python_script.py
from stack_clients_gateway import stackClientsGw
# Create module views to relevant Stack clients
stackClientsView = stackClientsGw.createModuleView()
stackClientsGw.importPackages(stackClientsView, "com.cmclinnovations.stack.clients.docker.ContainerClient")
# Retrieve endpoint configurations from Stack clients
containerClient = stackClientsView.ContainerClient()
# other custom codes...