Replace Nino by Standalone whenever it is relevant.

This commit is contained in:
2016-10-08 01:02:12 +02:00
parent b4fd04ad9f
commit 56819d6793
58 changed files with 288 additions and 247 deletions

View File

@@ -1,22 +1,29 @@
The main goal of the connectors is to let you choose a target at compile time. The main goal of the connectors is to let you choose a target at compile time.
This allows you to concentrate on your business during development time and then decide which target you choose at deployment time. This allows you to concentrate on your business during development time and then decide which target you choose at deployment time.
The current connectors are: The current connectors are:
* Nino * Standalone
* FastCGI * FastCGI
* CGI * CGI
* OpenShift * OpenShift
* Nino (obsolete, replaced by Standalone)
The most widely used workflow is to use Nino on your development machine and FastCGI on your production server. The most widely used workflow is to use Standalone on your development machine and FastCGI on your production server.
Nino being a web server written entirely in Eiffel, you can inspect your HTTP requests and respones in EiffelStudio which is great during development. Standalone being a web server written entirely in Eiffel, you can inspect your HTTP requests and respones in EiffelStudio which is great during development.
On the other hand, FastCGI is great at handling concurrent requests and coupled with Apache (or another web production server), you don't even need to worry about the lifecyle of your application (creation and destruction) as Apache will do it for you! On the other hand, FastCGI is great at handling concurrent requests and coupled with Apache (or another web production server), you don't even need to worry about the lifecyle of your application (creation and destruction) as Apache will do it for you!
Let's now dig into each of the connecters. Let's now dig into each of the connecters.
# Nino # Standalone
EiffelWeb standalone is connector based on the EiffelWeb httpd server entirely written in Eiffel
(note: httpd is under standalone connector, so you can consider Standalone as the EiffelWeb standalone web server).
The goal of Standalone is to provide a simple web server for development (like Java, Python and Ruby provide).
# Nino (obsolete and replaced by Standalone)
Nino is a web server entirely written in Eiffel. Nino is a web server entirely written in Eiffel.
The goal of Nino is to provide a simple web server for development (like Java, Python and Ruby provide). The goal of Nino is to provide a simple web server for development (like Java, Python and Ruby provide).
Nino is currently maintained by Javier Velilla and the repository can be found here: https://github.com/jvelilla/EiffelWebNino Nino is currently maintained by Jocelyn Fiat and Javier Velilla and the repository can be found here: https://github.com/jvelilla/EiffelWebNino
# FastCGI # FastCGI

View File

@@ -61,7 +61,7 @@ Using EWF, your service is built on top of underlying httpd solution/connectors.
Currently 3 main connectors are available: Currently 3 main connectors are available:
* __CGI__: following the CGI interface, this is an easy solution to run the service on any platform. * __CGI__: following the CGI interface, this is an easy solution to run the service on any platform.
* __libFCGI__: based on the libfcgi solution, this can be used with Apache, IIS, nginx, ... * __libFCGI__: based on the libfcgi solution, this can be used with Apache, IIS, nginx, ...
* __nino__: a standalone server: Eiffel Web Nino allow you to embed a web server anywhere, on any platform without any dependencies on other httpd server. * __standalone__: a standalone server: EiffelWeb Standalone web server allows you to embed a web server anywhere, on any platform without any dependencies on other httpd server.
At compilation time, you can use a default connector (by using the associated default lib), but you can also use a mixed of them and choose which one to execute at runtime. At compilation time, you can use a default connector (by using the associated default lib), but you can also use a mixed of them and choose which one to execute at runtime.
It is fairly easy to add new connector, it just has to follow the EWSGI interface It is fairly easy to add new connector, it just has to follow the EWSGI interface

View File

@@ -4,7 +4,7 @@ Now you have to implement each handler. You need to inherit from WSF_SKELETON_HA
## Communicating between routines ## Communicating between routines
Depending upon the connector (Nino, CGI, FastCGI etc.) that you are using, your handler may be invoked concurrently for multiple requests. Therefore it is unsafe to save state in normal attributes. WSF_REQUEST has a pair of getter/setter routines, execution_variable/set_execution_variable, which you can use for this purpose. Depending upon the connector (Standalone, CGI, FastCGI etc.) that you are using, your handler may be invoked concurrently for multiple requests. Therefore it is unsafe to save state in normal attributes. WSF_REQUEST has a pair of getter/setter routines, execution_variable/set_execution_variable, which you can use for this purpose.
Internally, the framework uses the following execution variable names, so you must avoid them: Internally, the framework uses the following execution variable names, so you must avoid them:
1. REQUEST_ENTITY 1. REQUEST_ENTITY

View File

@@ -59,7 +59,7 @@ feature -- Basic operations
end end
``` ```
When using the "nino" connector or the new "standalone" connector, by default the service listens on port 80, but often this port is already used by other applications, so it is recommended to use another port. When using the "standalone" connector (or the deprecated "nino" connector), by default the service listens on port 80, but often this port is already used by other applications, so it is recommended to use another port.
To define another port, redefine the feature `initialize' and set up a new port number using the service options (see below). To define another port, redefine the feature `initialize' and set up a new port number using the service options (see below).
@@ -90,7 +90,7 @@ The **WSF_REQUEST** gives access to the incoming data; the class provides featur
The **WSF_RESPONSE** provides features to define the response with information such as HTTP status codes (10x,20x, 30x, 40x, and 50x), response headers (Content-Type, Content-Length, etc.) and obviously the body of the message itself. The **WSF_RESPONSE** provides features to define the response with information such as HTTP status codes (10x,20x, 30x, 40x, and 50x), response headers (Content-Type, Content-Length, etc.) and obviously the body of the message itself.
**APPLICATION** is the root class of our example, it launches the application, using the corresponding connector, Which connector? this depends how you want to run it cgi, fcgi,nino or standalone. For development is recommended to use a standalone web server written in Eiffel, and run the execution within the EiffelStudio debugger. For production fcgi (or cgi) using Apache or another popular web server. **APPLICATION** is the root class of our example, it launches the application, using the corresponding connector, Which connector? this depends how you want to run it cgi, fcgi,standalone. For development is recommended to use a standalone web server written in Eiffel, and run the execution within the EiffelStudio debugger. For production fcgi (or cgi) using Apache or another popular web server.
![Launcher Hierarchy](./Launcher Hierarchy.png "Launcher Hierarchy") ![Launcher Hierarchy](./Launcher Hierarchy.png "Launcher Hierarchy")
@@ -149,9 +149,10 @@ The source code is available on Github. You can get it by running the command:
```git clone https://github.com/EiffelWebFramework/ewf.git``` ```git clone https://github.com/EiffelWebFramework/ewf.git```
The example of simple service that generate plain text response is located in the directory $PATH/ewf/doc/workbook/basics/simple, where $PATH is where you run ```git clone``` . Just double click on the simple.ecf file and select the simple_nino target or if you prefer the command line, run the command: The example of simple service that generate plain text response is located in the directory $PATH/ewf/doc/workbook/basics/simple, where $PATH is where you run ```git clone``` .
Just double click on the simple.ecf file and select the simple_standalone target or if you prefer the command line, run the command:
```estudio -config simple.ecf -target simple_nino``` ```estudio -config simple.ecf -target simple_standalone```
<a name="html"></a> <a name="html"></a>
@@ -204,9 +205,10 @@ The source code is available on Github. You can get it by running the command:
```git clone https://github.com/EiffelWebFramework/ewf.git``` ```git clone https://github.com/EiffelWebFramework/ewf.git```
The example of the service that generates HTML is located in the directory $PATH/ewf/doc/workbook/basics/simple_html, where $PATH is where you run ```git clone``` . Just double click on the simple_html.ecf file and select the simple_html_nino target or if you prefer the command line, run the command: The example of the service that generates HTML is located in the directory $PATH/ewf/doc/workbook/basics/simple_html, where $PATH is where you run ```git clone``` .
Just double click on the simple_html.ecf file and select the simple_html_standalone target or if you prefer the command line, run the command:
```estudio -config simple_html.ecf -target simple_html_nino``` ```estudio -config simple_html.ecf -target simple_html_standalone```
Nav: [Workbook](../workbook.md) :: [Handling Requests: Form/Query Parameter](../handling_request/form.md) Nav: [Workbook](../workbook.md) :: [Handling Requests: Form/Query Parameter](../handling_request/form.md)

View File

@@ -13,14 +13,6 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="simple_nino" extends="common">
<root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/>
<cluster name="simple" location=".\" recursive="true"/>
</target>
<target name="simple_cgi" extends="common"> <target name="simple_cgi" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional">
@@ -45,6 +37,6 @@
<library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="simple" location=".\" recursive="true"/> <cluster name="simple" location=".\" recursive="true"/>
</target> </target>
<target name="simple" extends="simple_nino"> <target name="simple" extends="simple_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="simple_html_nino" extends="common"> <target name="simple_html_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="simple_html" location=".\" recursive="true"/> <cluster name="simple_html" location=".\" recursive="true"/>
</target> </target>
<target name="simple_html_cgi" extends="common"> <target name="simple_html_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="simple_html" location=".\" recursive="true"/> <cluster name="simple_html" location=".\" recursive="true"/>
</target> </target>
<target name="simple_html" extends="simple_html_nino"> <target name="simple_html" extends="simple_html_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="exel_nino" extends="common"> <target name="exel_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="exel" location=".\" recursive="true"/> <cluster name="exel" location=".\" recursive="true"/>
</target> </target>
<target name="exel_cgi" extends="common"> <target name="exel_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="exel" location=".\" recursive="true"/> <cluster name="exel" location=".\" recursive="true"/>
</target> </target>
<target name="exel" extends="exel_nino"> <target name="exel" extends="exel_standalone">
</target> </target>
</system> </system>

