-----------------
What is CorbaWeb?
-----------------

CorbaWeb is a powerful environment providing a generic gateway to integrate
the CORBA and World Wide Web worlds. More precisily, CorbaWeb allows Web
users to browse and invoke CORBA objects via their Web browsers.
Then Web users interact with their CORBA objects via Web documents (MIME,
HTML, forms, etc) dynamically generated on the fly. Then CorbaWeb can be
seen as a generic and dynamic CORBA objects browser.

Technically, CorbaWeb is composed of two parts:

  * HttpServer: This module provides the implementation of an HTTP server
                which manages MIME files and servlets written in CorbaScript.

  * CorbaWeb: This module provides a servlet which implements the
              functionnalities of the generic CORBA Object Browser.

Browsing CORBA objects via CorbaWeb just needs to load OMG IDL specifications
into the Interface Repository and start the HTTP server of the CorbaWeb
environment.

Then users accesses via their browsers to the CorbaWeb servlet running into
the HttpServer. Automatically, CorbaWeb generates HTML forms representing
OMG IDL operations and attributes of CORBA objects accessed by users.
These forms allow users to invoke operations, get and set attributes.

Moreover, the CorbaWeb administrator can provide scripts
to specialize the Web representation for each CORBA object type.
Some specialization scripts are already provided for the CorbaScript
demonstrations. Interesting and reusable scripts allow one to browse:

  * The Name Service.
  * The Interface Repository.

