eXtended Server Pages (XSP/XSPD)

High performant Application Server for C, C++, Java and Shell/awk-Scripts

(Version: 07. January 2017)

• Overview: eXtended Server Pages (english version)

• Übersicht: eXtended Server Pages (deutsche Version)

• Authors Address and Contact

What's new?

• Supporting Raspberry Pi 3 Raspbian

• Supporting Beaglebone Black Rev C 3.8.13 armv7l debian

• Homepage is moved to https://xspd.jimdo.com

Overview: eXtended Server Pages Application Server XSPD (english version)

The program package "eXtended Server Pages" (XSP/XSPD) contains an application server which was designed and developed with the following points of view:

      • high performance (about 2500-3000 requests per seconds ⇒ overhead typical less than 0.4 msec/request), resulting to be one of the most fastest application server

      • high throughput (up to 100 MByte),

      • less usage of cpu and system power

      • implementation of application programs with C-code, Java-code and last but not least shell based application programs

      • easy application program development with usage of customer defined and developed C-libraries (e.g. for database access, host access)

      • UNIX/LINUX based operating system

      • development of application programs like JSP's (Java Server Pages) with tags producing inline code based on C/C++, Java or awk

      • full session handling

Additional the eXtended Server Pages are supporting:

      • UNIX shell-script based application programs (which can act together with C- and Java-application programs within the same session)

      • Java-application programs within the same session can use different Java-VM runtime environments

      • semaphore operations to control access by concurrent sessions with an autotimeout option

      • guarantee of managing database operations by the same application process when accessing by several succeeding HTML pages (supporting full database transactions, e.g. open a database record for updating by the first HTML page and committing it by the following HTML page, of course with an autotimeout option which does the rollback)

      • preforking of application programs to avoid time expensive initialization like database connects and to guarantee a good response time to user requests (same effect like database connect pools at Java based application servers but faster)

      • additional security features like changing of the session id by each http-request, avoiding concurrent access to session context by parallel http-requests with the same session id

Including new Features (Version 6.1.6.x and higher):

      • Reusage of processes for minimizing system load

      • HTTP server interface for XSP applications speeds up performance

      • Supporting Sun/Solaris

      • Supporting 32 and/or 64 bit

      • Supporting new version Java JDK 1.5

      • HTTP encryption type "multipart/form-data", e.g. for file upload

      • Full 8-bit data transfer for up- and download

      • Special application program calls at session-timeout and transaction-lock-timeout

New with Version 6.5.0.x:

      • Supporting Intels Dual Core 64 bit technology

      • Standard HTTP Web server interface, e.g. for transferring images and other standard documents

      • Performance tuning reaching 3000 requests per second and up to 100 MByte data transfer rate

New with Version 6.5.2.x:

      • Cookie Support and Session Handling by Cookies

      • Supporting AIX

      • Supporting Java JDK 1.6

New with Version 6.5.7.x:

      • Supporting Raspberry Pi 3 Raspbian and Beaglebone Black Rev C 3.8.13 armv7l debian

      • Supporting Java 7 and/or Java 8

The main aspect of the eXtended Server Pages is not the development of "another" Java based application server, but using the performance advantages of C-programming together with a full session support in a HTML server based environment, and using the same techniques of Java Server Pages with separation of HTML design and application programming.

The eXtended Server Pages development was started in august 2002. The programming of the whole package based on C. The program package runs under production conditions at a great bank in germany for the managing customer and accounts of the home banking solution since may 2003, configured with up to 2000 parallel sessions and is still working without problems.

Licence and Copyrights:

Usage of the package "eXtended Server Pages" (XSP/XSPD) is on your own risk. The author is not responsible for any failure at the programs or the documentation. This package is provided "as is" and without any express or implied warrenties, including, without limitations, the implied warrenties of merchantibility and fitness for a particular purpose.

The package "eXtended Server Pages" (XSP/XSPD) and the documentation is protected by copyright.
You can use the package "eXtended Server Pages" (XSP/XSPD) under the terms of the OSI "Artistic Licence" (see http://www.perl.com/language/misc/Artistic.html).

Programs or documentation of the package "eXtended Server Pages" (XSP/XSPD) may be changed without any notice.

The author can offer you a professional support for configuration, design or development of XSP-application programs.

The author will be waiting for your hints, problems or success stories.

About the Author and some History of Work

The author has finished his study at the german university of hamburg, section computer science, with an extensive examination of work containing the design and implementation of NUTS, the network and terminal system. NUTS was designed to be the central system between the computer and terminals of the computer science section, and did the same like ethernet networks of today, but at the early 80ties just before ethernet networking or simular technologies becomes the standard. The author developed the whole system on the base of a multiprocessor architecture, including design and implementation of the hardware and the software. The software parts includes an assembler, a compiler, the multiprocessor operating system, the documentation tool and some more. The system has high performance requirements together with a 24 hour 7 days operation time ... and it really performs a long time without problems. The NUTS was replaced together with the replacement of the computer infrastructure coming from Digital DEC10 to VAX11/780 and SUN servers including a new ethernet network structure.

The experience of the NUTS was reused at a commercial project, and the basics of the operation system was ported to a Digital PDP11 system with high performance and less system requirements together with fast task context switching of about 64 tasks at a total memory of 256 kbyte. The operating system was built in assembler code, while the application programs was developed in the C programming language. Then the author works at the first UNIX systems available in germany, sometimes the hardware was based on an industrial system bus.

Later on the author changes his profession to a system house and works on UNIX ports, especially at TCP/IP networking. Along with it the author developed the main board of the NUTS project to become an active serial interface board by changing only the firmware and some hardware programming logic devices, nevertheless he developed the UNIX device driver for the board.

Since 1991 the author works for the german department of CSC on several projects, in case of programming mainly with C, UNIX, Oracle, HTML, JavaScript, shell-scripts, cgi-scripts and at newer times with Java.

Coming with all the experience of several projects the author is a specialist in realtime programming together with optimizing at C and UNIX.

In missing the technology providing by Java application servers the author develops a small preprocessor to get the advantages of the JSP scriptlets for the C programming language. Then the author wants to get the advantages of the session handling for C too. This was the point of no return...

Starting august 2002 the first version of the application server was named CSPD, C Server Pages Daemon, but the basic routines was designed to support other programming languages too. So the application server was to be renamed to XSPD, eXtended Server Pages Daemon. The first version was used at may 2003 in a production environment, and also supports the shell interface. The Java interfacing was started at january 2004 with the version 6.0, and the new version will come with several performance tuning and nevertheless some bug fixes.

If you will take a look into the core of the XSPD you will recognize a lot of the techniques used by operation systems, e.g. management of the session tasks, timeout handling of socket connections and session tasks, management of the system resources like connection channels or session memory including in/out-swapping of partly unused session memory. All together designed with regard to high performance, and time expensive works is mostly placed into non active time slots.

The XSPD was designed to run with less system requirements and high performance together with 24 hours 7 days operation time ... and it performs since the first start at may 2003 in the "real world" of a production environment without any system breakdown.

With the XSPD you will get the advantages of the JSP architecture in a C/C++ programming environment, but not restricted to the C/C++ programming language. The XSP's are available at Java and shell scripting too. The XSPD supports some special useful features like timeout'd session variables, persistent variables, full database transaction management and preforked or reused session tasks. And nevertheless with the XSPD you will get a well tested application server proofed by a production environment, and more: The XSPD is available as open source.

If you have some more questions, some problems or asking for the newest available version, do not hesitate to contact the author. I think he may help you ... because I am the author.

• Link to documentation and source code

Übersicht: eXtended Server Pages Application Server XSPD (deutsche Version)

Das Programpaket "eXtended Server Pages" (XSP/XSPD) besteht aus einem Application Server, der insbesondere unter den folgenden Gesichtspunkte entwickelt wurde:

      • gute Performance (2500-3000 Requests pro Sekunde => Overhead weniger als 0.4 msec pro Request), damit einer der schnellsten Application-Server

      • hohe Daten-Transferrate (bis zu 100 MByte pro Sekunde)

      • geringe Belastung des bestehendes Systemumfeldes

      • Entwicklung und Einbindung von C-Applikationsprogrammen, daüber hinaus von Shell-Script basierten und Java-Applikationsprogrammen

      • Programmentwicklung unter Nutzung bereits existierender C-basierter Schnittstellen-Programmpakete (z.B. Datenbank-Schnittstelle, Host-Anbindung)

      • UNIX bzw. LINUX als Betriebssystembasis

      • Programmentwicklung ähnlich wie bei JSP's (Java Server Pages) mit in den HTML-Seiten integrierten Tags und Programmcode auf Basis C/C++, Java oder awk

      • Unterstützung eines Session-Handlings analog zu Application Servern im Java-Umfeld

Zusätzlich bietet das eXtended Server Pages Programmpaket folgende Features:

      • Unterstützung von UNIX-Shell-Scripts (können zusammen mit C- oder Java-Applikationsprogrammen in einer Session laufen, d.h. Wechsel zwischen C-Programmen, Java-Programmen und Shell-Scripts innerhalb einer Session möglich)

      • Java-Applikationsprogramme innerhalb einer Session können mit unterschiedlichen Java-VM Runtime-Umgebungen laufen

      • integrierte Semaphor-Funktionalität zur Kontrolle paralleler Sessions, z.B. bei konkurrienden Zugriff auf gemeinsame Daten (mit automatischer Timeout-Funktion zur Freigabe der Semaphor-Variablen, da im HTML-Umfeld sonst nicht die Freigabe durch Folge-HTML-Seiten sichergestellt ist)

      • Möglichkeit der zusammenhängenden Bearbeitung z.B. von Datenbank-Operationen über mehrere aufeinander folgende HTML-Seiten durch genau einen Prozess (d.h. mit einer ersten HTML-Seite wird ein Datenbank-Record als "select-for-update" geöffnet und mit einer der folgenden HTML-Seiten erfolgt der "commit"-Befehl, selbstverständlich unterstützt mit einem automatischem "rollback", falls die Folgeseite nicht in einem vordefinierten Zeitfenster ausgelöst wird)

      • Preforking, d.h. Vorstarten, von Applikationsprogrammen, um so z.B. bereits zeitintensive Initialisierungen (Datenbank-Connects oder Host-Anbindungen) durchführen zu können und so eine schnelle Durchführung der User-Anfragen sicherstellen zu können (vom Effekt her ähnlich wie Database Connect Pools bei Java basierten Application Servern, aber deutlich weniger aufwändig)

      • zusätzliche Sicherheits-Features wie z.B. automatische Änderung der Session-Id mit jedem http-Request, kein gleichzeitiger Zugriff von parallelen http-Requests auf eine Session mit gleicher Session-Id

Zusätzliche neue Features (ab Version 6.1.6.x):

      • Re-Usage der XSP Applikationsprogramme zur Minimierung der Systemlast und Erhöhung der Performance

      • HTTP Web server interface für XSP Applikationsprogramme zur weiteren Erhöhung der Performance

      • Unterstützung von Sun/Solaris

      • Unterstützung von 32- und/oder 64-Bit-Code

      • Unterstützung von Java JDK 1.5

      • HTTP encryption type "multipart/form-data", z.B. für File-Upload-Datentransfer

      • Volle Unterstützung von 8-Bit Datentransfer in beide Transferrichtungen

      • Spezialaufrufe für Session-Timeout- bzw. Transaction-Lock-Timeout-Bedingungen

Neu ab Version 6.5.0.x:

      • Unterstützung der Prozessoren von Intel mit der Dual Core 64 bit Technologie

      • HTTP-Web-Server, um Standard-Dokumente, wie JPEG-Bilder, auszuliefern

      • Performance Tuning mit bis zu 3000 requests pro Sekunde und einer Daten-Transferrate bis zu 100 MByte

Neu ab Version 6.5.7.x:

      • Unterstützung Raspberry Pi 3 Raspbian und Beaglebone Black Rev C 3.8.13 armv7l debian

      • Unterstützung von Java 7 und Java 8

Intention der eXtended Server Pages ist nicht primär die Unterstützung von Java-Applikations-Programmen und die Entwicklung eines "weiteren" Java basierten Applikations-Servers, sondern vielmehr die Nutzung der guten Performance von C-Programmen mit den Vorteilen eines Sessions-Handlings im HTML-Umfeld, zusammen mit der Trennung von HTML-Design und eigentlicher Programmierung analog der bewährten Technik der Java Server Pages.

Die eXtended Server Pages Entwicklung wurde gestartet im August 2002. Die Entwicklung erfolgte komplett in C. Der erste produktive Einsatz erfolgte im Mai 2003 bei einer großen deutschen Bank erfolgreich und ohne nennenswerte Probleme. Hier insbesondere für die komplette Einrichtung und Pflege von Kunden- und Kontenstammdaten der Internet-Banking-Lösung, wobei die Konfiguration z.Zt. auf bis zu 2000 parallelen Sessions ausgelegt ist.

Lizenzen und Copyright

Es dürfen natürlich auch die folgenden üblichen rechtlichen Hinweise nicht fehlen.

Bei Nutzung des Programmpaketes "eXtended Server Pages" (XSP/XSPD) übernimmt der Autor keine Haftung für Fehler in den Programmen oder der mitgelieferten Dokumentation.

Das Programmpaket "eXtended Server Pages" (XSP/XSPD) sowie die mitgelieferte Dokumentation ist durch das Urheberrecht geschützt, und die Nutzung unterliegt den Bedingungen der OSI "Artistic Licence" (siehe auch http://www.perl.com/language/misc/Artistic.html).

Der Autor behält sich vor, jederzeit Änderungen an Programmen oder Dokumentationen ohne besondere Hinweise vorzunehmen.

Für die Nutzung des Programmpaketes "eXtended Server Pages" (XSP/XSPD) sowie für Konfiguration sowie Design und Entwicklung von XSP-Applikationsprogrammen kann über den Autor bei Bedarf professionelle Unterstützung erfolgen.

Für Hinweise, Anregungen, Problem- oder Erfolgsmeldungen ist der Autor dankbar.

• Link zu weiterführenden Informationen und Sourcecode der Programme

Tested System Environment

Raspberry Pi 3 B 4.1.19-v7+ armv7l raspbian
Beaglebone Black Rev C 3.8.13 armv7l debian
Fedora FC20 (3.11.10-301.fc20.x86_64, 64 Bit)
Fedora FC12
Fedora FC9
Fedora FC6 (Linux 2.6.18-1.2798, 64 Bit)
Fedora FC6 (Linux 2.6.18-1.2798, 32 Bit)
Fedora FC3 (Linux 2.6.9-1.667)
Red Hat 8.0 (Linux 2.4.18-14)
Reliant Unix 5.45
SunOS 5.9 (SUN/Solaris Version 9, 64 bit)
SunOS 5.9 (SUN/Solaris Version 9, 32 bit)
NetBSD 2.1 (under development)
AIX 5.3

Sources and Documentation

•  see at https://xspd.sourceforge.io

Installation guide Readme.txt and/or Readme.html at the tgz source files. Also interface description for C- and Java-Programming, and a lot of programming examples.

Authors Address and Contact

Joachim Schulze
Gloxinienweg 22
D-22523 Hamburg

© Copyright Joachim Schulze