The multi-threaded nature of the Java-based InterChange Server makes
concurrent processing possible for events that connector controllers deliver
to collaborations.
Depending upon the applications and connectors being implemented,
concurrent processing can also be used for requests received by connector
agents. This is done either through multiple threads or through the use
of parallel processes. This capability can be used for requests
originating from either collaborations or access clients.
The manner in which concurrent processing can be implemented depends upon
the type and design of the
connector:
- If a connector agent was written in C++, it is inherently
single-threaded. However, C++ connector agents can be made to run
concurrent processes through the use of Connector Agent Parallelism, a feature
that runs processes concurrently by instantiating multiple slave processes out
of a single-threaded master process in the connector agent. This
feature can be activated or deactivated through the use of configurable
settings in the System Manager.
- If a connector agent was written in Java, it is inherently capable of
concurrent processing through multi-threading, without use of the Connector
Agent Parallelism feature.
- Some connector agents written in Java might have been designed to enforce
single-threaded processing, even though the Java Connector Development Kit
(JCDK) itself is multi-threaded. Typically a Java connector agent might
be designed in this way if the API libraries of the application impose
restrictions that require that the connector agent run only a single
thread. For such connectors, the Connector Agent Parallelism feature
can be used to instantiate multiple slave processes out of the single-threaded
master process of the connector agent.
Note that the use of Connector Agent Parallelism requires that the
application itself be able to support concurrent processing. Some
applications may have architectures or processing requirements that make
concurrent processing impractical.
