In the current JBoss integration the communication within Arjuna occurs over Sockets whereby the communication is within the same JVM and doesn't need to use any socket or listen on any ports. It requires at least two ports, one for TransactionStatusManager and one for the recovery. Another one is not configurable and is used as Arjuna's unique PID.
If no ports have been configured, the next free port is opened.
In our environment we manage the port ranges per JBoss instance. This port range contains the ports for all standard protocols used by JBoss like HTTPS, RMI etc. This port range is a part of the JBoss instance configuration.
Firstly, we would like to avoid a probability that one JBoss instance can allocate the ports dedicated to another instance, by opening its sockets on a next free port.
Secondly, the configuration overhead is large, if the ports should be determined. Since we have up to 100 JBoss instances per stage running it is quite difficult to upgrade their configuration with new ports.
In my opinion an implementation without involvement of sockets would simplify Arjuna's configuration, avoid any port conflicts and increase the usability.
My suggestion is to use piped streams (see attachment); it would prevent the changes on Arjuna's API and the internal algorithms.