You may want to consider using JCA for this.
There is nothing to prevent you from starting threads using JMX or in Tomcat, but JCA is generally the preferred approach for this type of integration.
I'm reading about JCA but from what I see, JCA is for connecting to EIS, ERP, databases, mainframes, with emphasis on connecting *to* those datastores, but in my case I dont want to connect to a datastore, I would like other people to connect to me, is that also a purpose of JCA? I dont see mentioning of that...
JCA provides for inbound connectivity as well as outbound. We have quite a few examples of this in our code base under the 'connector' project.