Open mdutoo opened 12 years ago
EasySOAClasspathAnalysis.discover()
after the classpath is set up to trigger the discovery.(Discovery note: in general, if we don't know all that we need to send a discovery notification, the pending data should be stored and the user action required on the probe side - not on the EasySOA core)
Service discovery allow comparison for sanity check purposes. Versioned services allow to check that the "right" service is used along an EasySOA-integrated SOA development process (ex. in dev, according to design).
However they do not allow that when dealing with what already exists in the entreprise, because the version of the consumer is not known. It's possible to do a discovery of consumed services, but all too often consumed service definitions point to an unversioned, runtime only definition provided by the provider's service stack - so even if they had this information, it would be about the provider.
The solution is discovery of versioned service consumer implementations, that is applications, and at a grain both finer and more manageable (because that's their implementation i.e. what they're made of), deployables (or "modules"). Deployables can be dependency artifacts (ex. in Java Maven artifacts or OSGi bundles, in Ruby Gems...), or be more specific to platforms.
If versioned deployables's internals have information (typically configuration ex. SCA, OSGi, but also processes ex. BPEL, XPDL) :
Else all deployables (or a root deployable) can be used as signature / trace of the application version, and the same checks be made, albeit on a smaller perimeter.
in Java, with Maven
Each maven artifact (jar, war, pom...) is a versioned deployable, and to each ApplicationImpl is mapped a root artifact (typically a pom). Maven snapshots can also be used it they're further versioned by a timestamp. Beyond, maven artifacts are also OK for most Java deployables (Nuxeo bundles, OSGi bundles, JBI, Bonita's .bar archives...) and dependency managers (Ivy...).
Maven artifacts can be discovered :
Doing Maven artifact discovery :
Service stacks & ESB already managing such info
They can use the same EasySOA remote Service & Deployable discovery API to feed EasySOA with information they already manage : their versioned deployables, the services they expose and consume and further internals info. They can do so by pull (EasySOA asking them) or push. Pull can be done by Jasmine probes, or by EasySOA (triggered by user action, scheduling or their registration).
Priorities