jSLP implements all required features of RFC 2608 for SA and UA, that includes accepting incoming message both via TCP and UDP. Implemented optional features are Attribute Requests, Authentication Blocks and User Defined Scopes.
The only divergence from RFC 2608 is the use of LDAP filters. RFC 2608 proposes RFC 2254 LDAP v3 filters whereas jSLP uses RFC 1960 LDAP filters. The difference between the two standards is the support for Extensible Matches that RFC 1960 does not provide. However, Extensible Matching is closely related to LDAP trees and does not really apply to systems like jSLP.
With version 0.7.x, jSLP allows an additional feature that is not directly intended by RFC 2608: The definition of a protocol for service access. RFC 2608 only allows to specify the transport. However, in some cases, it is required to also specify a protocol to allow for services that can be accessed by different protocols. jSLP allows service urls like:
where http is the protocol to access the service. Since the OpenSLP DA does not check the URL part any further, this does not preserve full interoperability with existing SLP solutions.
The major divergence from RFC 2614 is the use of Java Collection Framework by jSLP while RFC 2614 uses
Vector elements for passing scope or tag lists.
Second, RFC 2614 proposes a class named
ServiceLocationAttribute to store attributes and passes attributes as String lists of key/value pairs. jSLP has been designed to be close to OSGi in order to provide best integration, so it uses
Dictionary instances for storing and passing attributes. There is a little inconsistency in using
Dictionary instead of
Map but OSGi uses this format.
jSLP adds support for User Defined Scopes to the API, additionally to the standard method for registering a service, it provides a method where a List of scopes can be passed to select the service scopes at runtime.
Currently, incremental service registration is not yet implemented.