From what I can tell from your question, you are planning to use IS java services for one of the primary capabilities that they were intended to provide… allowing your integrations to access to other applications that provide a java-based API.
Does the external application in your case exist on separate server from your IS server or is it a set of libraries that will run on the IS server itself.
If the other application is on a remote server you will need to decide how to invoke it. If the public methods are available as EJB’s you can 1) use the webMethods EJB adapter, 2) deploy the bean in the “cradled” JBoss server using the wMJBoss package or 3) write a java-service to invoke the bean via RMI.
The “right” answer depends on the level of java development skills available to your project team and the complexity of the external application. Option 1 probably requires the least java development skill while option 3 probably requires the most.
If you other app is more or less a set of libraries that can run on the IS server you just need to ensure that the appropriate jar files are placed in your IS server’s /lib/jars folder and that you list the appropriate classes in the “Imports” section of the “Shared” tab of your java service.
You can invoke any Flow or java service on a separate thread using the doThreadedInvoke method of the Service object. The WmSamples package has several examples of invoking services on new threads in the threads.test and threads.utils folders. These examples are somewhat confusing and will take a bit of work to wade through, but do demonstrate the basics.