The Delivery Framework of Alterian Content Manager (ACM) can be found in the top area of the depicted system architecture diagram.
It supports three main delivery routes: Java, ASP.NET and SOAP, all built on top of the core Content Application Engine that provides a single entry point into the system.
Java delivery
There are three primary elements to the delivery of content using Java technologies.
The Content Application Engine (CAe) provides the core to the system, encoding the business logic of the application and providing the central support services. This is interfaced through the public client classes - the Java API - supplied for use by JSP pages (directly or through custom tags), servlets or other Java programs such as EJBs.
The Custom Tag Library provides the recommended way of working with this ACM API through Java Server Pages. It enables access to a broad set of the functionality from the Java API, specifically around the display, creation and deletion of content items, navigation, creating search queries and dealing with the results. The default HTML fragments to be used by these tags are supplied in a configuration file with the system. Where these defaults are inappropriate, JSP developers can supply their own HTML fragments as part of the tags that they use. All text messages, such as for errors, are stored in a locale-specific file.
JSP pages or Java servlets running in an application server can make calls directly into ACM to retrieve content. They can add and modify content and change the structure of a site. User properties can be retrieved and a user's access rights and other properties modified. These servlets require a Java Servlet container for delivery.
Once the request has been received, the controller servlet that front-ends the delivery system, checks if this is an ACM item and that the user has the appropriate credentials to access it. If they do and the item needs presentation applied then it will forward on the request to the appropriate JSP template for that item. If, however, the item is of a multimedia type then it will instead forward the request to the second component, the stream servlet, which will stream the binary part of the item back to the user. If the request is for a resource, which is not an ACM item (a file for example), it is forwarded to the container for handling.
ASP.NET delivery
As described above, the Content Application Engine provides the core to the system, and in the case of the ASP.NET delivery this is accessed via an IIOP bridge. A request is received by IIS and handled by ASPNET_ISAPI.DLL filter.
If a request is for a resource known to IIS, it returns the resource as a response to the requester; otherwise control is passed to the ACM HTTP handler.
The HTTP handler uses the C# API to test if the requested path is for an ACM content item. If so, and the item is a page item with a named template, control is passed to that template, which executes and returns a response to the requester. Otherwise, control is passed to the template implementing the requested (or default) view of that item, which executes and returns a response to the requester. Alternatively, if the request is not for an ACM content item, control is passed to other configured handlers by ASP.NET
RESTful Services
ACM includes a set of RESTful services for interacting with the CAe. These services expose a range of core functionality using RESTful principals. The services, which are built using Java.Net’s Jersey, are deployed by the CAe within an embedded application service module using Codehaus’ Jetty.
SOAP API
Taking advantage of SOAP and Web Services standards, ACM allows desktop applications to be true clients to the Content Management Server - no temporary files, no import and export required. The Java API into the Application Engine is exposed via the Apache® Axis SOAP server running in Tomcat.
The SOAP interface can be accessed directly if required; it is fully documented, and WSDL documents for the interfaces are provided.