I want multiple instances of the same service type (deployed in different managed containers) to be able to share a data structure i.e. each service instance should be able to read and write to the same data structure. Is it possible to share variables between service instances in Sonic ESB?
It depends on whether you want to exchange the data in an arbitrary way (like writing to a shared variable), or in somewhat "organized", or explicit, way (like explicitly passing it from instance 1 to instance 2).
If in an arbitrary way (as your question indicates), I doubt it is possible using Sonic facilities. Because these service instances execute in different Java virtual machines, you would need some external communication mechanism, e.g. files or a database.
However, if the data sharing would be somewhat "organized", you could use Sonic-provided messaging facilities.