LISTSERV mailing list manager LISTSERV 16.5

Help for TEAM-ADA Archives

TEAM-ADA Archives

TEAM-ADA Archives













By Topic:










By Author:











Proportional Font





TEAM-ADA  June 2004

TEAM-ADA June 2004


[AWS] [ANNOUNCE] AWS 2.0p released


Pascal Obry <[log in to unmask]>


Pascal Obry <[log in to unmask]>


Wed, 9 Jun 2004 10:44:33 +0200





text/plain (487 lines)

AWS 2.0p is out. Be sure to have a look at the new ada2wsdl tool (based on
ASIS) that makes quite easier to build Web Services using AWS. Note also that
AWS CVS repository has been opened for read-access. 

Here is a copy of the readme.txt.

			    A W S - Ada Web Server
			    2.0 release / SOAP 1.2
   Dmitriy Anisimkov
   Pascal Obry                                               June 9th, 2004

We are happy to announce the availability of the AWS 2.0 release. The API
could change slightly at this stage but should be fairly stable now.

AWS stand for Ada Web Server. It is a small yet powerful HTTP component to
embed 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.

AWS support SOAP/WSDL, Server Push, HTTPS/SSL, client HTTP, hotplug
modules... We have worked very hard to make this release as stable as
possible. Note that Hotplug modules are very nice but have a potentially
security hole as it is implemented today. A new secure implementation will be
proposed in a future version.

AWS comes with SOAP/WSDL support, two tools are proposed:

   ada2wsdl   which generates a WSDL document from an Ada spec

   wsdl2aws   which generates stubs/skeletons AWS code from a WSDL document

Both tools have mapping for standard Ada types but also supports Ada
enumerations, character, records and arrays.

The SOAP implementation has been validated on


