JBI supports various different routing mechanisms
- a component can choose the exact ServiceEndpoint to invoke operations on
- a component can let the container find the service to invoke operations on
- a component can give the container some hints by specifying the service, interface and/or operation to invoke and then let the container choose which physical service endpoint to invoke using some choosing algorithm (maybe using rules or policy driven metadata). Remember there may be many services available for a specific service, interface and operation names
- a component could act as a proxy in the pipeline, where it can query some registry or repository to find a suitable service to invoke, then invoke it
- a component could use rules or Scripting to decide which endpoints to invoke
So there is a whole range of options - from container driven routing to component driven routing to component giving hints to the container.