View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="ISO-8859-1"?> "1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-10-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-10-0 http://www.eiffel.com/developers/xml/configuration-1-10-0.xsd" name="headers" uuid="C28C4F53-9963-46C0-A080-8F13E94E7486" library_target="headers"> <system xmlns="http://www.eiffel.com/developers/xml/configuration-1-10-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-10-0 http://www.eiffel.com/developers/xml/configuration-1-10-0.xsd" name="headers" uuid="C28C4F53-9963-46C0-A080-8F13E94E7486" library_target="headers">
<target name="common" abstract="true"> <target name="common" abstract="true">
<file_rule> <file_rule>
@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="headers_nino" extends="common"> <target name="headers_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="headers" location=".\" recursive="true"/> <cluster name="headers" location=".\" recursive="true"/>
</target> </target>
<target name="headers_cgi" extends="common"> <target name="headers_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="headers" location=".\" recursive="true"/> <cluster name="headers" location=".\" recursive="true"/>
</target> </target>
<target name="headers" extends="headers_nino"> <target name="headers" extends="headers_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="search_nino" extends="common"> <target name="search_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="search" location=".\" recursive="true"/> <cluster name="search" location=".\" recursive="true"/>
</target> </target>
<target name="search_cgi" extends="common"> <target name="search_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="search" location=".\" recursive="true"/> <cluster name="search" location=".\" recursive="true"/>
</target> </target>
<target name="search" extends="search_nino"> <target name="search" extends="search_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="status_nino" extends="common"> <target name="status_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="status" location=".\" recursive="true"/> <cluster name="status" location=".\" recursive="true"/>
</target> </target>
<target name="status_cgi" extends="common"> <target name="status_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="status" location=".\" recursive="true"/> <cluster name="status" location=".\" recursive="true"/>
</target> </target>
<target name="status" extends="status_nino"> <target name="status" extends="status_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="example_nino" extends="common"> <target name="example_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="example" location=".\" recursive="true"/> <cluster name="example" location=".\" recursive="true"/>
</target> </target>
<target name="example_cgi" extends="common"> <target name="example_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="example" location=".\" recursive="true"/> <cluster name="example" location=".\" recursive="true"/>
</target> </target>
<target name="example" extends="example_nino"> <target name="example" extends="example_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="form_nino" extends="common"> <target name="form_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="form" location=".\" recursive="true"/> <cluster name="form" location=".\" recursive="true"/>
</target> </target>
<target name="form_cgi" extends="common"> <target name="form_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="form" location=".\" recursive="true"/> <cluster name="form" location=".\" recursive="true"/>
</target> </target>
<target name="form" extends="form_nino"> <target name="form" extends="form_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="form_nino" extends="common"> <target name="form_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="form" location=".\" recursive="true"/> <cluster name="form" location=".\" recursive="true"/>
</target> </target>
<target name="form_cgi" extends="common"> <target name="form_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="form" location=".\" recursive="true"/> <cluster name="form" location=".\" recursive="true"/>
</target> </target>
<target name="form" extends="form_nino"> <target name="form" extends="form_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="browsers_nino" extends="common"> <target name="browsers_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="browsers" location=".\" recursive="true"/> <cluster name="browsers" location=".\" recursive="true"/>
</target> </target>
<target name="browsers_cgi" extends="common"> <target name="browsers_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="browsers" location=".\" recursive="true"/> <cluster name="browsers" location=".\" recursive="true"/>
</target> </target>
<target name="browsers" extends="browsers_nino"> <target name="browsers" extends="browsers_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="cgi_variables_nino" extends="common"> <target name="cgi_variables_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="cgi_variables" location=".\" recursive="true"/> <cluster name="cgi_variables" location=".\" recursive="true"/>
</target> </target>
<target name="cgi_variables_cgi" extends="common"> <target name="cgi_variables_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="cgi_variables" location=".\" recursive="true"/> <cluster name="cgi_variables" location=".\" recursive="true"/>
</target> </target>
<target name="cgi_variables" extends="cgi_variables_nino"> <target name="cgi_variables" extends="cgi_variables_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="header_fields_nino" extends="common"> <target name="header_fields_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="header_fields" location=".\" recursive="true"/> <cluster name="header_fields" location=".\" recursive="true"/>
</target> </target>
<target name="header_fields_cgi" extends="common"> <target name="header_fields_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="header_fields" location=".\" recursive="true"/> <cluster name="header_fields" location=".\" recursive="true"/>
</target> </target>
<target name="header_fields" extends="header_fields_nino"> <target name="header_fields" extends="header_fields_standalone">
</target> </target>
</system> </system>

View File

@@ -13,12 +13,12 @@
<library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/> <library name="http" location="$ISE_LIBRARY\contrib\library\network\protocol\http\http-safe.ecf"/>
<library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/> <library name="wsf" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\wsf-safe.ecf"/>
</target> </target>
<target name="upload_nino" extends="common"> <target name="upload_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="upload" location=".\" recursive="true"/> <cluster name="upload" location=".\" recursive="true"/>
</target> </target>
<target name="upload_cgi" extends="common"> <target name="upload_cgi" extends="common">
@@ -37,6 +37,6 @@
<library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\libfcgi-safe.ecf"/>
<cluster name="upload" location=".\" recursive="true"/> <cluster name="upload" location=".\" recursive="true"/>
</target> </target>
<target name="upload" extends="upload_nino"> <target name="upload" extends="upload_standalone">
</target> </target>
</system> </system>

View File

@@ -14,9 +14,9 @@
<library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/> <library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/>
<library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/> <library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/>
</target> </target>
<target name="js_widget_template_nino" extends="common"> <target name="js_widget_template_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<library name="default_nino" location="..\..\..\..\..\..\library\server\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="..\..\..\..\..\..\library\server\wsf\default\standalone-safe.ecf"/>
<cluster name="js_widget_template" location=".\src\" recursive="true"> <cluster name="js_widget_template" location=".\src\" recursive="true">
</cluster> </cluster>
</target> </target>
@@ -30,6 +30,6 @@
<library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/>
<cluster name="js_widget_template" location=".\src\" recursive="true"/> <cluster name="js_widget_template" location=".\src\" recursive="true"/>
</target> </target>
<target name="js_widget_template" extends="js_widget_template_nino"> <target name="js_widget_template" extends="js_widget_template_standalone">
</target> </target>
</system> </system>

View File

@@ -14,9 +14,9 @@
<library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/> <library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/>
<library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/> <library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/>
</target> </target>
<target name="js_custom_widget_nino" extends="common"> <target name="js_custom_widget_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<library name="default_nino" location="..\..\..\..\..\..\library\server\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="..\..\..\..\..\..\library\server\wsf\default\standalone-safe.ecf"/>
<cluster name="js_custom_widget" location=".\src\" recursive="true"> <cluster name="js_custom_widget" location=".\src\" recursive="true">
</cluster> </cluster>
</target> </target>
@@ -30,6 +30,6 @@
<library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/>
<cluster name="js_custom_widget" location=".\src\" recursive="true"/> <cluster name="js_custom_widget" location=".\src\" recursive="true"/>
</target> </target>
<target name="js_custom_widget" extends="js_custom_widget_nino"> <target name="js_custom_widget" extends="js_custom_widget_standalone">
</target> </target>
</system> </system>

View File

@@ -16,12 +16,12 @@
<library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/> <library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/>
<library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/> <library name="wsf_js_widget" location="..\..\wsf_js_widget-safe.ecf" readonly="false"/>
</target> </target>
<target name="demo_nino" extends="common"> <target name="demo_standalone" extends="common">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional"> <option warning="true" is_attached_by_default="true" void_safety="transitional" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<library name="default_nino" location="..\..\..\..\..\..\library\server\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="..\..\..\..\..\..\library\server\wsf\default\standalone-safe.ecf"/>
<cluster name="demo" location=".\" recursive="true"/> <cluster name="demo" location=".\" recursive="true"/>
</target> </target>
<target name="demo_cgi" extends="common"> <target name="demo_cgi" extends="common">
@@ -40,6 +40,6 @@
<library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="..\..\..\..\..\..\library\server\wsf\default\libfcgi-safe.ecf"/>
<cluster name="demo" location=".\" recursive="true"/> <cluster name="demo" location=".\" recursive="true"/>
</target> </target>
<target name="demo" extends="demo_nino"> <target name="demo" extends="demo_standalone">
</target> </target>
</system> </system>

View File

@@ -17,13 +17,13 @@
<root class="${APP_ROOT}" feature="make_and_launch"/> <root class="${APP_ROOT}" feature="make_and_launch"/>
<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/> <library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>
<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/> <library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>
<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino-safe.ecf"/> <library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone-safe.ecf"/>
<cluster name="launcher" location=".\launcher\any\" recursive="true"/> <cluster name="launcher" location=".\launcher\any\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>
<target name="${APPNAME}_nino" extends="common"> <target name="${APPNAME}_standalone" extends="common">
<root class="${APP_ROOT}" feature="make_and_launch"/> <root class="${APP_ROOT}" feature="make_and_launch"/>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\standalone-safe.ecf"/>
<cluster name="launcher" location=".\launcher\default\" recursive="true"/> <cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>
@@ -40,6 +40,6 @@
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>
<target name="${APPNAME}" extends="${APPNAME}_nino"/> <target name="${APPNAME}" extends="${APPNAME}_standalone"/>
</system> </system>

View File

@@ -2,7 +2,7 @@
<root class="${APP_ROOT}" feature="make_and_launch"/> <root class="${APP_ROOT}" feature="make_and_launch"/>
<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/> <library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>
<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/> <library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>
<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino-safe.ecf"/> <library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone-safe.ecf"/>
<cluster name="launcher" location=".\launcher\any\" recursive="true"/> <cluster name="launcher" location=".\launcher\any\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>

View File

@@ -22,8 +22,8 @@ feature -- Execution
nature: like launcher_nature nature: like launcher_nature
do do
nature := launcher_nature nature := launcher_nature
if nature = Void or else nature = nature_nino then if nature = Void or else nature = nature_standalone then
launch_nino (a_service, opts) launch_standalone (a_service, opts)
elseif nature = nature_cgi then elseif nature = nature_cgi then
launch_cgi (a_service, opts) launch_cgi (a_service, opts)
elseif nature = nature_libfcgi then elseif nature = nature_libfcgi then
@@ -38,7 +38,7 @@ feature {NONE} -- Access
launcher_nature: detachable READABLE_STRING_8 launcher_nature: detachable READABLE_STRING_8
-- Initialize the launcher nature -- Initialize the launcher nature
-- either cgi, libfcgi, or nino. -- either cgi, libfcgi, or standalone.
--| We could extend with more connector if needed. --| We could extend with more connector if needed.
--| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time. --| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time.
local local
@@ -51,8 +51,8 @@ feature {NONE} -- Access
ext := l_entry.extension ext := l_entry.extension
end end
if ext /= Void then if ext /= Void then
if ext.same_string (nature_nino) then if ext.same_string (nature_standalone) then
Result := nature_nino Result := nature_standalone
end end
if ext.same_string (nature_cgi) then if ext.same_string (nature_cgi) then
Result := nature_cgi Result := nature_cgi
@@ -63,13 +63,13 @@ feature {NONE} -- Access
end end
end end
feature {NONE} -- nino feature {NONE} -- standalone
nature_nino: STRING = "nino" nature_standalone: STRING = "standalone"
launch_nino (a_service: WSF_SERVICE; opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS) launch_standalone (a_service: WSF_SERVICE; opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local local
launcher: WSF_NINO_SERVICE_LAUNCHER launcher: WSF_STANDALONE_SERVICE_LAUNCHER
do do
create launcher.make_and_launch (a_service, opts) create launcher.make_and_launch (a_service, opts)
end end

View File

@@ -21,7 +21,6 @@
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
<library name="cgi" location="..\..\library\server\wsf\connector\cgi-safe.ecf" readonly="false"/> <library name="cgi" location="..\..\library\server\wsf\connector\cgi-safe.ecf" readonly="false"/>
<library name="libfcgi" location="..\..\library\server\wsf\connector\libfcgi-safe.ecf" readonly="false"/> <library name="libfcgi" location="..\..\library\server\wsf\connector\libfcgi-safe.ecf" readonly="false"/>
<library name="nino" location="..\..\library\server\wsf\connector\nino-safe.ecf" readonly="false"/>
<library name="standalone" location="..\..\library\server\wsf\connector\standalone-safe.ecf" readonly="false"/> <library name="standalone" location="..\..\library\server\wsf\connector\standalone-safe.ecf" readonly="false"/>
<cluster name="launcher" location=".\launcher\any\" recursive="true"/> <cluster name="launcher" location=".\launcher\any\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
@@ -33,12 +32,6 @@
<cluster name="launcher" location=".\launcher\default\" recursive="true"/> <cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>
<target name="debug_nino" extends="common">
<root class="EWF_DEBUG_SERVER" feature="make_and_launch"/>
<library name="default_nino" location="..\..\library\server\wsf\default\nino-safe.ecf"/>
<cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/>
</target>
<target name="debug_cgi" extends="common"> <target name="debug_cgi" extends="common">
<root class="EWF_DEBUG_SERVER" feature="make_and_launch"/> <root class="EWF_DEBUG_SERVER" feature="make_and_launch"/>
<library name="default_cgi" location="..\..\library\server\wsf\default\cgi-safe.ecf" readonly="false"/> <library name="default_cgi" location="..\..\library\server\wsf\default\cgi-safe.ecf" readonly="false"/>
@@ -51,6 +44,6 @@
<cluster name="launcher" location=".\launcher\default\" recursive="true"/> <cluster name="launcher" location=".\launcher\default\" recursive="true"/>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target> </target>
<target name="debug" extends="debug_nino"> <target name="debug" extends="debug_standalone">
</target> </target>
</system> </system>

View File

@@ -24,8 +24,6 @@ feature -- Execution
nature := launcher_nature nature := launcher_nature
if nature = Void or else nature = nature_standalone then if nature = Void or else nature = nature_standalone then
launch_standalone (opts) launch_standalone (opts)
elseif nature = nature_nino then
launch_nino (opts)
elseif nature = nature_cgi then elseif nature = nature_cgi then
launch_cgi (opts) launch_cgi (opts)
elseif nature = nature_libfcgi then elseif nature = nature_libfcgi then
@@ -40,7 +38,7 @@ feature {NONE} -- Access
launcher_nature: detachable READABLE_STRING_8 launcher_nature: detachable READABLE_STRING_8
-- Initialize the launcher nature -- Initialize the launcher nature
-- either cgi, libfcgi, or nino. -- either cgi, libfcgi, or standalone.
--| We could extend with more connector if needed. --| We could extend with more connector if needed.
--| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time. --| and we could use WSF_DEFAULT_SERVICE_LAUNCHER to configure this at compilation time.
local local
@@ -55,9 +53,6 @@ feature {NONE} -- Access
if ext.same_string (nature_standalone) then if ext.same_string (nature_standalone) then
Result := nature_standalone Result := nature_standalone
end end
if ext.same_string (nature_nino) then
Result := nature_nino
end
if ext.same_string (nature_cgi) then if ext.same_string (nature_cgi) then
Result := nature_cgi Result := nature_cgi
end end
@@ -68,7 +63,7 @@ feature {NONE} -- Access
Result := nature_standalone Result := nature_standalone
end end
feature {NONE} -- nino feature {NONE} -- Standalone
nature_standalone: STRING = "standalone" nature_standalone: STRING = "standalone"
@@ -79,17 +74,6 @@ feature {NONE} -- nino
create launcher.make_and_launch (opts) create launcher.make_and_launch (opts)
end end
feature {NONE} -- nino
nature_nino: STRING = "nino"
launch_nino (opts: detachable WSF_SERVICE_LAUNCHER_OPTIONS)
local
launcher: WSF_NINO_SERVICE_LAUNCHER [G]
do
create launcher.make_and_launch (opts)
end
feature {NONE} -- cgi feature {NONE} -- cgi
nature_cgi: STRING = "cgi" nature_cgi: STRING = "cgi"

View File

@@ -1,2 +1,2 @@
This example demonstrates the use of embedded Vision2 web browser component, and embedded EWF server (using nino). This example demonstrates the use of embedded Vision2 web browser component, and embedded EWF server (using standalone).

View File

@@ -7,7 +7,6 @@
<exclude>/\.svn$</exclude> <exclude>/\.svn$</exclude>
</file_rule> </file_rule>
<option debug="true" warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="transitional" syntax="provisional"> <option debug="true" warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="transitional" syntax="provisional">
<debug name="nino" enabled="true"/>
<assertions precondition="true" postcondition="true" invariant="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" invariant="true" supplier_precondition="true"/>
</option> </option>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
@@ -20,11 +19,6 @@
<library name="wsf_extension" location="..\..\library\server\wsf\wsf_extension-safe.ecf" readonly="true"/> <library name="wsf_extension" location="..\..\library\server\wsf\wsf_extension-safe.ecf" readonly="true"/>
<library name="wsf_router_context" location="..\..\library\server\wsf\wsf_router_context-safe.ecf" readonly="true"/> <library name="wsf_router_context" location="..\..\library\server\wsf\wsf_router_context-safe.ecf" readonly="true"/>
</target> </target>
<target name="filter_nino" extends="common">
<root class="FILTER_SERVER" feature="make"/>
<library name="default_nino" location="..\..\library\server\wsf\default\nino-safe.ecf" readonly="true"/>
<cluster name="filter" location="src\" recursive="true"/>
</target>
<target name="filter_standalone" extends="common"> <target name="filter_standalone" extends="common">
<root class="FILTER_SERVER" feature="make"/> <root class="FILTER_SERVER" feature="make"/>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
@@ -36,6 +30,6 @@
<library name="default_libfcgi" location="..\..\library\server\wsf\default\libfcgi-safe.ecf"/> <library name="default_libfcgi" location="..\..\library\server\wsf\default\libfcgi-safe.ecf"/>
<cluster name="filter" location="src\" recursive="true"/> <cluster name="filter" location="src\" recursive="true"/>
</target> </target>
<target name="filter" extends="filter_nino"> <target name="filter" extends="filter_standalone">
</target> </target>
</system> </system>

View File

@@ -25,7 +25,7 @@ Note: <br/>
RESTBUCKS_SERVER RESTBUCKS_SERVER
---------------- ----------------
This class implement the main entry of our REST CRUD service, we are using a default connector (Nino Connector, This class implement the main entry of our REST CRUD service, we are using a default connector (Standalone Connector,
using a WebServer written in Eiffel). using a WebServer written in Eiffel).
We are inheriting from URI_TEMPLATE_ROUTED_SERVICE, this allows us to map our service contrat, as is shown in the previous We are inheriting from URI_TEMPLATE_ROUTED_SERVICE, this allows us to map our service contrat, as is shown in the previous
table, the mapping is defined in the feature setup_router, this also show that the class ORDER_HANDLER will be encharge table, the mapping is defined in the feature setup_router, this also show that the class ORDER_HANDLER will be encharge
@@ -41,7 +41,7 @@ of to handle different type of request to the ORDER resource.
URI_TEMPLATE_ROUTED_SERVICE URI_TEMPLATE_ROUTED_SERVICE
DEFAULT_SERVICE DEFAULT_SERVICE
-- Here we are using a default connector using the default Nino Connector, -- Here we are using a default connector using the default Standalone Connector,
-- but it's possible to use other connector (CGI or FCGI). -- but it's possible to use other connector (CGI or FCGI).
create create

View File

@@ -12,7 +12,6 @@ Currently, 4 connectors are available within EWF (but others are available outsi
*­ CGI: the common CGI application (apache, iis, ...) *­ CGI: the common CGI application (apache, iis, ...)
* FastCGI: on any server supporting libfcgi handling (apache, iis, ...) * FastCGI: on any server supporting libfcgi handling (apache, iis, ...)
* Standalone: a standalone Eiffel Web server, it can be run anywhere easily, and debug simply with EiffelStudio's debugger. It supports all concurrency modes, and require EiffelStudio >= 15.05. * Standalone: a standalone Eiffel Web server, it can be run anywhere easily, and debug simply with EiffelStudio's debugger. It supports all concurrency modes, and require EiffelStudio >= 15.05.
* Nino: similar to the "standalone" connectors, but lack good concurrency support.
Supporting a new connector is fairly simple, it just has to support the simple EWSGI specification which is really small. Then EWF will bring the power on top of it. Supporting a new connector is fairly simple, it just has to support the simple EWSGI specification which is really small. Then EWF will bring the power on top of it.

View File

@@ -13,7 +13,7 @@
</option> </option>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/> <library name="wsf" location="..\..\..\..\..\..\library\server\wsf\wsf-safe.ecf"/>
<library name="default_nino" location="..\..\..\..\..\..\library\server\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="..\..\..\..\..\..\library\server\wsf\default\standalone-safe.ecf"/>
<cluster name="src" location=".\"/> <cluster name="src" location=".\"/>
</target> </target>

View File

@@ -27,7 +27,7 @@ feature {NONE} -- Initialization
--| Uncomment the following line, to be able to load options from the file ewf.ini --| Uncomment the following line, to be able to load options from the file ewf.ini
-- create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} service_options.make_from_file ("ewf.ini") -- create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} service_options.make_from_file ("ewf.ini")
--| You can also uncomment the following line if you use the Nino connector --| You can also uncomment the following line if you use the Standalone connector
--| so that the server listens on port 9999 --| so that the server listens on port 9999
--| quite often the port 80 is already busy --| quite often the port 80 is already busy
set_service_option ("port", 9999) set_service_option ("port", 9999)

