jSLP

jSLP is the standalone version. It requires commons-logging to be in classpath. For example code and setup instructions, see Getting Started .

jSLP Features

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.

Divergence from RFC 2608

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: service:test:myservice://http://myhost:8080 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.

Divergence from RFC 2614

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.

Java VM requirements

jSLP has been designed to run on servers or desktop machines as well as on small and embedded devices. It has a very small memory and storage footprint and runs on Java 1.2 compatible virtual machine or above.
Successful tests have been performed on Sun J2SE 1.4.2 and J2SE 1.5, J2SE 1.6, Sun J2ME Personal Profile cvm on Sharp Zaurus, SableVM on iPAQ Linux Familiar, JamVM on iPAQ Linux Familiar, IBM J9 on iPAQ Windows PocketPC, IBM J9 on a Nokia 9300i smartphone, JamVM on a LinkSys NSLU2 (Slug) and an Intel iMote2 sensor network node with a blackdown VM.