Guide - Architectural overview

Introduction

This document briefly describes the Phoenix server architecture.

Multiple Server Application hosting

Phoenix hosts one or more server applications at the same time in the same Virtual machine.

Phoenix layer diagram

Phoenix Layers

Shown above are three hosted server applications. A mail server that would implement multiple listeners for incoming and outgoing services (POP3, SMTP, IMAP etc). Outlook, Eudora and other mail clients would be able to connect to the server. As it happens, Apache has a project in progress called "James" that provides these services and Newsgroups. Also shown is a Web server. That would respond to HTTP/HTTPS requests from similar standards based clients and be able to host it's own applications (web-apps and virtual websites). Lastly, and non-existant currently at Apache is an EJB Server. This would be able to host it's own bean applications and might use the web server for it's HTTP needs.

Packaging of a Server Application

Phoenix application are distributed in a single archive.

Packaging in terms of blocks

Phoenix hosts server applications made up of blocks. The blocks may depend on libraries to function correctly. The blocks are tied together with Assembly instructions and Configured externally.

Phoenix application in block view

Phoenix App Block

Packaging in terms of block jar files

The server application is entirely contained within one "sar" file. Sar is "Server ARchive". Each block is a jar file. The dependant libraries are regular jars (placed within a directory "SAR-INF/lib" insde the sar file). The Assembly and configuration instructions are in xml form and contained within a "SAR-INF" directory inside the sar file.

Phoenix application in block jar view

FtpServer as a Phoenix application

FtpServer (part of the Avalon/Cornerstone project) is distributed in sar form. Here is a view of it's blocks. It has no third party jars that it depends on.

FtpServer, a real Phoenix application

Phoenix App FtpServer

Notes - Phoenix does not limit the number of blocks that it allows in a sar file. We have taksdefs for Apache's Ant tool for making sar files. See the "Block Developers Guide" (left margin of this page) for more what/how/why.

by Leo Simons