The artifact proptocol enables the separation of a resource identity from resource location. Location is handled by a the protocol handler based on the underlying configuration of the Transit system. and is configured by the user. Once DPML Transit is in place it is possible to request any type of resource via java.net.URL() and many existing applications can easily be made repository enabled just by providing DPML Transit in the classpath and setting one or two system properties.
The official specification of the artifact protocol is as follows;
artifact:[type]:[group]/[name]#[version]
type | The type of the artifact. Typical example would be "jar", "png" or "dtd". |
group | The group to which the artifact belong, so that naming conflicts can be avoided. It is recommended that the group is multi-leveled and slash separated, where the top level denotes the distinguishable name of the organization. |
name | The name of the artifact. |
version | The version is an opaque identifier without any built-in semantic contract. That means that Transit places no meaning into the version itself, and 1.1.0 and 1.1.1 does not hint that the latter can be used if the former is not present. |
Using artifact URLs are no different from any http or ftp URLs. You
create them by instantiating the java.net.URL
class,
and setting the protocol to "artifact" (no quotes).
The following example artifact URI identifies a resource named "dpml-http-server" associated with the "dpml/http" group, a resource type called "part" and a version value of "1024".
artifact:part:dpml/http/dpml-http-server#1024