View File

@@ -1,4 +1,4 @@
# For nino connector, use port 9999 # For Standalone connector, use port 9999
port=9999 port=9999
#verbose=true #verbose=true

View File

@@ -28,7 +28,7 @@ feature {NONE} -- Initialization
--| Uncomment the following line, to be able to load options from the file ewf.ini --| Uncomment the following line, to be able to load options from the file ewf.ini
create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} service_options.make_from_file ("ewf.ini") create {WSF_SERVICE_LAUNCHER_OPTIONS_FROM_INI} service_options.make_from_file ("ewf.ini")
--| You can also uncomment the following line if you use the Nino connector --| You can also uncomment the following line if you use the Standalone connector
--| so that the server listens on port 9999 --| so that the server listens on port 9999
--| quite often the port 80 is already busy --| quite often the port 80 is already busy
-- set_service_option ("port", 9999) -- set_service_option ("port", 9999)

View File

@@ -1,4 +1,4 @@
# For nino connector, use port 9999 # For standalone connector, use port 9999
port=9999 port=9999
#verbose=true #verbose=true

View File

@@ -22,7 +22,7 @@ feature {NONE} -- Initialization
make make
-- Initialize Current -- Initialize Current
do do
-- To use particular port number (as 9090) with Nino connector -- To use particular port number (as 9090) with Standalone connector
-- Uncomment the following line -- Uncomment the following line
set_service_option ("port", 9090) set_service_option ("port", 9090)
make_and_launch make_and_launch

View File

@@ -22,8 +22,8 @@ cgi-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\cgi\cgi-safe
cgi : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\cgi\cgi.ecf cgi : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\cgi\cgi.ecf
libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\libfcgi\libfcgi-safe.ecf libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\libfcgi\libfcgi-safe.ecf
libfcgi : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\libfcgi\libfcgi.ecf libfcgi : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\libfcgi\libfcgi.ecf
nino-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\nino\nino-safe.ecf standalone-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\standalone\standalone-safe.ecf
nino : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\nino\nino.ecf standalone : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\standalone\standalone.ecf
null-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\null\null-safe.ecf null-safe : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\null\null-safe.ecf
null : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\null\null.ecf null : C:\_dev\projects\ewf\ewf\library\server\ewsgi\connectors\null\null.ecf
libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\libfcgi\libfcgi-safe.ecf libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\libfcgi\libfcgi-safe.ecf
@@ -43,15 +43,15 @@ cgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\cgi-safe.ecf
cgi : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\cgi.ecf cgi : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\cgi.ecf
libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\libfcgi-safe.ecf libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\libfcgi-safe.ecf
libfcgi : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\libfcgi.ecf libfcgi : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\libfcgi.ecf
nino-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\nino-safe.ecf standalone-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\standalone-safe.ecf
nino : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\nino.ecf standalone : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\standalone.ecf
openshift-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\openshift-safe.ecf openshift-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\connector\openshift-safe.ecf
cgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\cgi-safe.ecf cgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\cgi-safe.ecf
cgi : C:\_dev\projects\ewf\ewf\library\server\wsf\default\cgi.ecf cgi : C:\_dev\projects\ewf\ewf\library\server\wsf\default\cgi.ecf
libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\libfcgi-safe.ecf libfcgi-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\libfcgi-safe.ecf
libfcgi : C:\_dev\projects\ewf\ewf\library\server\wsf\default\libfcgi.ecf libfcgi : C:\_dev\projects\ewf\ewf\library\server\wsf\default\libfcgi.ecf
nino-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\nino-safe.ecf standalone-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\standalone-safe.ecf
nino : C:\_dev\projects\ewf\ewf\library\server\wsf\default\nino.ecf standalone : C:\_dev\projects\ewf\ewf\library\server\wsf\default\standalone.ecf
openshift-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\openshift-safe.ecf openshift-safe : C:\_dev\projects\ewf\ewf\library\server\wsf\default\openshift-safe.ecf
wsf_html-safe : C:\_dev\projects\ewf\ewf\library\server\wsf_html\wsf_html-safe.ecf wsf_html-safe : C:\_dev\projects\ewf\ewf\library\server\wsf_html\wsf_html-safe.ecf
wsf_html : C:\_dev\projects\ewf\ewf\library\server\wsf_html\wsf_html.ecf wsf_html : C:\_dev\projects\ewf\ewf\library\server\wsf_html\wsf_html.ecf

View File

@@ -21,7 +21,7 @@ feature {NONE} -- Initialization
make_and_launch make_and_launch
local local
launcher: WSF_NINO_SERVICE_LAUNCHER [APPLICATION_EXECUTION] launcher: WSF_STANDALONE_SERVICE_LAUNCHER [APPLICATION_EXECUTION]
opts: WSF_SERVICE_LAUNCHER_OPTIONS opts: WSF_SERVICE_LAUNCHER_OPTIONS
do do
create opts.make create opts.make
@@ -32,24 +32,22 @@ feature {NONE} -- Initialization
launcher.launch launcher.launch
end end
on_launched (conn: WGI_CONNECTOR) on_launched (a_connector: WGI_STANDALONE_CONNECTOR [APPLICATION_EXECUTION])
local local
e: EXECUTION_ENVIRONMENT e: EXECUTION_ENVIRONMENT
cmd: STRING_32 cmd: STRING_32
do do
if attached {WGI_NINO_CONNECTOR [APPLICATION_EXECUTION]} conn as nino then e := execution_environment
e := execution_environment create cmd.make (32)
create cmd.make (32) if attached e.item ("COMSPEC") as l_comspec then
if attached e.item ("COMSPEC") as l_comspec then cmd.append (l_comspec)
cmd.append (l_comspec) cmd.append ({STRING_32} " /C start ")
cmd.append ({STRING_32} " /C start ")
end
cmd.append ("http://localhost:")
cmd.append_integer (nino.port)
cmd.append_character ({CHARACTER_32} '/')
e.launch (cmd)
end end
cmd.append ("http://localhost:")
cmd.append_integer (a_connector.port)
cmd.append_character ({CHARACTER_32} '/')
e.launch (cmd)
end end
end end