Here are the main changes since AWS 1.4 :

   - ada2wsdl a new tool to generate WSDL document from an Ada spec. This
     tool will help further to build Web Services with GNAT. ada2wsdl is
     based on ASIS for GNAT. You must have GNAT and ASIS installed. ada2wsdl
     handles standard Ada types, Calendar.Time, records, arrays
     (constrained and unconstrained), derived types.

   - Add -types wsdl2aws's option to generate code compatible with an already
     present Ada spec. This is to be used with ada2wsdl tool. With -types
     wsdl2aws will not generate records or arrays, instead it will use them
     from the specified Ada spec.

   - Add -cb wsdl2aws's option to generate the SOAP callback procedure for
     the server.

   - Add -main wsdl2aws's option to generate a main procedure to build the
     server. This main procedure can be generated from a template file.

     Note that using wsdl2aws's -types, -main and -cb options together you
     can build a SOAP server for any Ada API. This is one of the simplest way
     to build a SOAP server.

   - Some improvement in the generated AWS/SOAP code from WSDL document.
     The generated stub uses properly the Types.To_SOAP_Object routine
     instead of generating specific code.

   - Add support for enumerations in Ada and WSDL. wsdl2aws can now generate
     enumeration type. This makes ada2wsdl and wsdl2aws even more compatible.

   - wsdl2aws can now generate the SOAP callback routine for all routines
     parsed in the WSDL document. This feature is one more step into
     transparent SOAP support from Ada.

   - Better support for Notification and Request-response WSDL operations.

   - Many changes in the way SOAP and WSDL documents are generated for better
     interoperability (tested with Tomcat/Axis with some complex data
     structures). See for example wsdl_6 non-regression test (
     for the Java Axis part). Tested with Tomcat 4.1.29 and Axis 1.1.

   - Add support for transient pages. These are stream objects that
     are not released by the server. Transient pages are released by a
     cleaner task after a certain amount of time. To enable transient
     pages it is required to use the transient pages dispatcher (see
     AWS.Services.Transient_Pages and

   - Add a page splitter. This can be used to split a response in
     multiple pages avoiding very large Web pages. Specific tags to
     navigate (PREVIOUS, NEXT, CURRENT_PAGE...) are generated and can
     be used in the template page. A set of vector tags are also
     available to setup a page index. (See AWS.Services.Split_Pages).

   - A new Response.File option "Once" can be used to remove a file
     after sending it. This is useful if a temporary file is prepared
     for the response as it will be removed automatically.

   - A new kind of stream (AWS.Resources.Stream.Disk) has been
     implemented. The AWS.Resources.File API is based on it.
   - Fix WSDL SOAP record handling (code for record in record was
     sometimes not correctly generated).

   - New package AWS.POP which implements the POP client protocol.

   - New template engine filters:

       REPLACE         Pattern matching with replacement facility.
       REPLACE_ALL     As above but replace all occurences not the first one.
       FORMAT_DATE     To format a date using GNU/Date pattern format.
       ADD_PARAM       Add a parameter to an URL.
       DEL_PARAM       Delete a parameter from an URL.
       REPLACE_PARAM   Replace a parameter from an URL.

   - Add a new template engine variable tag called NOW (current time
     and date).

   - Templates engine should be a bit faster as it uses less recursivity.

   - Templates engine expression parser is now a standard LL(0) parser.
     Patch contributed by Jean-Pierre Rosen.

   - Fix templates engine cache implementation when reloading files.

   - On GNAT 3.15 the templates engine should be lot faster as it uses a cache
     buffer to work around the slow Unbounded_String implementation. It
     improves also the performance on more recent version of GNAT by 14%.
     This patch has been contributed by Jean Pierre Rosen.

   - New version of the "&" operator to prepend data into the
     templates engine's vector tags.

   - New awsres options -u/-z to add uncompressed or compressed items into the
     resources. Compressed resources are decompressed on-the-fly if needed
     (this is completely transparent to users). It is needed for the
     templates engine for example (as it needs to parse the file) or if
     the client does not support compressed resources.

   - New high level service to handle transparently compressed or uncompressed
     files. This callback routine will either returns the compressed version
     of the file if it exists and the client support compressed encoding, the
     uncompressed file if it exists otherwise it will return a decompressed
     version of the file using a decompression stream.

   - New dispatcher based on time. It is possible to select specific callback
     routines depending on time. A time dispatcher is activated at a certain
     period in time, there is a Once period (this is unique in time) and
     Yearly, Monthly, Daily, Weekly, Hourly and Minutely periods to build
     events that repeats periodically.

   - ZLib library updated to version 1.2.1.

   - Add client and server certificate support.

   - The security options are now per server, it means that HTTPS servers
     running on the same AWS process can have different settings.

   - A a simple Web Mail service (AWS.Services.Web_Mail) using the SMTP/POP
     AWS support.

   - Add new boolean constant AWS.Net.SSL.Is_Supported which is set to true
     if SSL is supported by the runtime.

   - New AWS.Response.Message_Body routine to retrieve a response as a
     file stream. Make it easier to handle very large response object.

   - Improve demos/agent implementation to support large responses
     based on AWS.Response.Message_Body (see above).

   - Add support for GNAT Project (.gpr), easier to develop using GPS.

   - Plus many small fixes, enhancements, API comments, and documentation work.

Non upward compatible changes

Note that the changes listed below can introduce non upward compatibility.
In such a case we try to give proper advice on how to change the code
to work properly. Of course we try to avoid this as much as possible
but we really prefer to have a clean API instead of keeping awkward

   - Array types generated with wsdl2aws will now have a _Type suffix. This
     is needed to ensure different names for parameter and type. Some WSDL
     document use different case for parameter and type, this is not possible
     with Ada which is not case-sensitive.

     => Just add "_Type" suffix to array types and constructors references.

   - A new abstract routine named Reset has been added to the Stream

     => Add a Reset routine in tagged types derived from

   - AWS.Server.Set_Security is now a per server procedure. Add the Web Server
     as parameter.

   - AWS.Net.Set_Send_Buffer and AWS.Net.Set_Receive_Buffer have been renamed
     AWS.Net.Set_Send_Buffer_Size and AWS.Net.Set_Receive_Buffer_Size

Obsolescent features:

In each new version we try to be upward compatible with previous
version. This is really important, but in some cases it seems that a
"redesign" of the API would be good in the long term. All obsolescent
features will be listed in this section. Those features will be
removed in the next version. Note that you can check usage of those
features in your application by using the GNAT's -gnatwj option as we
have tagged all obsolescent features with a pragma.

Note that pragma Obsolescent and -gnatwj option is only supported
since GNAT 3.16.


You can have a look at docs/TODO file to see what are the topics that we will
probably implement in future releases.

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!

The OpenSSL libraries (optional) distributed are for Windows only. On UNIX
you'll have to build the libraries from sources, it is quite easy to do
so. This has been tested on GNU/Linux without trouble.

The LDAP binding will use the LDAP dynamic library on Windows. On UNIX you
need to build and install OpenLDAP.

See documentation for build information.


AWS 2.0 has been compiled and has passed all tests on:

   Windows XP, GNAT 3.15a1, 3.16a1, 5.01a and 5.02a

   GNU/Linux x66, GNAT 3.16a1 and 5.02a

   SPARC Solaris 8, GNAT 5.01a

   HP-UX 11, GNAT 5.03w

Others platforms / compiler version combinations have not been tested, it
does not mean that it's not working.

Previous version of AWS have been built on FreeBSD 4.1 and MacOSX.


AWS User's Mailing List:

AWS Home Page (sources and printable documentations in Postscript and PDF):

Templates_Parser sources: 
   Templates_Parser module (sources and documentation) is provided with AWS
   distribution. Version 7.5 is distributed with AWS 2.0.

   Latest version of this module and the documentation can be found at:

   Templates_Parser is a very useful add-on for AWS. You should have a look at
   it if you plan to develop a Web application. Templates_Parser permits to
   completely 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.


   You need at least version 3.15 to build and use AWS 2.0.

Socket binding (Optional) :

   Since AWS 1.2 you need at least version 1.0 of the Socket binding. Note
   that by default AWS uses GNAT.Sockets.

   for Win32:

   for UNIX:

XMLada (optional):

   You need this library only if you want to use AWS SOAP feature. You need
   at least XMLada 1.0.

POSIX Binding (optional) :

   for Win32:

   for UNIX:

OpenSSL library (optional) :

   Sources for UNIX or Win32:

   binaries for Win32:
      Included with the main AWS distribution (win32 directory).

   Note that we have used and we distribute (for Win32 platform) OpenSSL
   version 0.9.7c with this AWS release. OpenSSL has been built with GNAT 5.01a
   C subsystem (based on GCC 3.2.3) with -O3 optimization level.

   See OpenSSL license (docs/openssl.license).

OpenLDAP library (optional) :

   Sources for UNIX or Win32:

   binaries for Win32:
      Included with the main AWS distribution (win32 directory). The import
      library will bind to the Microsoft LDAP dynamic library.

Windows Services API (optional):

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


AWS is distributed under the GMGPL (GNAT Modified GPL) license. This license
ensures that commercial applications can be built using AWS. Note that
AWS comes with a set of components. Those components are using a license
compatible with the AWS's one. For information about component's individual
licenses see include/readme.txt.

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 User's Mailing List:

A good way to keep informed of AWS news and to share experiences with other
AWS users is to register to the AWS dedicated mailing list. See:


Thanks to the contributors and peoples who send feedbacks, ideas
about AWS. In the early stage of the project this is very valuable.

So thanks goes to Ted Dennison, Wiljan Derks, Sune Falck, David C. Hoos,
Thierry Lelegard, Nicolas Lesbats, Jean-François Rameau, Maxim Reznik,
Jean-Pierre Rosen, Jerôme Roussel, Ariane Sinibardy.

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.

  Ongoing work is done to based this development on AWS framework only and
  to remove all the Java layers. It is also interesting to note that this is
  an heavy loaded server, it handle something like 40 to 50 requests per
  seconds on a Windows 2000 Server.

- (Ada in Russian)

  This Web Site is powered by AWS.

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"
--| gpg --keyserver --recv-key C1082595

Top of Message | Previous Page | Permalink

Advanced Options


Log In

Log In

Get Password

Get Password

Search Archives

Search Archives

Subscribe or Unsubscribe

Subscribe or Unsubscribe


December 2018
November 2018
September 2018
August 2018
June 2018
May 2018
April 2018
February 2018
January 2018
December 2017
November 2017
October 2017
September 2017
June 2017
May 2017
April 2017
January 2017
December 2016
November 2016
October 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013
October 2013
September 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
February 2012
January 2012
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
December 2010
November 2010
October 2010
September 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
December 2007
November 2007
October 2007
September 2007
June 2007
May 2007
March 2007
February 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
December 2005
November 2005
October 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
March 2004
February 2004
January 2004
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
January 2001
December 2000
November 2000
October 2000
September 2000
August 2000
July 2000
June 2000
May 2000
April 2000
March 2000
February 2000
January 2000
December 1999
November 1999
October 1999
September 1999
August 1999
July 1999
June 1999
May 1999
April 1999
March 1999
February 1999
January 1999
December 1998
November 1998
October 1998
September 1998
August 1998
July 1998
June 1998
May 1998
April 1998
March 1998
February 1998
January 1998
December 1997
November 1997
October 1997
September 1997
August 1997
July 1997
June 1997
May 1997
April 1997
March 1997
February 1997
January 1997
December 1996
November 1996
October 1996



Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager