Project WebServex

This web page is dedicated to WebServex architecture, its API and related HTTP Tools



ARCHITECTURAL NOTES:

The following diagram demonstrates how WebServexes using HTTPClient (or other similar clients) act in an enterprise-wide application.


This architecture has similarities with web services, but is easier faster and cheaper to implement. In nutshell in my implementation of WebServex, it uses an HTTP client to enable web servlets to become clients of other servlets and JSP's. Therefore instead of EJB all the business logic and resource pooling of the enterprise is handled easily by server-servlets where as client-servlets handle the Internet interfacing. This design can be easily deployed to server farms with extreme scalability. This framework can also be implemented using only Java and XML, as well as .NET library.

In general every servex must have some base management interface. Also in the colony of WebServexes There are Manager and Directory Servexes. All Servexes register their address in directory Servex in addition to their service category similar to UDDI concept.

WebServex communication protocol for simplicity is set to HTTP. But on top of it we can have XML, or proprietary text format for efficiency, simplicity, and/or speed of implementation.

The Management Servex queries each servex using standard base management interface to ensure health, efficiency of the colony. Some of the queries of Servexes are:
"GET HARDWARE UTILIZATION", "GET SOFTWARE UTILIZATION", "IS HEALTHY", "GET AVERAGE PROCESSING TIME", "RESET", "GET/SET REQUEST QUEUE SIZE", and "GET/SET" any internal public variable.
Also Management servex arranges the directory servex for client handling priority as well as failover cover-up and other scalability, performance and reliability issues.

All Server side Servex clients, query directory servex for optimized service location periodically.



















BUILT COMPONENTS/ HTTP TOOLS:
The implemented part of the above mentioned architecture is summarized in Readme1st.txt

Readme1st.txt is the introductory file for HTTP tools (WebServex):

1- INTRODUCTION:
   Three main components which are packaged in WebServex.jar
   file are:
   
   1.1- WebServex.HTTPClient: 
        A class which I primerily built to make a JSP/servlet
        act as a client for another JSP/Servlet.
        Nevertheless this class can be imported to any java 
        application e.g. GUI to enable access to Web.

   1.2- WebServex.HTTPClientEmulator(Browser Emulator):  
        This is a very useful tool for testing any web server
        as well as dynamic pages. In addition it is very usefull tool
        for performance testing, stress testing and concurrency testing
        of your web application. This is standalone application which can 
        generate multiple clients.

   1.3- WebServex.RequestDumperServer:
        This is an echo web server (alpha version) which listens to 
        specific port, and echos back the request to client. It is 
        usefull for web service type of debuging.
   
2- DECOMPRESSION:
   Download and unzip the file HTTPTools.zip which contain both
   WebServex.jar and related documentation including this file

3- COMPONENTS:
   In addition to three above mentioned components two other classes
   are used to call a web server from a client,
   These are WebServex.Stats and WebServex.TransactionReport
   Stats contains a collection of TransactionReports and is passed to 
   HTTPclient and consequently queried for results.
   The WebServex API documentation can be accessed through WebServex.html
   or package-summary.html

4- DEPLOYMENT:
   4.1- Command line and standalone access:
        4.1.1- Copy WebServex.jar into jdk1.4/lib/ext 
        4.1.2- Set the classpath to include this file:
               e.g. in windows:
               set classpath=%classpath%;C:\J2SDK_Forte\jdk1.4.0\lib\ext\WebServex.jar;
        4.1.3- You are ready to execute just type:
                                java WebServex.HTTPClientEmulator
                             or java WebServex.RequestDumperServer 80
   4.2- Tomcat setup:
        4.2.1- Copy WebServex.jar into ../common/lib folder and see example
               ClientJSP.jsp for more info.

5- USAGE NOTES:
   5.1- Browser Emulator ( HTTPClientEmulator)
        5.1.1- TCP warm-up: 
               When you start hitting your web server the initial 
               connection of TCP is slow but the consequent accesses 
               are faster therefor start with a small number of clients
               to reduce the variance of test results.
        5.1.2- Test Precision:
               Generally response times Variance should not be larger 
               than the average of round trip response times.
        5.1.3- Before elaborate testing test with only one client for
               two reasons. First from the Average response time you can
               adjust the Timeout seconds. second by checking the response
               details you make sure the server returns the correct results
               the port setting is ok, and network connection is fine, etc.
    
   5.2- Echo Web Server (RequestDumperServer)
        5.2.1- Port number as argument.
               If you start like: java WebServex.RequestDumperServer 8081
               in your browser you type: HTTP://localhost:8081/anyphrase...
   
   5.3- HTTPClient()
        5.3.1- Before initializing an HTTPClient Thread and starting it
               you have to initialize a Stats object by passing the total number
               of transactions you expect to take place.
        5.3.2- After starting your clients and before collecting data from
               Stats you should call getNumberOfFails() and getNumberOf200OK()
               this will ensure you will get the complete Statistics.

6- MORE INFO(DOCUMENTATION):
   For more information read : WebServex.html  or package-summary.html 

7- CONTACT INFO:
   I am interested in your feedbacks. Do email me at :
   ohanians@gosympatico.ca or ohanians@lycos.com or ohanians@hotmail.com
   or visit my website: www.cybergenia.com and ohanian.tripod.com.











API DOCUMENTATION:


The following are API summary of the implemented part.
Note that Servex Standard Management API is not implemented, neither are Management or Directory Servexes.
































EXPERIMENT RESULTS:

These data are a sample test result from an 1 GHz NT Server in a 100MB/s isolated network for Browser emulator:


Client #

LocalHost(1GHz)(index.html)

Isolated NT LAN 100MBS(index.html)

Isolated NT LAN 100MBS(jsp POST)


Avg. Response time (ms)

Fails

Total time (sec)

Avg. Response time (ms)

# of Fails

Total Time (sec)

Avg. Response time (ms)

# of Fails

Total Time (sec)

1

10

0

N/A

160

0

0

10

0

0

5

20

0

N/A

200

0

0

15

1

0

10

25

0

N/A

300

0

0

17

2

0

20

35

0

N/A

500

0

0

30

3

0

50

45

0

N/A

350

0

2

40

4

1

100

60

0

N/A

300

0

3

40

10

2

500

150

5

N/A

300

0

14

50

50

12

1000

100

7

N/A

350

0

28

1000

150

25

2000

80

3

N/A

350

8

52

2000

350

51

3000

150

200

N/A

300

0

80

3000

400

74











DOWNLOAD VERSION 1.1B:

Download then unzip the following file and follow the instruction in Readme1st.txt

WebServex.zipp