This web page is dedicated to WebServex architecture,
its API and related HTTP Tools
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.
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.
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 |