Warning, this is an experimental CorbaWeb release which does not provide all
features presented into our scientific papers (http://corbaweb.lifl.fr/papers)!
However it already provides some powerful features!

-----------------------------
Current tested configurations
-----------------------------

As the CorbaWeb environment is fully written in CorbaScript, it could
potentially work with any ORB products supported by CorbaScript.

Currently, we have only tested CorbaWeb on the following configurations:

  - ORBacus 3.2 on HP-UX.
  - MICO 2.2.7 on Linux.
  - OAK 5.2.7 and 5.2.9 on Linux.
  - ORBacus 3.1.3 on Linux.
  - TAO 1.1.17/18/19 on Linux.
  - MICO 2.2.7/2.3.1 on Solaris.
  - OAK 5.2.7 and 5.2.9 on Solaris.
  - omniORB 3.0.3 on Solaris.
  - ORBacus 3.1.3/3.2/3.3.1/3.3.3/3.3.4/4.0/4.0.4 on Solaris.
  - Visibroker 3.3 on Solaris.
  - ORBacus 3.1.3/3.2/3.3.1 on Windows 95/98/NT.

  - Doesn't work correctly on Visibroker 3.3 on Windows 95.

Future releases will be tested on other configurations!

------------
Distribution
------------

- README		This file.

- TODO			Some to-do works.

- bin			Contains shell scripts to administrate
                        a CorbaWeb HTTP Server.
  - envi.CorbaWeb.sh	Environment for Unix shells (sh, bash, ...).
  - envi.CorbaWeb.csh	Environment for Unix C-shells (csh, tcsh, ...).
  - corbaweb_install	Install the CorbaWeb environment.
  - corbaweb_deinstall	Deinstall the CorbaWeb environment.
  - corbaweb_start	Start the CorbaWeb HTTP Server.
  - corbaweb_stop	Stop the CorbaWeb HTTP Server
  - CorbaWebHTTPServer.cs the CorbaWeb HTTP Server main script.

- modules/		Contains the CorbaWeb HTTP Server implementation.

  - CorbaWeb.cs		The CorbaWeb servlet.
  - HttpServer.cs	A CorbaScript module implementing an HTTP server.

- demo/			A CorbaWeb HTTP Server demonstration

  - html/		Contains documents handled by this CorbaWeb HTTP Server.
  - cssp/		Contains CorbaScript Server Pages.
  - cgi-bin/		Contains CGI scripts handled by this CorbaWeb HTTP Server.
  - servlet/		Contains Servlets handled by this CorbaWeb HTTP Server.
  - actions/		Contains action scripts associated to OMG IDL
                        interfaces.
  - icons/		Contains icons associated to OMG IDL interfaces.
  - CorbaWeb.cfg	Contains the configuration of this CorbaWeb HTTP Server.
  - start.sh		Starts this CorbaWeb demonstration.
  - stop.sh		Stops this CorbaWeb demonstration.

------------------------------
Using the CorbaWeb Environment
------------------------------

CorbaWeb could be administrated by a set of commands
which are complementary to those used for CorbaScript
(see ../doc/user_guide.html file).

These commands are:

* corbaweb_install: Installs a CorbaWeb configuration, i.e.
  - execute the cssh_install command,
  - load idl/InterfaceRepository.idl into the Interface Repository,
  - load idl/CosNaming.idl into the Interface Repository,
  - execute the corbaweb_start command.

* corbaweb_deinstall: Deinstalls a CorbaWeb configuration, i.e.
  - execute the corbaweb_stop command,
  - execute the cssh_deinstall command.

* corbaweb_start: Starts a CorbaWeb HTTP Server, i.e.
  - execute the CorbaWeb/bin/CorbaWebHTTPServer.cs script.

* corbaweb_stop: Stops the previously started CorbaWeb HTTP Server.

These commands are accessible by loading the CorbaWeb environment.
For Unix Bourne shells and GNU Bash on Windows, do:

  prompt> export CS_BINDIR=/path_to_CorbaScript_binaries
  prompt> . CorbaWeb/bin/envi.CorbaWeb.sh

For Unix C shells, do:

  prompt> setenv CS_BINDIR path_to_CorbaScript_binaries
  prompt> source CorbaWeb/bin/envi.CorbaWeb.csh

Before loading these environments, it is needed to set the CS_BINDIR
shell variable to the path containing the CorbaScript binaries and
environment scripts.

The CorbaWeb commands use a set of shell variables
to define the CorbaWeb HTTP Server configuration.

* CW_PID_FILE	contains the file where will be stored the PID
              	of the started CorbaWeb HTTP Server.
		By default, it is ${CS_CONFIG_HOMEDIR}/CorbaWeb.PID

* CW_ROOTDIR	contains the path where is stored the configuration file
                of the started CorbaWeb HTTP Server (i.e. the CorbaWeb.cfg file).
		By default, it is the CorbaWeb/demo directory.

* CW_HTTP_HOST  contains the host name used by the CorbaWeb HTTP Server
                for waiting for HTTP requests.
                By default, it is the result of the hostname command.

* CW_HTTP_PORT  contains the TCP/IP port used by the CorbaWeb HTTP Server
                for waiting for HTTP requests.
                By default, it is 8080.

Default values are set in envi.CorbaWeb.sh and envi.CorbaWeb.csh files.

----------------------------------
The CorbaWeb demonstration on Unix
----------------------------------

Go to the CorbaWeb demonstration directory:

  unix> cd <path_to_CorbaScript>/CorbaWeb/demo

Set where the CorbaScript binaries are:

  unix> export CS_BINDIR=/path_to_CorbaScript_binaries

or

  unix> setenv CS_BINDIR /path_to_CorbaScript_binaries

Start the CorbaWeb demonstration:

  unix> start.sh

With a WWW client, go to the URL http://hostname:8080/ to test the
CorbaWeb HTTP server.

Go to the URL http://hostname:8080/servlet/CorbaWeb and now navigate
on the CORBA objects.

Stop the CorbaWeb demonstration:

  unix> stop.sh

-------------------------------------
The CorbaWeb demonstration on Windows
-------------------------------------

Go to the CorbaWeb demonstration directory:

  bash> cd <path_to_CorbaScript>/CorbaWeb/demo

Set where the CorbaScript binaries are:

  bash> export CS_BINDIR=/path_to_CorbaScript_binaries

Start the CorbaWeb demonstration:

  unix> bash start.sh

With a WWW client, go to the URL http://hostname:8080/ to test the
CorbaWeb HTTP server.

Go to the URL http://hostname:8080/servlet/CorbaWeb and now navigate
on the CORBA objects.

Stop the CorbaWeb demonstration:

  unix> bash stop.sh

--------------------------
Navigating on your objects
--------------------------

To use CorbaWeb on your CORBA objects, you must:

  * Load your OMG IDL interfaces into the Interface Repository that
    is used by the CorbaWeb HTTP server.

  * Create a new script into 'CorbaWeb/demo/actions/' for each object
    interface. The script is named as the interface that it represents.
    Each script must have at least the 'view' procedure. See scripts
    already present into the 'CorbaWeb/demo/actions/' directory.

  * For each interface, you could put a small gif picture into the
    'CorbaWeb/demo/icons/' directory. This picture is used, when you navigate on
    naming contexts, to represent the OMG IDL interface of each context
    item.

------------
Getting Help
------------

You should not have any problems executing the source, but do not 
hesitate to send requests for assistance.
Just send an e-mail to "mailto:goode-support@lifl.fr".
And we will add new needed users features.

There is also a CorbaWeb mailing list. To subscribe, just send an
e-mail to "listserv@univ-lille1.fr" with the command:

SUB goode <Your_Real_Name>

in the body of your e-mail message. To post a message to the mailing
list, send your message as an e-mail to `goode@univ-lille1.fr'.

You can find the latest information on CorbaWeb on our Web-Site
"http://corbaweb.lifl.fr".

Have fun with CorbaWeb.