View File

@@ -42,12 +42,12 @@ feature {NONE} -- Initialization
m.set_title ("EWF::OpenID demo") m.set_title ("EWF::OpenID demo")
create s.make_empty create s.make_empty
s.append ("<form action=%"" + req.script_url ("/openid") + "%" method=%"POST%">%N") s.append ("<form action=%"" + req.script_url ("/openid") + "%" method=%"POST%">%N")
s.append ("<strong>OpenID identifier</strong> <input type='text' name='openid_identifier' value='' size='60'/>") s.append ("<strong>Any OpenID identifier</strong> <input type='text' name='openid_identifier' value='' size='60'/>")
s.append ("<input type='submit' name='op' value='sign with OpenID' />") s.append ("<input type='submit' name='op' value='sign with OpenID' />")
s.append ("</form>%N") s.append ("</form>%N")
s.append ("<form action=%"" + req.script_url ("/openid") + "%" method=%"POST%">%N") s.append ("<form action=%"" + req.script_url ("/openid") + "%" method=%"POST%">%N")
s.append ("<strong>OpenID identifier</strong> <input type='text' name='openid_identifier' value='https://www.google.com/accounts/o8/id' size='60'/>") s.append ("<strong>OpenID identifier</strong> <input type='text' name='openid_identifier' value='https://me.yahoo.com/YOUR_YAHOO_USERNAME' size='60'/>")
s.append ("<input type='submit' name='op' value='sign with Google' />") s.append ("<input type='submit' name='op' value='sign with Yahoo' />")
s.append ("</form>%N") s.append ("</form>%N")
m.set_body (s) m.set_body (s)
res.send (m) res.send (m)

View File

@@ -1,23 +1,25 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-12-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-12-0 http://www.eiffel.com/developers/xml/configuration-1-12-0.xsd" name="demo" uuid="DC4D6549-D5F4-4E1A-959A-6BD536737A21" library_target="demo"> <system xmlns="http://www.eiffel.com/developers/xml/configuration-1-16-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-16-0 http://www.eiffel.com/developers/xml/configuration-1-16-0.xsd" name="demo" uuid="DC4D6549-D5F4-4E1A-959A-6BD536737A21" library_target="demo">
<target name="demo"> <target name="demo">
<root class="APPLICATION" feature="make_and_launch"/> <root class="APPLICATION" feature="make_and_launch"/>
<file_rule> <file_rule>
<exclude>/EIFGENs$</exclude>
<exclude>/CVS$</exclude>
<exclude>/.svn$</exclude> <exclude>/.svn$</exclude>
<exclude>/CVS$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule> </file_rule>
<option warning="true" full_class_checking="false" is_attached_by_default="true" void_safety="all" syntax="transitional"> <option concurrency="scoop" root_catcall_detection="none" root_concurrency="scoop" root_void_safety="all" warning="true" full_class_checking="false" is_attached_by_default="true" is_obsolete_routine_type="true" void_safety="all" syntax="transitional">
<assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" invariant="true" loop="true" supplier_precondition="true"/>
</option> </option>
<setting name="concurrency" value="thread"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="ewsgi" location="..\..\..\..\server\ewsgi\ewsgi-safe.ecf" readonly="false"/> <library name="ewsgi" location="..\..\..\..\server\ewsgi\ewsgi-safe.ecf" readonly="false"/>
<library name="ewsgi_nino_connector" location="..\..\..\..\server\ewsgi\connectors\nino\nino-safe.ecf" readonly="false"/> <library name="ewsgi_standalone_connector" location="..\..\..\..\server\ewsgi\connectors\standalone\standalone-safe.ecf" readonly="false"/>
<library name="http" location="..\..\..\..\network\protocol\http\http-safe.ecf"/> <library name="http" location="..\..\..\..\network\protocol\http\http-safe.ecf"/>
<library name="openid" location="..\openid-safe.ecf" readonly="false"/> <library name="openid" location="..\openid-safe.ecf" readonly="false"/>
<library name="wsf" location="..\..\..\..\server\wsf\wsf-safe.ecf" readonly="false"/> <library name="wsf" location="..\..\..\..\server\wsf\wsf-safe.ecf" readonly="false"/>
<library name="wsf_nino_connector" location="..\..\..\..\server\wsf\connector\nino-safe.ecf" readonly="false"/> <library name="wsf_standalone_connector" location="..\..\..\..\server\wsf\connector\standalone-safe.ecf" readonly="false"/>
<cluster name="src" location=".\" recursive="true"/> <cluster name="src" location=".\" recursive="true"/>
</target> </target>
<target name="demo_mt" extends="demo">
<option concurrency="thread" />
</target>
</system> </system>

View File

@@ -15,7 +15,7 @@
<library name="http_auth" location="..\http_authorization-safe.ecf"/> <library name="http_auth" location="..\http_authorization-safe.ecf"/>
<library name="encoders" location="..\..\..\..\text\encoder\encoder-safe.ecf"/> <library name="encoders" location="..\..\..\..\text\encoder\encoder-safe.ecf"/>
<library name="wsf" location="..\..\..\wsf\wsf-safe.ecf"/> <library name="wsf" location="..\..\..\wsf\wsf-safe.ecf"/>
<library name="default_nino" location="..\..\..\wsf\default\nino-safe.ecf"/> <library name="default_standalone" location="..\..\..\wsf\default\standalone-safe.ecf"/>
<cluster name="src" location=".\" recursive="true"/> <cluster name="src" location=".\" recursive="true"/>
</target> </target>
</system> </system>

View File

@@ -2,7 +2,7 @@
## Overview ## Overview
The main goal of this library is to provide a common layer on top of many different connectors. The main goal of this library is to provide a common layer on top of many different connectors.
A connector is a library used for the integration of Eiffel web server application with an underlying httpd server technology such as CGI, libFCGI, or even standalone Eiffel Web Nino (which is a httpd server written in Eiffel). A connector is a library used for the integration of Eiffel web server application with an underlying httpd server technology such as CGI, libFCGI, or even standalone Eiffel Web Standalone (which is a httpd server written in Eiffel).
Then one can build an Eiffel web service compliant with EWSGI specification, and thus with the same code (or almost), this could be compiled to run on any available connectors. Then one can build an Eiffel web service compliant with EWSGI specification, and thus with the same code (or almost), this could be compiled to run on any available connectors.

View File

@@ -11,7 +11,7 @@
</option> </option>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="connector_nino" location="..\..\connectors\nino\nino-safe.ecf" readonly="false"/> <library name="connector_standalone" location="..\..\connectors\standalone\standalone-safe.ecf" readonly="false"/>
<library name="ewsgi" location="..\..\ewsgi-safe.ecf" readonly="false"/> <library name="ewsgi" location="..\..\ewsgi-safe.ecf" readonly="false"/>
<cluster name="src" location="src\" recursive="true"/> <cluster name="src" location="src\" recursive="true"/>
</target> </target>

View File

@@ -11,7 +11,7 @@
</option> </option>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
<library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base.ecf"/>
<library name="connector_nino" location="..\..\connectors\nino\nino.ecf" readonly="false"/> <library name="connector_standalone" location="..\..\connectors\standalone\standalone.ecf" readonly="false"/>
<library name="ewsgi" location="..\..\ewsgi.ecf" readonly="false"/> <library name="ewsgi" location="..\..\ewsgi.ecf" readonly="false"/>
<cluster name="src" location="src\" recursive="true"/> <cluster name="src" location="src\" recursive="true"/>
</target> </target>

View File

@@ -14,8 +14,8 @@ feature {NONE} -- Initialization
make make
do do
print ("Example: start a Nino web server on port " + port_number.out + ", %Nand reply Hello World for any request such as http://localhost:8123/%N") print ("Example: start a Standalone web server on port " + port_number.out + ", %Nand reply Hello World for any request such as http://localhost:8123/%N")
(create {NINO_SERVICE [HELLO_WORLD_EXECUTION]}.make_custom ("")).listen (port_number) (create {STANDALONE_SERVICE [HELLO_WORLD_EXECUTION]}.make_custom ("")).listen (port_number)
end end
port_number: INTEGER = 8123 port_number: INTEGER = 8123

View File

