TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Condense Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
"Team Ada: Ada Advocacy Issues (83 & 95)" <[log in to unmask]>
Pascal Obry <[log in to unmask]>
Fri, 24 Aug 2001 15:52:38 +0200
text/plain; charset=us-ascii
Pascal Obry <[log in to unmask]>
text/plain (258 lines)

                            A W S - Ada Web Sever
                                1.0 release

   Dmitriy Anisimkov
   Pascal Obry                                               August 24th, 2001,

Dmitriy Anisimkov and I are very happy to announce the availability of the
AWS 1.0 release. Note that the API has been changed a lot. This is part of a
redesign to have a cleaner API. We plan to change slightly the API at this
stage but it should be mostly stable.

Note that this is definitely a major version.

AWS stand for Ada Web Server. It is not a real Web Server like Apache. It is
an HTTP component to embedded in any applications. It means that you can
communicate with your application using a standard Web browser and this
without the need for a Web Server. AWS is fully developed in Ada with GNAT.

Note that AWS has moved to the ACT Libre Site. Sources and documentation can
be downloaded here. See pointers below.

Here are the main changes:

  - The status page to use (and associated images) can be changed via the
    configuration file.

  - Improved status page. A message is displayed if there is no session active
    and if there is no hotplug module loaded.

  - There is now 2 initialization files: aws.ini (parsed first) then
    <program_name>.ini. So it is possible to have general initializations for
    AWS servers in the same directory and specific initializations for each AWS

  - Now option name (in initialization files) are not case sensitive.

  - Log filename is now prefixed by the name of the program (instead of
    "aws"). It is now possible to have many AWS program using the log facility
    running into the same directory.

  - Forms or CGI parameters are now passed to the hotplug modules.

  - Hotplug modules now support GET and POST methods.

  - Client POST request fixed.

  - Handle properly file name with spaces both with Netscape and IE.

  - Correctly use Upload_Path to store uploaded files.

  - A Web directory browsing services has been implemented.

  - A set of icons is provided, this is used by the directory browser template.

  - Remove use of AVL tree generic for session data and use a new component.
    The AVL tree was quite buggy. This was a serious problem, please consider
    upgrading to AWS 1.0 as soon as possible.

  - improve the documentation.

  - finer control of the log filename (see AWS.Server.Start_Log and

  - Add log information in the status page.

  - New log split mode policy: Each_Run

  - Configuration options are now on a per server basis instead of per
    process. See AWS.Config, AWS.Config.Set and AWS.Config.Ini.

  - As always some minor bugs have been fixed but are not listed here.

NOTE: Since we have switched to the .PNG file format we have found that
Netscape Navigator is not able to display the PNG transparent layer properly!

At this stage we feel that AWS is ready to build small to medium Web
server. AWS has been reported to work under Windows NT, Linux and FreeBSD 4.1.

With this new version you'll need at least version 0.1.11 of the Socket binding
from ENST. It has been tested and works fine with version 0.1.13 too.

You can download AWS and the Sockets binding for Win32 directly from:

An online version of the documentation can be found at

The OpenSSL libraries (optional) distributed are for Windows GNAT 3.13. GNAT
3.12 users must build the libraries from sources or obtain Win32 binaries from

Under UNIX you'll have to build the libraries from sources, it is quite easy
to do so. This has been tested under Linux without trouble.

See documentation for build information.


AWS distribution:

Templates_Parser sources:
   Templates_Parser module is provided with AWS distribution. Latest version
   of this module and the documentation can be found at:

   Temlates_Parser is a very useful add-on for AWS. You should have a look at
   it if you plan to develop a Web service. Templates_Parser permits to
   completely (yes 100%) separate the HTML design from the Ada code.

   Some other Templates engine are WebMacro, FreeMarker, PHP, ASP, JSP and
   Velocity. All of them are based on explicit iterators (#foreach with a
   variable) where Templates_Parser is based on implicit ones (you use a more
   intuitive table iterator). Be sure to check the documentation. Only
   the Velocity project has the goal to support complete separation of HTML
   design and code.

Socket binding:

   for Win32:

   for UNIX:

POSIX Binding (optional) :

   for Win32:

   for UNIX:

OpenSSL library (optional) :

   Sources for UNIX or Win32:
      (we have used and we distribute OpenSSL version 0.9.5a with this AWS
      release, we have also tested AWS with OpenSSL 0.9.6a without trouble)

   binaries for Win32 with GNAT 3.13 (and later):
      Included with the main AWS distribution.

   binaries for Win32 with GNAT 3.12:

   See OpenSSL license (docs/openssl.license).

Windows Services API (optional):

   To build runme demo as a Windows NT/2000 services you must download
   the services API made by Ted Dennison for his SETI@Home project.

Reporting bugs:

You can report bugs to:

   Dmitriy Anisimkov    [log in to unmask]
   Pascal Obry          [log in to unmask]

It would be nice if you could also sent us a note if you are using AWS just
to know if it is used at all or not :) And if you are ok, we'll add an entry
for your project in the next section.

AWS uses

- SETI@Home from Ted Dennison. AWS is used as a "plugable" GUI to retrieve
  different program status.

- DOCWEBSERVER from Wiljan Derks

  In our department we keep our documents in a directory tree. These documents
  are all project related and have a certain naming convention to be able to
  find the right document. In the past I already wrote a program that searches
  though this directory and then converts the found documents into fixed html
  pages. With AWS I was able to get a much nicer setup. I have now a server
  that can do the following:
    - browse through the projects in explorer style. The html contains info
      about the document like date and title.
    - one can check in documents through the web interface
    - it shows our download page as I have send you in the example
    - we have now all our documentation in small pieces of html as is needed
      to build .chm (w2k compiled help) files. For these we use a content
      file, that is also stored in the document archive.

  The docwebserver gives by reading all this stuff the direct view on this
  documentation. On the other hand I can run some tool and automatically
  generate the .chm files.

- OESM Server (OESM=Overall Equipment Status Monitoring) from Wiljan Derks

  I am working on a project now for our factories. ITEC mainly delivers
  equipment for discrete semiconductor assembly. Almost all of that equipment
  is now controlled by a similar Ada 95 based code with having a lot of code in
  common. One of the common things, is the way we log errors and state changes
  of our equipment.

  The OESM Server is an application which copies all this information
  continuously to its local pc by opening the proper files on the remote
  equipment. That data copied is also stored in local files. The web server
  component of the application can then, making use of that data, give reports
  that show things like the amount of products produced in a certain period,
  error paretos of equipment, mtbf, %time in production and of course many
  other things.

  The cool thing of course is that this information can easily be charted (I
  am use kavachart) and it allows simple navigation through different groups
  of equipments and different views on the equipment.

- WORM from Pascal Obry

  A Web server to share bookmarks, this server was using a standard CGI
  design. To keep session information we were using a GLADE partition. With
  AWS the design has been really simplified, there is no need for a session
  partition, there is no need to build all CGI as partitions too. GLADE is now
  used only to handle distributed objects. Indeed WORM is a multi-server
  system (using RACW) with a register/unregister mechanism.

  Also the server seems to be fastest, there is no more CGI to spawn.

- Internet Currency Trading System at by Dmitriy Anisimkov

  This is a server is used to keep historical data about currency trading to
  build charts of currency prices. The charts viewer part is written in Java
  and loaded through AWS. This server can be reach on the Internet.

Thanks to all who have reported bugs and have sent us patches.

Dmitriy & Pascal.


--| Pascal Obry                           Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--| "The best way to travel is by means of imagination"