DSMLv2/SOAP focuses on extending the reach of LDAP directories.
The following figure describes the communication between an application at the client side and Novell eDirectory. The application uses Java* Naming and Directory Interface (JNDI) to access eDirectory.
JNDI is an industry-wide, open interface that gives developers a common interface for navigating the many naming systems that exist in the computing world today. JNDI greatly simplifies the code needed to browse directory services such as eDirectory, X.500, and LDAP.
Figure 1-1 DSMLv2/SOAP Archietecture

JNDI can have two providers:
Existing LDAP applications can use DSML to access eDirectory and other LDAP directories.
The DSML connector converts SOAP requests to LDAP and accesses eDirectory. Clients send and receive DSML through HTTP/SOAP to and from the DSML connector. The DSML connector is a servlet in a Java or J2EE container. This means that it communicates over HTTP and handles SOAP itself. DSML is handed to the Java LDAP API and is converted into LDAP messages and sent to eDirectory over LDAP. The DSML connector could optionally run in a SOAP server.
DSMLv2/SOAP for eDirectory makes use of DSMLReader and DSMLWriter classes, which are shipped as part of utility classes in Java LDAP SDK. It instantiates a DSMLReader class object and DSMLWriter class object.
Figure 1-2 DSML Reader and Writer

The DSMLReader class object takes the HttpServletRequest request as an input stream containing XML with DSML tags. It ignores all XML tags before and after batchRequests. All requests within batchRequests are converted into LDAP messages and sent to the LDAP server. The response from the LDAP server (in LDAP message format) is converted back to DSML tags using the DSMLWriter class object and the corresponding DSML tags are written back to the specified output stream.
DSMLv2/SOAP expresses LDAP requests and responses as XML document fragments. DSMLv2 is a systematic translation of LDAP's ASN.1 grammar (defined by RFC 2251) into XML schema. Therefore, when a DSMLv2 element name matches an identifier in LDAP's ASN.1 grammar, the named element means the same thing in DSMLv2 and in LDAP.
Except where noted otherwise, the DSMLv2 grammar follows the same rules as the LDAP grammar, even if those rules are not explicitly expressed in the DSMLv2 schema—for example, a DSMLv2 AttributeDescription can contain only those characters allowed by LDAP.