This page contains some background (conceptual) information about publishing, a refactored implementation of activation. As the name suggests, publishing handles how content gets published from an author instance to a public instance. Publishing is installed by the Publishing module and extended by the Publishing Transactional module (in Magnolia EE).
How publishing works
On the author instance
PublishingCommand collects the content that needs to be (un)published. This content is then sent to an implementation of
Sender, a component responsible for content packaging.
Package consists of properties and files that will be sent to the public instance.
Packages are only used with a publication and are created by the
Packager which adds the properties and
XML exports of the content to a
Sender creates an instance of
SenderOperation and passes:
Packageupon publication, or
to the instance, together with
SendOperation executes the transfer to the public instance.
On the author instance, editors can move nodes to change the order in which they are stored in JCR. Since Magnolia does not track node order history, it is impossible to keep the same order of nodes on the public instance if you publish just one node that has been moved on the author instance. To make sure that the orders of nodes on both instances are aligned, always publish the parent node of any nodes you moved.
On the public instance
PublicationFilter receives a sender's request. The request is then sent to the
Dispatcher which decides what to do with the request depending on the request headers. The
Dispatcher extracts the data from the request and creates a
ReceiveOperation responsible for creating/updating/deleting the content.
Authentication and security
Each publishing request locks the node (if it exists) where content is to be published and its parent node. In case two users publish to the same (sub)tree, the locking mechanism will wait with a predefined amount of time and will try to obtain a lock for the operation. If the operation receives the lock, it can proceed with content (un)publishing. If not, publishing is considered unsuccessful and the respective status code is returned to the sender.
Recursive and non-recursive publishing
Magnolia supports two methods of publishing content:
- Non-recursive, which publishes only the selected node and its properties.
- Recursive, which publishes the selected node, its properties and its children.
Transactional publishing provides a way to publish content-managed transactions. Content will be:
commitedif all receivers respond with success status.
rollbackedif at least one of the receivers respond with error status.
The transactional publishing receiver uses
mgnlSystem workspace to store the backups of the published content. If content is to be commited, the backup is removed. If content is to be rollbacked, the backup is restored to the workspace it belongs to.
By default Magnolia uses the HTTP transport layer.