Hi Jason
I'm looking to dynamically change the configuration of Synapse while
it is running
How exactly are you planning to do this? Could you elaborate on the
proposed approach?
The "Extending Synapse" article on the Synapse main page notes that it
is recommended that custom mediator implementations do not modify the
SynapseConfiguration as it is shared system wide, but this also seems
to imply that it could be changed.
Well it "could" - but a mediator should *not* try to update the
configuration - as it is just a part of that configuration itself, and
should only be worried about how it performs its message mediation,
against the current message that was passed into it
I also had a quick peek at the WSO2 ESB, since it is built on
Synapse, and it seems to make changes by calling into the
SynapseConfiguration.
Yes, we do this via a set of "Admin" web services that we deploy to the
parent Axis2 engine, that has access to the Synapse configuation.
Usually, I do not try to promote the WSO2 ESB on any Apache mailing list
- but since you have directly asked about it - you may view, study or re
use the code - or just use it as it is as the WSO2 ESB, without trying
to reinvent it all over again. Its under the ASL v2 license and the
code, JIRA and mailing lists public too.
However, digging into the implementation, I see no indication of any
form of thread synchronization in SynapseConfiguration, nor anywhere
it is referenced. This seems to imply that changing the configuration
while running would not be thread safe. Am I missing the
synchronization mechanism?
Right now we have a single user model for administration from that
implementation. We will address any such issue soon as we integrate with
user management functionality in the near future
asankha