@@ -12,11 +12,12 @@
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="connector_cgi" location="..\..\ewsgi\connectors\cgi\cgi-safe.ecf"/> <library name="connector_cgi" location="..\..\ewsgi\connectors\cgi\cgi-safe.ecf"/>
<library name="connector_libfcgi" location="..\..\ewsgi\connectors\libfcgi\libfcgi-safe.ecf"/> <library name="connector_libfcgi" location="..\..\ewsgi\connectors\libfcgi\libfcgi-safe.ecf"/>
<library name="connector_nino" location="..\..\ewsgi\connectors\nino\nino-safe.ecf"/> <library name="connector_standalone" location="..\..\ewsgi\connectors\standalone\standalone-safe.ecf"/>
<library name="encoder" location="..\..\..\text\encoder\encoder-safe.ecf" readonly="false"/> <library name="encoder" location="..\..\..\text\encoder\encoder-safe.ecf" readonly="false"/>
<library name="error" location="..\..\..\utility\general\error\error-safe.ecf"/> <library name="error" location="..\..\..\utility\general\error\error-safe.ecf"/>
<library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf"/> <library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf"/>
<library name="http" location="..\..\..\network\protocol\http\http-safe.ecf"/> <library name="http" location="..\..\..\network\protocol\http\http-safe.ecf"/>
<library name="standalone" location="standalone-safe.ecf" readonly="false"/>
<library name="nino" location="nino-safe.ecf" readonly="false"> <library name="nino" location="nino-safe.ecf" readonly="false">
<renaming old_name="HTTP_CONSTANTS" new_name="NINO_HTTP_CONSTANTS"/> <renaming old_name="HTTP_CONSTANTS" new_name="NINO_HTTP_CONSTANTS"/>
</library> </library>
@@ -24,6 +25,6 @@
<library name="wsf" location="..\wsf-safe.ecf"/> <library name="wsf" location="..\wsf-safe.ecf"/>
<cluster name="wsf_cgi" location=".\cgi\" recursive="true"/> <cluster name="wsf_cgi" location=".\cgi\" recursive="true"/>
<cluster name="wsf_libfcgi" location=".\libfcgi\" recursive="true"/> <cluster name="wsf_libfcgi" location=".\libfcgi\" recursive="true"/>
<cluster name="wsf_nino" location=".\nino\" recursive="true"/> <cluster name="wsf_standalone" location=".\standalone\" recursive="true"/>
</target> </target>
</system> </system>

View File

@@ -12,7 +12,7 @@
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf"/> <library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf"/>
<library name="wsf" location="..\wsf-safe.ecf"/> <library name="wsf" location="..\wsf-safe.ecf"/>
<library name="wsf_connector_nino" location="nino-safe.ecf"/> <library name="wsf_connector_standalone" location="standalone-safe.ecf"/>
<cluster name="wsf_openshift" location=".\openshift\" recursive="true"/> <cluster name="wsf_openshift" location=".\openshift\" recursive="true"/>
</target> </target>
</system> </system>

View File

@@ -2,13 +2,12 @@ note
description: "[ description: "[
Component to launch the service using the default connector Component to launch the service using the default connector
Eiffel Web Nino customized for OpenShift EiffelWeb standalone customized for OpenShift
This default connector support options: This default connector support options:
base: base_url (very specific to standalone server) base: base_url (very specific to standalone server)
verbose: to display verbose output, useful for Nino verbose: to display verbose output, useful for standalone
force_single_threaded: use only one thread, useful for Nino
check WSF_SERVICE_LAUNCHER for more documentation check WSF_SERVICE_LAUNCHER for more documentation
]" ]"
@@ -19,7 +18,7 @@ class
WSF_OPENSHIFT_SERVICE_LAUNCHER [G -> WSF_EXECUTION create make end] WSF_OPENSHIFT_SERVICE_LAUNCHER [G -> WSF_EXECUTION create make end]
inherit inherit
WSF_NINO_SERVICE_LAUNCHER [G] WSF_STANDALONE_SERVICE_LAUNCHER [G]
redefine redefine
initialize initialize
end end

View File

@@ -2,11 +2,10 @@ note
description: "[ description: "[
Options used by WSF_SERVICE_LAUNCHER Options used by WSF_SERVICE_LAUNCHER
For instance options supported by Nino as default connector:: For instance options supported by Standalone as default connector::
port: numeric such as 8099 (or equivalent string as "8099") port: numeric such as 8099 (or equivalent string as "8099")
base: base_url (very specific to standalone server) base: base_url (very specific to standalone server)
force_single_threaded: use only one thread, useful for Nino verbose: to display verbose output, useful for Standalone
verbose: to display verbose output, useful for Nino
]" ]"
date: "$Date: 2016-08-06 13:34:52 +0200 (sam., 06 août 2016) $" date: "$Date: 2016-08-06 13:34:52 +0200 (sam., 06 août 2016) $"
revision: "$Revision: 99106 $" revision: "$Revision: 99106 $"

View File

@@ -11,9 +11,9 @@
</option> </option>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="thread"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="connector_nino" location="..\..\..\ewsgi\connectors\nino\nino-safe.ecf" readonly="false"/> <library name="connector_standalone" location="..\..\..\ewsgi\connectors\standalone\standalone-safe.ecf" readonly="false"/>
<library name="connector_null" location="..\..\..\ewsgi\connectors\null\null-safe.ecf" readonly="false"/> <library name="connector_null" location="..\..\..\ewsgi\connectors\null\null-safe.ecf" readonly="false"/>
<library name="dft_nino" location="..\..\default\nino-safe.ecf"/> <library name="dft_standalone" location="..\..\default\standalone-safe.ecf"/>
<library name="ewsgi" location="..\..\..\ewsgi\ewsgi-safe.ecf" readonly="false"/> <library name="ewsgi" location="..\..\..\ewsgi\ewsgi-safe.ecf" readonly="false"/>
<library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/> <library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/>
<library name="wsf" location="..\..\wsf-safe.ecf" readonly="false"/> <library name="wsf" location="..\..\wsf-safe.ecf" readonly="false"/>

View File

@@ -13,11 +13,17 @@ feature {NONE} -- Initialization
make make
-- Initialize `Current'. -- Initialize `Current'.
local
base_url: detachable READABLE_STRING_8
do do
print ("Test Server that could be used for autotest%N") print ("Test Server that could be used for autotest%N")
-- base_url := "/test/" base_url := {TEST_SETTINGS}.base_url
if base_url.is_whitespace then
base_url := Void
end
set_service_option ("port", 9091) set_service_option ("port", {TEST_SETTINGS}.port_number)
set_service_option ("base", base_url)
set_service_option ("verbose", True) set_service_option ("verbose", True)
make_and_launch make_and_launch
end end

View File

@@ -35,6 +35,13 @@ feature -- Helper
end end
base_url: detachable STRING base_url: detachable STRING
once
Result := {TEST_SETTINGS}.base_url
if Result.is_whitespace then
Result := Void
end
end
test_url (a_query_url: READABLE_STRING_8): READABLE_STRING_8 test_url (a_query_url: READABLE_STRING_8): READABLE_STRING_8
local local

View File

@@ -0,0 +1,16 @@
note
description: "Summary description for {TEST_SETTINGS}."
author: ""
date: "$Date$"
revision: "$Revision$"
class
TEST_SETTINGS
feature -- Access
port_number: INTEGER = 9091
base_url: STRING = "" --"/test/"
end

View File

