JBoss.orgCommunity Documentation
The Mobicents XML Document Management Server (XDM Server) is part of the Mobicents SIP Presence Service; it is the first free and open source implementation of an XML Document Management Server as defined in the Open Mobile Alliance (OMA) XML Document Management v1.1 specification. This functional element of next-generation IP communication networks is responsible for handling the management of user XML documents stored on the network side, such as presence authorization rules, contact and group lists (also known as resource lists), static presence information, and much more.
The Mobicents XDM Server includes the following XCAP application usages:
The SIP interface partially implements the XCAP Diff Event IETF draft, version 3. Subscriptions to a single document or usage by an entire application are supported. However, these differing usages do not extend to the single-XML element or attribute value level. Regarding the notifications, the diff-processing subscription parameter, if present, is ignored, and patching of content is not available at the moment, which means that only the document etags, new and/or old, will be provided.
The XDM Server comprises the following functional elements:
Functional Elements of the XDM Server
The XDM Server data source is where all user XML documents are stored. Information related to the server itself is also stored in this element along with the user's provisioned data
The data source also handles subscriptions to updates on specific documents, or complete XCAP application usages.
The aggregation proxy is responsible for handling an XDM client's XCAP requests, which includes authentication of the requester.
This element includes the XCAP Server logic to process an XCAP request and return a proper response, including authorization for the authenticated user.
This element, using the SIP protocol, is responsible for handling subscriptions to documents managed by the XDM. Its functions include the authentication and authorization of a subscription, attachment to update events on specific documents or application usages, and the sending of notifications when documents change.
The XDM Server is built on top of the Mobicents JAIN SLEE container. This figure depicts the architecture of the XDM Server implementation.
The Functional Elements of the XML Document Management Server
This resource adapter implements the Data Source functional element.
The RA Type
defines two activities objects, DocumentActivity
and AppUsageActivity
, both of which are used to fire events that signal that a document, element or attribute was updated.
The RA Type
also defines a Service Building Block (SBB) RA interface to manage the users and documents stored in the XDM Server, and create activities, where events will be fired. The resource adapter will only fire events on activities that exist; that is, the RA won't create activities implicitly if a document is updated.
The RA Type
also provides a base abstract implementation of the resource adapter, making it very simple to change the underlying resource used to store information, which is by default the internal JDBC datasource of the JBoss Application Server.
This resource adapter stores the XCAP application usages installed in the server.
Each AppUsage
is an object that includes the logic to validate XCAP documents that result from XCAP requests and are expensive to create; this resource adapter thus provides caching of AppUsages, using a pool model.
The resource adapter doesn't possess events or activities.
XCAP Application Usages are installed through a JAIN SLEE service, making it possible to add and/or remove application usages while the server is running.
This JAIN SLEE service implements the aggregation proxy functional element. It handles events fired by the Mobicents HTTP Servlet resource adapter and then uses two child SBBs: the User Profile Enabler SBB
to retrieve information regarding the user needed for authentication/authorization of the XCAP request, and the Request Processor SBB
, which handles the XCAP request.
The Request Processor SBB
implements the request processor functional element, providing a synchronous SBB interface to process XCAP requests. It uses the AppUsage Cache
resource adapter to borrow AppUsage objects, and the Data Source resource adapter to retrieve or set documents stored in the server's data source.
This SBB provides a synchronous SBB interface used in JAIN SLEE child relations in order to retrieve user information, to be used on user authentication. Two different implementations of the interface are provided: the first considers whether the information is stored in the XDM Data Source, another interfaces with a Diameter Sh Server, such as IMS HSS.
This JAIN SLEE Service extends the abstract SIP Event Subscription Control component to handle SIP subscriptions on the xcap-diff event package.
The implementation architecture figure also contains client-side components:
Client-Side Components of the XML Document Management Server
The XCAP client is a simple API to interact with an XCAP Server that internally uses the Apache HTTP Client.
The XCAP Client Resource Adapter adapts the XCAP Client API into the JAIN SLEE domain. It provides methods to interact with the XCAP server in both synchronous and asynchronous ways.
The RA Type description and code snippets using the RA can be found here.
The XDMClientSBB is an interface of a JAIN SLEE SBB to be used as a client to the Mobicents XDM Server (and others compliant with same standards), in JAIN SLEE child relations.
Two implementations of this interface are provided:
InternalXDMClientSBB
is intended to be used on applications running in the Mobicents XDM Server JAIN SLEE container, and
ExternalXDMClientSBB
, which is intended to be used on applications in a different JAIN SLEE container than the Mobicents XDM Server.
The Mobicents XDM Server comes pre-configured for an XCAP root of http://<hostname>:8080/mobicents, hostname being the host/IP used to start the server (127.0.0.1 by default). It is possible to change the last path segment:
Rename $JBOSS_HOME/server/<server_profile>/deploy/mobicents.war
to the desired last path segment in the XCAP root (e.g. rename to xcap-root.war for an XCAP root of http://<hostname>:8080/xcap-root). The <server_profile> is the server configuration/profile used in the underlying JBoss AS, by default it is default
Edit properties file $JBOSS_HOME/server/<server_profile>/deploy/msps-xdms-ds-ra-DU-1.0.0.BETA5.jar/library/msps-xdms-core-sbb-1.0.0.BETA5.jar/org/mobicents/slee/xdm/server/configuration.properties
, define the new XCAP root last path segment through the property XCAP_ROOT, don't forget to use a leading / . Again the <server_profile> is the server configuration/profile used in the underlying JBoss AS.
XCAP interface is public, used by users to manage their information such as buddy list, presence authorization rules, etc. thus it needs to enforce user authentication. To do the user authentication, the server relies on the User Profile Enabler managed data, such as the users passwords, and this information must be provisioned, this can be done in two ways, both requiring the server to be running:
Users can be added/removed through the MBean named slee:userprofile=UserProfileControl
Users can be added/removed through adding/removing rows of the table named MOBICENTS_SLEE_ENABLER_USERPROFILES.
For further information on the Mobicents XDM Server, here is a list of additional resources: