<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MyArch &#187; Web Services Registry</title>
	<atom:link href="http://myarch.com/category/web-services-registry/feed" rel="self" type="application/rss+xml" />
	<link>http://myarch.com</link>
	<description>Builds and bytes</description>
	<lastBuildDate>Mon, 30 Jan 2012 01:22:28 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Using Maven Repository as Web Services Registry</title>
		<link>http://myarch.com/using-maven-repository-as-web-services-registry</link>
		<comments>http://myarch.com/using-maven-repository-as-web-services-registry#comments</comments>
		<pubDate>Sun, 01 Jul 2007 18:45:10 +0000</pubDate>
		<dc:creator>Alexander Ananiev</dc:creator>
				<category><![CDATA[Web Services Registry]]></category>
		<category><![CDATA[Web services]]></category>

		<guid isPermaLink="false">http://myarch.com/using-maven-repository-as-web-services-registry</guid>
		<description><![CDATA[
A Web services registry is arguably one of the most important components of SOA. The registry provides a single source of information about all services in an enterprise. 

There are a number of commercial registry/repository products but all of them are quite pricey. Also, smaller organizations or organizations just starting with SOA may not need [...]]]></description>
			<content:encoded><![CDATA[<p>
A Web services registry is arguably one of the most important components of SOA. The registry provides a single source of information about all services in an enterprise. 
<p>
There are a number of commercial registry/repository products but all of them are quite pricey. Also, smaller organizations or organizations just starting with SOA may not need the full power of a commercial registry/repository product; most of it functionality will remain unutilized. On the other hand, existing registries do not do a particularly good job of managing dependencies between services as well as between service consumers and service providers. Dependency management must be a key consideration in SOA since, unlike in the case of monolithic applications, an SOA consists of a large number of “moving parts”, that is, services. In a well developed SOA most services depend on other services and these services in turn may rely on some other services. Being able to manage and analyze services dependencies is required in order to be able to implement robust and maintainable SOA. 
<p>
Open source <a href=http://maven.apache.org/>Maven project</a> has become something close to a de-facto standard in the area of dependency management for building Java-based projects and components. 
<span id="more-65"></span>
Also, Maven <a href=http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html>dependency mechanism</a> can be used with any Ant build by utilizing Maven Ant dependency tasks (i.e., there is no need to migrate existing Ant build processes to Maven). Maven also has a pretty sophisticated repository support allowing implementing custom central repositories as well as local repository snapshots. Projects like <a href=http://www.jfrog.org/sites/artifactory/latest/>artifactory</a> further enhance Maven repository and add nice UI. 
<p>
So why not use a Maven repository for storing Web services artifacts, such as WSDL, schemas and policy files? Each service or a group of related services from the same service provider can have its own POM. Using Maven (i.e., by executing “deploy” goal) service providers can publish WSDL and other artifacts (but, obviously, no binaries) along with their POMs in a Maven repository. Service consumers could then download these artifacts based on the dependencies defined in their POMs. If the version stays the same, service consumers don’t need to do anything. In case of a change, service consumers may need to make changes to their client’s implementation, including re-generating client’s classes (this is, of course, a manual process that requires some analysis of the changes). In other words, the process is very similar to how we deal with changes in APIs in third-party libraries. 
<p>
The entire process can be supported by out-of –the-box Maven build process. The only required change is a custom artifact handler to support new “service” extension and packaging type. 
<p>
An existing change management process can be adapted for Web services so that service consumers are notified about new versions and their backward compatibility. Again, there is nothing new here; most organizations already have a change management process in place to handle changes in shared libraries. 
<p>
Using Maven for managing Web services releases and dependencies has multiple benefits:
<ul>
<li>Ability to use full range of Maven dependency management capabilities including  version range dependency, snapshot and central repositories and so on.
<li>Ability to use Maven dependency reports for dependency analysis.
<li>Web services dependency management is consistent with the dependency management process used for other artifacts, such as jars, wars and so on. Commercial repository products often provide a proprietary mechanism that can only be used for Web services - related  artifacts. 
<li>Tight integration with any Maven or Ant-based build process, no need for using UDDI or proprietary APIs for publishing services. 
<li>Service consumers that do not use Ant or Maven could still participate in the process by downloading Web services artifacts manually using UI provided by Artifactory or a similar product (although using automated approach should be the preferred option). 
</ul>
<p>
Of course, the Maven-based approach does not do anything for managing and enforcing (including run-time enforcement) of Web services policies which is something that commercial registry/repository products can do quite well. So organizations need to evaluate the need for a commercial registry/repository based on types and complexity of the policies they would like to enforce. In many if not most cases the policies are quite straightforward in which case Maven-based solution becomes a viable option.


]]></content:encoded>
			<wfw:commentRss>http://myarch.com/using-maven-repository-as-web-services-registry/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

