Your Java application is not listening when started by the
systemd script.
Such applications should check for errors (here when creating a listening socket) and print an error message and terminate with a non-zero return value upon errors. The calling script should check the return value, clean up, and print a failure message.
But that would not solve the problem itself. So why is the application working when started manually and not when started at boot time as service?
Probably because the network is not up yet!
You have used
[Unit]
Description = Tourmaline
After= network.target
to start your service after starting the network. But that is not sufficient because the network setup requires some time until the interfaces are up.
To ensure that the network is up use
After=network-online.target
Wants=network-online.target
See also
NetworkTarget[
^].