@@ -19,33 +19,49 @@ inherit
feature {NONE} -- Events feature {NONE} -- Events
web_app: detachable NINO_SERVICE [TEST_EXECUTION] web_connector: detachable separate WGI_STANDALONE_CONNECTOR [TEST_EXECUTION]
port_number: INTEGER port_number: INTEGER
base_url: detachable STRING base_url: detachable separate STRING
once
if attached local_base_url as b and then not b.is_whitespace then
create Result.make_from_separate (b)
end
end
local_base_url: detachable STRING
once
create Result.make_from_string ({TEST_SETTINGS}.base_url)
if Result.is_whitespace then
Result := Void
end
end
on_prepare on_prepare
-- <Precursor> -- <Precursor>
local local
app: NINO_SERVICE [TEST_EXECUTION] conn: separate WGI_STANDALONE_CONNECTOR [TEST_EXECUTION]
wt: WORKER_THREAD
e: EXECUTION_ENVIRONMENT e: EXECUTION_ENVIRONMENT
do do
create e create e
-- port_number := 9091 -- Uncomment to use with server outside this process -- port_number := {TEST_SETTINGS}.port_number -- Uncomment to use with server outside this process
if port_number = 0 then if port_number = 0 then
server_log ("== Current directory: " + e.current_working_directory) server_log ("== Current directory: " + e.current_working_directory)
port_number := 0
base_url := "/test/"
create app.make_custom (base_url)
web_app := app
create wt.make (agent app.listen (port_number)) if attached base_url as b then
wt.launch create conn.make_with_base (b)
e.sleep (1_000_000_000 * 5) else
port_number := app.port create conn.make
server_log ("Server port=" + port_number.out) end
web_connector := conn
setup_connector (conn)
launch_connector (conn)
-- e.sleep (1_000_000_000 * 5)
get_port_number (conn)
-- get_port_number (app.connector)
else else
server_log ("Use existing server") server_log ("Use existing server")
server_log ("== Current directory: " + e.current_working_directory) server_log ("== Current directory: " + e.current_working_directory)
@@ -53,6 +69,26 @@ feature {NONE} -- Events
end end
end end
setup_connector (conn: attached like web_connector)
do
conn.set_is_verbose (True)
conn.set_port_number (port_number)
conn.set_socket_recv_timeout (5)
end
launch_connector (conn: attached like web_connector)
do
conn.launch
end
get_port_number (conn: attached like web_connector)
require
conn.port > 0
do
port_number := conn.port
server_log ("Server port=" + port_number.out)
end
server_log_name: STRING server_log_name: STRING
local local
fn: FILE_NAME fn: FILE_NAME
@@ -78,9 +114,9 @@ feature {NONE} -- Events
test_url (a_query_url: READABLE_STRING_8): READABLE_STRING_8 test_url (a_query_url: READABLE_STRING_8): READABLE_STRING_8
local local
b: like base_url b: like local_base_url
do do
b := base_url b := local_base_url
if b = Void then if b = Void then
b := "" b := ""
end end
@@ -90,24 +126,29 @@ feature {NONE} -- Events
on_clean on_clean
-- <Precursor> -- <Precursor>
do do
if attached web_app as app then if attached web_connector as conn then
app.shutdown shutdown_server (conn)
end end
end end
shutdown_server (conn: attached like web_connector)
do
conn.shutdown_server
end
http_session: detachable HTTP_CLIENT_SESSION http_session: detachable HTTP_CLIENT_SESSION
get_http_session get_http_session
local local
h: LIBCURL_HTTP_CLIENT h: DEFAULT_HTTP_CLIENT
b: like base_url b: like local_base_url
do do
create h.make create h
b := base_url b := local_base_url
if b = Void then if b = Void then
b := "/" b := "/"
end end
if attached {HTTP_CLIENT_SESSION} h.new_session ("localhost:" + port_number.out + b) as sess then if attached {HTTP_CLIENT_SESSION} h.new_session ("http://localhost:" + port_number.out + b) as sess then
http_session := sess http_session := sess
sess.set_timeout (-1) sess.set_timeout (-1)
sess.set_is_debug (True) sess.set_is_debug (True)
@@ -120,15 +161,24 @@ feature {NONE} -- Events
do do
get_http_session get_http_session
if attached http_session as sess then if attached http_session as sess then
print ("Request: " + a_url + " ...%N")
if attached sess.get (a_url, adapted_context (ctx)) as res then if attached sess.get (a_url, adapted_context (ctx)) as res then
if attached res.body as l_body then if attached res.body as l_body then
if res.error_occurred then if res.error_occurred then
assert ("Request %""+a_url+"%" failed, got=[" + l_body + "]", False) if attached res.error_message as err_msg then
assert ("Request %""+a_url+"%" failed, got=[" + l_body + "] error:" + err_msg, False)
else
assert ("Request %""+a_url+"%" failed, got=[" + l_body + "] error:N/A", False)
end
else else
assert ("Good answer got=%""+l_body+"%" expected=%""+a_expected_body+"%"", l_body.same_string (a_expected_body)) assert ("Good answer got=%""+l_body+"%" expected=%""+a_expected_body+"%"", l_body.same_string (a_expected_body))
end end
else else
assert ("Request %""+a_url+"%" failed, no body, status=" + res.status.out , False) if attached res.error_message as err_msg then
assert ("Request %""+a_url+"%" failed, no body, status=" + res.status.out + " error:" + err_msg, False)
else
assert ("Request %""+a_url+"%" failed, no body, status=" + res.status.out + " error:N/A", False)
end
end end
end end
end end
@@ -146,18 +196,34 @@ feature {NONE} -- Events
end end
end end
test_post_request_with_filename (a_url: READABLE_STRING_8; ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; a_fn: STRING; a_expected_body: READABLE_STRING_8) test_post_request_with_filename (a_url: READABLE_STRING_8; ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT; a_fn: STRING; a_expected_body: detachable READABLE_STRING_8; a_expected_starting_body: detachable READABLE_STRING_8)
do do
get_http_session get_http_session
if attached http_session as sess then if attached http_session as sess then
if attached sess.post_file (a_url, adapted_context (ctx), a_fn) as res and then not res.error_occurred and then attached res.body as l_body then if
assert ("Good answer got=%""+l_body+"%" expected=%""+a_expected_body+"%"", l_body.same_string (a_expected_body)) attached sess.post_file (a_url, adapted_context (ctx), a_fn) as res and then
not res.error_occurred and then
attached res.body as l_body
then
assert ("Good answer got=%""+l_body+"%" expected=%""+ safe_out (a_expected_body) +"%"",
(a_expected_body /= Void implies l_body.same_string (a_expected_body))
and (a_expected_starting_body /= Void implies l_body.starts_with (a_expected_starting_body))
)
else else
assert ("Request %""+a_url+"%" failed", False) assert ("Request %""+a_url+"%" failed", False)
end end
end end
end end
safe_out (s: detachable READABLE_STRING_8): STRING
do
if s = Void then
Result := "Void"
else
Result := s.out
end
end
adapted_context (ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT): HTTP_CLIENT_REQUEST_CONTEXT adapted_context (ctx: detachable HTTP_CLIENT_REQUEST_CONTEXT): HTTP_CLIENT_REQUEST_CONTEXT
do do
if ctx /= Void then if ctx /= Void then
@@ -173,6 +239,7 @@ feature -- Test routines
test_get_request_01 test_get_request_01
-- New test routine -- New test routine
do do
assert ("has port", port_number > 0)
get_http_session get_http_session
if attached http_session as sess then if attached http_session as sess then
test_get_request ("get/01", Void, "get-01") test_get_request ("get/01", Void, "get-01")
@@ -199,11 +266,11 @@ feature -- Test routines
s := "This is an uploaded file%NTesting purpose%N" s := "This is an uploaded file%NTesting purpose%N"
f.put_string (s) f.put_string (s)
f.close f.close
test_post_request_with_filename ("post/file/01", Void, fn.string, "post-file-01%N" + s) test_post_request_with_filename ("post/file/01 #1", Void, fn.string, "post-file-01", "post-file-01")
create ctx.make create ctx.make
ctx.add_form_parameter ("foo", "bar") ctx.add_form_parameter ("foo", "bar")
test_post_request_with_filename ("post/file/01", ctx, fn.string, "post-file-01%N" + s) test_post_request_with_filename ("post/file/01 #2", ctx, fn.string, Void, "post-file-01")
else else
assert ("not_implemented", False) assert ("not_implemented", False)
end end

View File

@@ -1,27 +1,27 @@
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<system xmlns="http://www.eiffel.com/developers/xml/configuration-1-13-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-13-0 http://www.eiffel.com/developers/xml/configuration-1-13-0.xsd" name="wsf_tests" uuid="C4FF9CDA-B4E4-4841-97E0-7F799B85B657"> <system xmlns="http://www.eiffel.com/developers/xml/configuration-1-15-0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eiffel.com/developers/xml/configuration-1-15-0 http://www.eiffel.com/developers/xml/configuration-1-15-0.xsd" name="wsf_tests" uuid="C4FF9CDA-B4E4-4841-97E0-7F799B85B657">
<target name="server"> <target name="server">
<root class="TEST" feature="make"/> <root class="TEST" feature="make"/>
<file_rule> <file_rule>
<exclude>/.git$</exclude> <exclude>/.git$</exclude>
<exclude>/EIFGENs$</exclude>
<exclude>/.svn$</exclude> <exclude>/.svn$</exclude>
<exclude>/EIFGENs$</exclude>
</file_rule> </file_rule>
<option debug="true" warning="true" full_class_checking="true" is_attached_by_default="true" void_safety="all" syntax="provisional"> <option debug="true" warning="true" full_class_checking="true" is_attached_by_default="true" is_obsolete_routine_type="true" void_safety="all" syntax="provisional">
<assertions precondition="true" postcondition="true" check="true" loop="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" loop="true" supplier_precondition="true"/>
</option> </option>
<setting name="concurrency" value="thread"/> <setting name="concurrency" value="scoop"/>
<library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/> <library name="base" location="$ISE_LIBRARY\library\base\base-safe.ecf"/>
<library name="connector_nino" location="..\..\ewsgi\connectors\nino\nino-safe.ecf" readonly="false"/>
<library name="connector_null" location="..\..\ewsgi\connectors\null\null-safe.ecf" readonly="false"/> <library name="connector_null" location="..\..\ewsgi\connectors\null\null-safe.ecf" readonly="false"/>
<library name="dft_nino" location="..\default\nino-safe.ecf"/> <library name="connector_standalone" location="..\..\ewsgi\connectors\standalone\standalone-safe.ecf" readonly="false"/>
<library name="dft_standalone" location="..\default\standalone-safe.ecf"/>
<library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf" readonly="false"> <library name="ewsgi" location="..\..\ewsgi\ewsgi-safe.ecf" readonly="false">
<option> <option>
<assertions precondition="true" postcondition="true" check="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" supplier_precondition="true"/>
</option> </option>
</library> </library>
<library name="http" location="..\..\..\network\protocol\http\http-safe.ecf" readonly="false"/> <library name="http" location="..\..\..\network\protocol\http\http-safe.ecf" readonly="false"/>
<library name="http_client" location="..\..\..\network\http_client\http_client-safe.ecf" readonly="false"/> <library name="http_client" location="..\..\..\network\http_client\net_http_client-safe.ecf" readonly="false"/>
<library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/> <library name="thread" location="$ISE_LIBRARY\library\thread\thread-safe.ecf"/>
<library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/> <library name="time" location="$ISE_LIBRARY\library\time\time-safe.ecf"/>
<library name="wsf" location="..\wsf-safe.ecf" readonly="false"> <library name="wsf" location="..\wsf-safe.ecf" readonly="false">
@@ -29,6 +29,7 @@
<assertions precondition="true" postcondition="true" check="true" supplier_precondition="true"/> <assertions precondition="true" postcondition="true" check="true" supplier_precondition="true"/>
</option> </option>
</library> </library>
<library name="wsf_standalone" location="..\..\wsf\connector\standalone-safe.ecf" readonly="false"/>
<cluster name="server" location=".\server\" recursive="true"/> <cluster name="server" location=".\server\" recursive="true"/>
</target> </target>
<target name="wsf_tests" extends="server"> <target name="wsf_tests" extends="server">

View File

@@ -18,7 +18,6 @@
{if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>{/if} {if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}<library name="cgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\cgi-safe.ecf"/>{/if}
{if condition="$WIZ.connectors.use_libfcgi ~ $WIZ_YES"}<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>{/if} {if condition="$WIZ.connectors.use_libfcgi ~ $WIZ_YES"}<library name="libfcgi" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\libfcgi-safe.ecf"/>{/if}
{if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}<library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone-safe.ecf"/>{/if} {if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}<library name="standalone" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\standalone-safe.ecf"/>{/if}
{if condition="$WIZ.connectors.use_nino ~ $WIZ_YES"}<library name="nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\connector\nino-safe.ecf"/>{/if}
<cluster name="launcher" location=".\launcher\" recursive="true"> <cluster name="launcher" location=".\launcher\" recursive="true">
<cluster name="any_launcher" location="$|any"/> <cluster name="any_launcher" location="$|any"/>
</cluster> </cluster>
@@ -35,16 +34,6 @@
</cluster> </cluster>
<cluster name="src" location=".\src\" recursive="true"/> <cluster name="src" location=".\src\" recursive="true"/>
</target>{/if} </target>{/if}
{if condition="$WIZ.connectors.use_nino ~ $WIZ_YES"}
<target name="{$WIZ.project.name/}_nino" extends="common">
<root class="{$APP_ROOT/}" feature="make_and_launch"/>
<setting name="concurrency" value="none"/>
<library name="default_nino" location="$ISE_LIBRARY\contrib\library\web\framework\ewf\wsf\default\nino-safe.ecf"/>
<cluster name="launcher" location=".\launcher\">
<cluster name="default_launcher" location="$|default"/>
</cluster>
<cluster name="src" location=".\src\" recursive="true"/>
</target>{/if}
{if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"} {if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}
<target name="{$WIZ.project.name/}_cgi" extends="common"> <target name="{$WIZ.project.name/}_cgi" extends="common">
<root class="{$APP_ROOT/}" feature="make_and_launch"/> <root class="{$APP_ROOT/}" feature="make_and_launch"/>

View File

@@ -1,4 +1,4 @@
# For nino connector, use port {$WIZ.standalone_connector.port/} # For Standalone connector, use port {$WIZ.standalone_connector.port/}
port={$WIZ.standalone_connector.port/} port={$WIZ.standalone_connector.port/}
#verbose=true #verbose=true

View File

@@ -31,7 +31,7 @@ feature -- Execution
-- Choose a default -> standalone -- Choose a default -> standalone
create {WSF_STANDALONE_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if} create {WSF_STANDALONE_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if}
{if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}{literal} {if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}{literal}
elseif is_nino_launcher_id (l_id) then elseif is_standalone_launcher_id (l_id) then
create {WSF_STANDALONE_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if} create {WSF_STANDALONE_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if}
{if condition="$WIZ.connectors.use_libfcgi ~ $WIZ_YES"}{literal} {if condition="$WIZ.connectors.use_libfcgi ~ $WIZ_YES"}{literal}
elseif is_libfcgi_launcher_id (l_id) then elseif is_libfcgi_launcher_id (l_id) then
@@ -39,9 +39,9 @@ feature -- Execution
{if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}{literal} {if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}{literal}
elseif is_cgi_launcher_id (l_id) then elseif is_cgi_launcher_id (l_id) then
create {WSF_CGI_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if} create {WSF_CGI_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if}
{if condition="$WIZ.connectors.use_nino ~ $WIZ_YES"}{literal} {if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}{literal}
elseif is_nino_launcher_id (l_id) then elseif is_standalone_launcher_id (l_id) then
create {WSF_NINO_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if} create {WSF_STANDALONE_SERVICE_LAUNCHER} launcher.make_and_launch (opts){/literal}{/if}
{literal} {literal}
else else
io.error.put_string ("Application launcher not found!%N") io.error.put_string ("Application launcher not found!%N")
@@ -52,7 +52,7 @@ feature -- Execution
launcher_id: detachable READABLE_STRING_GENERAL launcher_id: detachable READABLE_STRING_GENERAL
-- Launcher id based on the executable extension name if any. -- Launcher id based on the executable extension name if any.
-- This can be redefine to customize for your application. -- This can be redefine to customize for your application.
--| ex: nino, cgi, libfcgi or Void. --| ex: standalone, cgi, libfcgi or Void.
do do
if attached (create {PATH}.make_from_string (execution_environment.arguments.command_name)).extension as ext then if attached (create {PATH}.make_from_string (execution_environment.arguments.command_name)).extension as ext then
Result := ext Result := ext
@@ -62,17 +62,11 @@ feature -- Execution
feature -- Status report feature -- Status report
{/literal} {/literal}
{if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"} {if condition="$WIZ.connectors.use_standalone ~ $WIZ_YES"}
is_nino_launcher_id (a_id: READABLE_STRING_GENERAL): BOOLEAN is_standalone_launcher_id (a_id: READABLE_STRING_GENERAL): BOOLEAN
do do
Result := a_id.is_case_insensitive ("standalone") Result := a_id.is_case_insensitive ("standalone")
end{/if} end{/if}
{if condition="$WIZ.connectors.use_nino ~ $WIZ_YES"}
is_nino_launcher_id (a_id: READABLE_STRING_GENERAL): BOOLEAN
do
Result := a_id.is_case_insensitive ("nino")
end{/if}
{if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"} {if condition="$WIZ.connectors.use_cgi ~ $WIZ_YES"}
is_cgi_launcher_id (a_id: READABLE_STRING_GENERAL): BOOLEAN is_cgi_launcher_id (a_id: READABLE_STRING_GENERAL): BOOLEAN
do do

View File

@@ -84,12 +84,10 @@ Web application runs on top of connectors
Select connectors you want to support: Select connectors you want to support:
]") ]")
Result.add_boolean_question ("Standalone", "use_standalone", "Using the standalone Eiffel Web server") Result.add_boolean_question ("Standalone", "use_standalone", "Using the standalone Eiffel Web server")
Result.add_boolean_question ("Nino", "use_nino", "Using the Eiffel Web nino server")
Result.add_boolean_question ("CGI", "use_cgi", "Require a httpd server") Result.add_boolean_question ("CGI", "use_cgi", "Require a httpd server")
Result.add_boolean_question ("libFCGI", "use_libfcgi", "Require a httpd server") Result.add_boolean_question ("libFCGI", "use_libfcgi", "Require a httpd server")
Result.data.force ("yes", "use_standalone") Result.data.force ("yes", "use_standalone")
Result.data.force ("no", "use_nino")
Result.data.force ("yes", "use_cgi") Result.data.force ("yes", "use_cgi")
Result.data.force ("yes", "use_libfcgi") Result.data.force ("yes", "use_libfcgi")
end end
@@ -97,7 +95,7 @@ Select connectors you want to support:
standalone_connector_page: WIZARD_PAGE standalone_connector_page: WIZARD_PAGE
once once
Result := new_page ("standalone_connector") Result := new_page ("standalone_connector")
Result.set_title ("Standalone (or nino) connector") Result.set_title ("Standalone connector")
Result.set_subtitle ("Set options .") Result.set_subtitle ("Set options .")
Result.add_integer_question ("Port number", "port", "It happens port 80 is already taken, thus choose another one.") Result.add_integer_question ("Port number", "port", "It happens port 80 is already taken, thus choose another one.")
Result.add_boolean_question ("Verbose", "verbose", "Verbose output") Result.add_boolean_question ("Verbose", "verbose", "Verbose output")
@@ -175,12 +173,6 @@ Use the filter component:
end end
sv.append ("standalone") sv.append ("standalone")
end end
if connectors_page.boolean_field_value ("use_nino") then
if not sv.is_empty then
sv.append (", ")
end
sv.append ("nino")
end
if connectors_page.boolean_field_value ("use_cgi") then if connectors_page.boolean_field_value ("use_cgi") then
if not sv.is_empty then if not sv.is_empty then
sv.append (", ") sv.append (", ")
@@ -221,7 +213,6 @@ feature -- Events
elseif a_current_page = connectors_page then elseif a_current_page = connectors_page then
if if
connectors_page.boolean_field_value ("use_standalone") connectors_page.boolean_field_value ("use_standalone")
or connectors_page.boolean_field_value ("use_nino")
then then
Result := standalone_connector_page Result := standalone_connector_page
else else