+ All Categories
Home > Documents > JCHAT_jchatbox

JCHAT_jchatbox

Date post: 15-Nov-2014
Category:
Upload: vamseekrishnakotha
View: 121 times
Download: 0 times
Share this document with a friend
Popular Tags:
104
JChat Box 1. ABSTRACT 2. INTRODUCTION 3. ABOUT ORGANISATION 4. SRS DOCUMENT 5. DESIGN PRINCIPLES & EXPLANATION 6. DESIGN DOCUMENT 6.1 SYSTEM DESIGN 7. PROJECT DICTIONARY 7.1 UML DIAGRAMS 7.2 E-R DIAGRAMS 8. FORMS & REPORTS 8.1 I/O SPECIMENS 8.2 I/O SAMPLES 9. TESTING 9.1 TEST CRITERIA & TEST CASES 9.2 TEST REPORT & ANALYSIS 10. IMPLEMENTATION & USER MANUALS 11. CONCLUSION 12. BIBLIOGRAPHY 2
Transcript
Page 1: JCHAT_jchatbox

JChat Box

1. ABSTRACT

2. INTRODUCTION

3. ABOUT ORGANISATION

4. SRS DOCUMENT

5. DESIGN PRINCIPLES & EXPLANATION

6. DESIGN DOCUMENT

6.1 SYSTEM DESIGN

7. PROJECT DICTIONARY

7.1 UML DIAGRAMS

7.2 E-R DIAGRAMS

8. FORMS & REPORTS

8.1 I/O SPECIMENS

8.2 I/O SAMPLES

9. TESTING

9.1 TEST CRITERIA & TEST CASES

9.2 TEST REPORT & ANALYSIS

10.IMPLEMENTATION & USER MANUALS

11.CONCLUSION

12.BIBLIOGRAPHY

2

Page 2: JCHAT_jchatbox

JChat Box

3

Page 3: JCHAT_jchatbox

JChat Box

JChatBox is a 100% JAVA JSP/Servlets chat application. Here are the three requirements you need to run it :

• Servlet Engine or Application Server JSP1.0/Servlets2.1 compliant (or higher).• JVM 1.2.2 or higher.• Browser (Internet Explorer 4.x or higher, Mozilla 1.x, Netscape 4.x or higher)

jChatBox only needs HTTP to communicate between server-side (servlet engine) and client-side (browser).

MODERATORS: Jchat Box provides moderation feature. You can add/remove/ update moderators. A moderator is defined by a username (login), a password and an email. Email field is not mandatory. Links between moderators and chat rooms could be configured in chat room forms. In addition to chat room’s moderation (kick off, ban, transcript…), a moderator can open many new chat rooms. However moderators cannot backup chat rooms, modify jchatBox system properties, and add/remove/update others moderators.

CHATROOMS: JchatBox supports multiple chat rooms. You can open new chatroom by following “open a chatroom” link. You can manage a chat room by selecting the chat room in the list box named “manage Chat room”. You can backup all chat rooms by following “Backup chat rooms” link. See the screen below to locate these features.

CHAT : Once logged in, an user can send messages to all users in chat room through message form. Depending on how filters(html, url converter) have been enabled,an user can send text messages or html-formated messages. url filter converts http://……….into hyperlink. User can follow “refresh” link to speed up chatroom’s content synchonization. He can also follow “logout” link to leave the chatroom.

OPEN A CHATROOM : You need several parameters(basics and advanced) to open a new chatroom:Name : The name of the chatroomSubject : The subject of the chatroom.Max.Users : Maximum users for the chatroom. No more users allowed to enter in the chatroom once this limit is reached. Display mode: There are four ways to display chatroom’s content (i.e. chatrooms clients). It could be in an html/javascript page, an applet, a java application or in a Macromedia flash5 client. So, for html/javascript clients, you have to choose between Framed(jsp) or Buffered-Framed (JSP) modes. Buffered-Framed one is optimized to lower flickering effect.

LOGIN :

1) All users need to fill in nickname form and select a chatroom to join it. Depending on client of skin, it could be done in different ways:

4

Page 4: JCHAT_jchatbox

JChat Box2) First, user enters a nickname. Then he follows the link matching to the

chatroom he wants to join. Login will fail if the nickname is already in use, or if the chatroom is full, or if the Ipaddress is banned.

A project titled, “JCHAT BOX” is web-based distributed Application. An integration of Servlet Engine or Application Server JSP1.0/Servlet 2.1.

5

Page 5: JCHAT_jchatbox

JChat Box

Existing System:

There is no existing system. Here we have developed this application just to provide chat rooms to chat different kind of moderators. This is a system provides all the basic features of a Chatting System.

6

Page 6: JCHAT_jchatbox

JChat BoxProposed System:

The first step of analysis process involves the identification of need. The success of a system depends largely on how accurately a problem is defined, thoroughly investigated and properly carried out through the choice of solution.

jChatBox supports multiple chatrooms. You can open new chatroom by following "open a chatroom" link. You can manage a chatroom by selecting the chatroom in the list box named "Manage chatroom". You can backup all chatrooms by following "Backup chatrooms" link.

You can add/remove/update moderators. A moderator is defined by an username (login), a password and an email. Email field is not mandatory. Links between moderators and chatrooms could be configured in chatroom forms. In addition to chatroom's moderation (kick off, ban, transcript, ...), a moderator can open many new chatrooms. However moderators cannot backup chatrooms, modify jChatBox System properties, and add/remove/update others moderators

Totally you have the control over chat rooms, users, system properties to chang.

Display Mode : There are four ways to display chatroom's content (i.e. chatooms clients). It could be in an HTML/JavaScript page, an Applet, a Java application or in a Macromedia Flash5 client. So, for HTML/JavaScript clients, you have to choose between Framed (JSP) or Buffered-Framed (JSP) modes. Buffered-Framed one is optimized to lower flickering effect.

Project Scope and Objectives:

jChatBox is an application and is used to create/manager/monitor chatrooms. You can add/update/remove moderators. You can also track user's sessions. Finally you can modify jChatBox system properties. Lot of effort was put to make it user friendly. Optimum utilization of application is possible. All basic features are provided. Reduces the user interaction work.

7

Page 7: JCHAT_jchatbox

JChat Box The wastage of time is reduced when compared with old type chat rooms. It also helps in optimum distribution of funds by the management among user groups for procurement of new equipment. More flexible/expendability it means developer can ---

They can add more languages and support to jChatBox through XML resources files based on multilanguage skin only

They can implement their own client (HTML/JavaScript, Applet, Flash, Java Application). They only need API (JavaDoc) to know how to interact with jChatBox server-side. HTML/JavaScript skins are also a good starting point. XML Connector service should be used for remote clients (Applets, ...).

They can implement additional filters by extending jChatBox.Chat. Filter.Filter abstract class.

They can implement additional Transcript by extending jChatBox. Chat.Transcript.Dump abstract class. Transcript implementation is declared in jchatbox.xml (inside <TRANSCRIPT> tag) and loaded at Runtime.

They can plug listeners by implementing jChatBox.Chat.Event.ChatroomListener or jChatBox.Chat.Event.Chatroom Listener interfaces.

8

Page 8: JCHAT_jchatbox

JChat Box

SaparnaInfotech limited is an organization of Professionals with multi disciplinary experience in the fields of Software development, services and consultancy and specialization in Web portals, Banking, Insurance, Hospital and Business Solutions.

Saparna, a pioneer in client /server solutions, takes pride in being part of the growing Information Technology industry at Hyderabad which is fast emerging into yet another Silicon Valley of India.

Strengths:

9

Page 9: JCHAT_jchatbox

JChat BoxThe major strengths of Saparna are its advanced technological skills

and a committed team of professionals, which bring in a constant stream of satisfied customers to the company's fold both in the export and the domestic markets.

We have a dedicated team of professionals with real experience in the functional areas in a variety of state-of-the-art, Hardware and Software platforms. Our business interest is focused on Product Development for Banking, Hospital Management, Hotel Management, Rice Mill Automation, Web Portals, Image Processing Tools, Factory Automation and Office Automation. Our clear vision can provide new perspective to any area requiring IT solution with total commitment on quality, delivery and cost with our proven expertise both in well established and cutting edge technologies.

Focus:

The company focuses on delivery of cost effective and timely business solutions developed on cutting-edge technology. M/s BIL has an advanced Software development center backed by committed and experienced Software Professionals. M/s BIL respects customers and the development with full quality in mind and believes in nurturing a relationship, Trust and dependability.

Mission:

SAPARNA’s Mission is to build a quality product, respect human values,

upgrade its process and technical capabilities on a continuous basis, providing an employee-centric work atmosphere where every employee feels at home and is sensitive for enhancing the quality norms of the Software development work in IT and the State-of-art Technology and Services. To deliver innovative business solutions that maximizes the success of organizations in India and Abroad. To develop and maintains strategic alliances with institutions of expertise in India and Abroad.

Vision:

SAPARNA's Vision is to emerge as one of the fastest growing IT services company with special emphasis on quality, integrity, innovation, commitment, human values for varied and specific requirements and to deliver such products which will have far reaching advantages and applications.

SAPARNA envisages of undertaking Business Outsource Processing works like Data enumeration, e-Catalog, Insurance processing, Accounting, Auditing, Back end Data processing for Banks, Insurance companies and MNC's.

Human Resource:

An aspect that makes Saparna so special is its strength in possessing manpower resources that comprise of experienced, talented and dedicated

10

Page 10: JCHAT_jchatbox

JChat Boxcomputer science graduates and postgraduates. These professionals are continuously trained to provide smart business solutions using skills in the very latest technology that includes Client/Server, Object Oriented Design and programming and Internet technologies. Saparna's human resources comprise of personnel qualified in computer sciences: M.Tech's, B.Tech's, MCA's and MSc's.

Skill Areas:

Operating Systems : MS-DOS, Sun Solaris, UNIX, Windows NT/2000, Windows95/98.

RDBMS : Oracle, SQL Server, and MS Access. Client/Server Tools : Visual Basic, VC++. Web technologies : ASP, Java, WAP, WML, HTML, and XML. Legacy Skills : COBOL. Middle Tier : COM/DCOM, RMI, CORBA.

Saparna adopts new and emerging technologies to deliver innovative

solutions and best-of-breed products to its customers. As part of its R&D activities, Saparna has established structured R&D Group to foster innovation.

Infrastructure:

At M/s SIL the Infrastructure facilities are excellent and abundantly

available for the IT personnel to work with. This company is located very close to the Software Technology Park where in all the facilities for Data Transmission is available. This is located in our own premises of approximately 10,000 sft . This center has following facilities to handle international parties.

11

Page 11: JCHAT_jchatbox

JChat Box

The JChat Box is developed with the aim of design an environment, in which users can enter required existing chat room other wise he has a choice of creating his own chat room as per his interest. There are two users can chat privately or publicly. Default option is public chat. We can also set the system properties besides type of display mode. There are four modes to select: HTML/JavaScript, applet mode, java application mode or Flash Media mode.

1. Introduction

1.1 Purpose: The purpose of this document is to describe all external requirements for the JChat Box. It also describes the interfaces for the system.

JChatBox is a JAVA JSP/Servlets chat application. Here are the three requirements you need to run it:

12

Page 12: JCHAT_jchatbox

JChat Box

• Servlet Engine or Application Server JSP1.0/Servlets2.1 compliant (or higher).

• JVM 1.2.2 or higher.

• Browser (Internet Explorer 4.x or higher, Mozilla 1.x, Netscape 4.x or higher)

JChatBox only needs HTTP to communicate between server-side (servlet engine) and client-side (browser).

1.2 Scope: This document describes the requirements of the system. It is meant for use by the developers, and will also be the basis for validating the final system. Any changes made to the requirements in the future will have to go through a formal change approval process. The developer is responsible for asking for clarifications. When necessary and will not make any alterations without the permission of client.

JChatBox should run under ANY platform supporting JSP1.0/ Servlets 2.1(or higher). This is the scope of our application

Tested platforms :

Servlet Engine WebServer JVM OSTomcat 3.1 Tomcat 3.1 SUN - 1.2.2_007 Win32

Tomcat 3.2.4 Apache 1.3.14 SUN - 1.3_01 Solaris 2.7 Tomcat 3.3.1 Apache 1.3.14 SUN - 1.3_01 Solaris 2.7 Tomcat 4.0.3 Tomcat 4.0.3 SUN - 1.3_02 Win32Tomcat 4.0.6 Apache 1.3.17 SUN - 1.4.1 Solaris 2.7

Tomcat 4.1.18 Tomcat 4.1.18 SUN - 1.3.0 Win32Tomcat 5.0.16 Tomcat 5.0.16 SUN - 1.4.1 Win32

Resin 1.2.3 Resin 1.2.3 SUN - 1.2.2_007 Win32Resin 2.1.6 Resin 2.1.6 SUN - 1.3_02 Win32JRun 3.01 JRun 3.01 SUN - 1.2.2_007 Win32JRun 4.0 JRun 4.0 SUN - 1.3_02 Win32

ServletExec 3.1 NES-IPlanet 4.1 SP5 SUN - 1.2.2_006 Win32SunONE 7.0 SunONE 7.0 SUN - 1.3.1 Win32Weblogic 5.1

SP9WebLogic 5.1 SP9 SUN - 1.2.2_007 Win32

Weblogic 6.0 SP2

WebLogic 6.0 SP2 SUN - 1.3.0 Win32

Weblogic 6.1 WebLogic 6.1 SUN - 1.3.1 Win32Weblogic 7.0

SP1 Weblogic 7.0 SP1 BEA - 1.3.1 Win32

WTE 3.5.3 WTE 3.5.3 IBM - 1.2.2 Win32WebSphere

3.5.3 IBM HTTP Server

1.3.12IBM - 1.2.2 Win32

13

Page 13: JCHAT_jchatbox

JChat BoxWebSphere

4.0.2 IBM HTTP Server

1.3.19IBM - 1.3 Win32

WebSphere 5.0 WebSphere 5.0 IBM - 1.3 Win32Orion 1.5.2 Orion 1.5.2 SUN - 1.3.1 Win32

1.3 Definition: A JChat Box can also treat as a tool for creating an environment, in which users can chat with their required users and he is allowed to create his own chat room. Administrator has the right of setting the system properties like Backup file, log folder, system login, system email, timeout, user session id, default language, updated password….etc.

1.4 Reference: Not Applicable.

1.5 Developers Responsibilities overview: The points that mentioned in system requirements specification are

1. An introductory nature describing mainly the

Purpose of the system requirements specifications document. Outlining the scope of the envisaged application.

2. Describes the iterations of the system with its environment without going into the internals of the system. Also describes the constraints imposed on the system. Thus it is out side the envisaged application. The assumptions made are also listed. It is supported by the

UML Diagrams

3. It also describes the internal behaviour of the system in response to the inputs and while generating the outputs.

This document is also supported with detailed level UML diagrams, list of inputs, process explanation and list of output.

4. Contains external interface requirements, which includes the user, hardware and software interfaces.

5. Deals with performance requirements of the system. Contains the design constraints composing of software constraints and hardware constraints.

2. General Description

14

Page 14: JCHAT_jchatbox

JChat Box

Application functional overview: JChatBox you can launch it and create/manager/monitor chat rooms. You can add/update/remove moderators. You can also track user's sessions. Finally you can modify jChatBox system properties.

2.1 User characteristics: In our project user may be an administrator and an ordinary enduser. Administrator have the authority to set all the system properties. Enduser can open a chatroom or can create a chat room of his own with the permission of admin. And also he can choose the pubic or private chat. No need to have the even minimum knowledge to operate this system.

2.2 General constraints: The system should run on Pentium, under windowsNT/2000 professional or server or forward versions of Microsoft operating systems with minimum 16 MB RAM for better performance. Actually these filters can apply on any kind of Mail servers.

2.3 Assumptions and Dependencies:

a. It is assumed that the java web server is Tomcat4.0.6, Tomcat is a commercial-quality web server solution based on the Java platform that supports the Servlet and JSP specifications.

b. It is assumed that application server is Bea WebLogic. t.

c. All the details produced by the user are correct.

d. Other auxiliary systems like Java Naming and Directory Interface.

3. Function Requirements

Functional requirements specify which outputs should be produced from the given inputs. They describe the relationship between the input and output of the system, for each functional requirement a detailed description of all data inputs and their source and the range of valid inputs must be specified.

All the operations to be performed on the input data to obtain the output should be specified.

3.1 Inputs: Inputs are nothing but data have to be entered by user or some properties settled by admin. User has to feed

15

Page 15: JCHAT_jchatbox

JChat Boxrelevant data only depends on the operation going to take. To login user has to give nickname and chatroom as inputs.

3.2 Outputs: Outputs are reflected immediately. Every text we entered in text window part is reflect on public main body of the chat room form.

4. External Interface Requirements

4.1 User Interface: Here user interface is developed using JSPs using which we can design and develop the pages which are attractive and dynamic. It is also very easy to navigate from one place to another place. We put lot of efforts to make the user interface attractive and process the data which is fed by the user.

4.2 Software Interfaces: This interface requirements should specify the inter face with other. Software which the system will use or which will use the system, this includes the interface with the operating system and other applications.

The message content and format of each interface should be given.

4.3 Hardware Interfaces: Hardware interface is very important to the documentation. If the software is execute on existing hardware or on the pre-determined hardware, all the characteristics of the hardware, including memory restrictions, should be specified. In addition, the current use and load characteristics of the hardware should be given.

5. Performance Requirements

All the requirements relating to the performance characteristics of the system must be clearly specified. There are two types of performance requirements – static and dynamic.

16

Page 16: JCHAT_jchatbox

JChat BoxStatic Requirements are those that do not impose constraint on the execution characteristics of the system. These include requirements like the number of terminals to be supported, and number simultaneous users to be supported, number of files, and their sizes that the system has to process. These are also called capacity of the system. Dynamic requirements specify constraints on execution behaviour of the system. These typically include response time and throughput constraints on the system.

The processing speed, respective resource consumption throughput and efficiency measure performance. For achieving good performance few requirements like reducing code, less use of controls, minimum involvement of repeated data etc., are to be followed. Each real-time system, software what provides required function but does not conform to performance of software requirements is acceptable. These requirements are used to test run time performance of software with the context of an integrated system.

6. Design constraints

6.1 Software constraints :

Operating System : Windows2000 Server/ NT or any Mail server

Reports : General ReportsOther Applications : Tomcat WebServer or

BEA WebLogic Server

6.2 Hardware Constraints :

Pentium Processor : PentiumIII RAM : 128MBHard Disk : 20 GBFloppy Disk : 1.44 MBCD/ROM Drive : 52 BitVDU : VGAKey Board : 101 Standard

7. Acceptance Criteria

Before accepting the system, the developer must demonstrate that the system works on the details of the user email-ids entered in the corresponding files. The developer will have to show through test cases that all conditions are satisfied.

17

Page 17: JCHAT_jchatbox

JChat Box

SERVLETS

Introduction to web applications:HTTP is used by the browsers to communicate with the web servers. In place of browser we can develop our own programs using Socket API to communicate with a web server.

According to HTTP the user agent/http client/browser sends a request for a resource and gets back response. According to the protocol the web server/http server sends the response with a status code. Most of the web servers are configured not to list the contents of a directory. Almost every web server provides an option of defining a list of files as welcome files.

TOMCAT:Tomcat_home is a directory in which TOMCAT is installed. Ex:C:\Tomcat\Tomcat5.0 (most it look like C:\ jakarta-tomcat-5.0.19/jakartatomcat-5.0.19 when you extracted zip file to C drive)

Starting and Stopping Tomcat :To start Tomcat run Tomcat_Home\bin\startup.batTo stop Tomcat run Tomcat_Home\bin\shutdown.batTomcat requires the location in which java is installed for this we need to add set JAVA_HOME=“path where jdk is installed” and add set CATALINA_HOME=.. in both startup.bat and shutdown.bat. If you are not installed the tomcat, for accessing Admin and Manager we need to add<role rolename="manager"/><role rolename="admin"/><user username=“uname" password=“pwd“roles="admin,manager,tomcat"/>to Tomcat_Home\conf\tomcat-users.xml

Tomcat is configured to listen at port no 8080. We can change the port no using configuration files.(Tomcat_Home\conf\server.xml file change <Connector port="8080“ … >).

18

Page 18: JCHAT_jchatbox

JChat BoxRequest and Response formats:Request format:Initial request lineheader1header2header3...Body (optional)Most of the browsers either implements http 1.0 or 1.1 protocol. According to http, initial request line contains• Request method• Requested resource• Protocol versionHeader is split into (1) Header name (2) Header valueEx: User-Agent : MSIEResponse Format:Initial response lineheader1header2header3..BodyIn the response the server sets several heads like• Server ----- Name of the server• Content length ----- Length of the content

MIME is standard format in which different types of contents can be placed standard format used by e-mail clientsStatus Codes:1xx Informational message only2xx Success of some find3xx Redirects the client to another URL4xx Error on clients part5xx Error on servers partStandard Request Methods:• GET Used to request a resource• HEAD Used to request only header part• POST Used to send the data from client to server ex: when we will fill the form the browser may send the data• OPTIONS Used to identify the options supported by the browser• PUT Used by the clients to ask the server to store the content on it• DELETE Used to ask the server to delete a file

Diff Btw Get and Post :In our programs most of the time we will use GET or POST methods. In HTML forms we can specify the method as POST or GET When we use GET method the browser appends the form data to the URL but when we use POST method the data will not appended to the URL. Data will be placed as part of request body. In order to upload files from browser to web server we can use <INPUT Type= “file”> for these types of forms we need to use POST instead of GET.

19

Page 19: JCHAT_jchatbox

JChat Box

Web-Containers:Java soft has released Servlet and JSP specifications publicly. There are so many vendors who has provided the implementation of these specifications. All these products are known as web containers.

A web application developer develops a web application using different resources like html pages, image files, servlets, jsp pages, ……………..

Configuring web applications:Java soft has defined a standard approach for configuring web applications. Once the web application is configured we can deploy it on any of the available web containers.Steps:• Create WEB_APP_ROOT directory• Under WEB_APP_ROOT create WEB_INF• Create classes and lib directories under WEB_INF ( place java classes in classes directory and .jar files in lib directory) • Create web.xml and place it under WEB_INF • Create a WAR (Web Application Archive) file using java tool for this move to WEB_APP_ROOT dir and use jar cvf webapp.war . Above command places all files in webapp.war We use content paths to identify the web applications. Ex: http://localhost:8080/myweebapp1/index.html By default index.html is consider as a welcomefile. According to our application we can configure a different set of welcome files. Ex:<welcome-file-list><welcome-file>index.jsp</welcome-file><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file></welcome-file-list>The web containers will not be sending the information about WEB_INF directory to the user agent. Even though we can place all the files under the root it is not recommended. It is not recommended to use the absolute paths of the resource in a web application. We have to use relative paths. Managing web applications in web containers:Most of the vendors provide the tools to manage the web applications. We can use these tools to upload our war files to the server and deploy them. Ex: In Tomcat• Use the URL http://localhost:8080• Choose Tomcat Manager (by using uname and pwd given in config file)• Choose the war file to be uploaded choose install In Web Logic • Login to web logic server using admin uname and pwd• Choose deployments web applications node• Choose configure a new application.• Choose upload the war files• Select the war file place it on server , configure and deploy it Today most of the websites generates the content dynamically (when a request is send the web server, the content is generated)

First generation web servers are designed to serve the static content. Later on the web servers provided an option of extending its capability using CGI A CGI program or script is the one that runs external to a web server. Earlier most of the programmers have used CGI programs to generate content dynamically.The main problems with this approach are

20

Page 20: JCHAT_jchatbox

JChat Box• Server has to spend some time in starting a new process• As web server gets too many requests the server has to create more no of processes and this reduces the performance.As scripting languages are easier than programming languages most of the web developers has started writing web applications using scripting languages. To run the perl scripts we require a program called perl interpreter. Even it is easy to develop perl scripts we need an interpreter to run them. Later on most of the web server vendors started supporting different scripting languages directly.

Java soft designed an alternative for CGI programs as well as script getting executed in a web server called as a Servlet. In servlets the request send by the browser and the response send by the server will be represented as objects. While compiling the java servlets we need to set the classpath point to a jar file that contains javax.servlet and javax.servlet.http packages (in most cases the jar file will be servlet.jar or servlet-api.jar or ….).

Every container vendor supplies the jar files that contain javax.servlet and javax.servlet.http packages.Deploying servlets:

After developing the servlet classes to deploy the servlets,• Copy the servlet classes under WEB_APP_ROOT/WEB-INF/classes• Modify web.xml by adding the information about the servlet element as<servlet><servlet-name>servlet1</servlet-name><servlet-class>class of servlet</servlet-class></servlet><!-- mapping our servlet --><servlet-mapping><servlet-name>servlet1</servlet-name><url-pattern>/serv1</url-pattern></servlet-mapping>We can use any url pattern like * or *.do or *.xyz etc… ex:<url-pattern>/*</url-pattern>To get the name of the user agent we can use stringbuffer = request.getHeader(“USER_AGENT”);We can get the list of all headers using Java.util.Enumuration list = request.getHeaderNamesTo invoke a servlet from our applications ( standalone java apps/applets/ servlet/ejb …)• Establish a socket connection with web server• Send http request to the server• Read the responseServlets are initially designed to extend any type of server (web server/ ftp server / smtp …) but almost all the companies has implemented this technology to extend http servers.In object oriented projects to eliminate redundancy we will be using class hierarchy as,

21

Page 21: JCHAT_jchatbox

JChat Box

In above ex, code specific to web server in http server class, code specific to ftp server in ftp server class … and code that is common to all the servers is implemented in server class. Servlet class hierarchy:

A servlet is an object that provides the implementation of javax.servlet.Servlet interface. Web container must provide one ServletConfig object to a servlet. ServletContext is also called as application object. javax.servlet.Servlet has the following methods• init – called by the web container after our servlet object is created.• service – called when the client sends the request.• destroy – called before our servlet object is removed.A servlet life cycle has 3 stages, (a) servlet is created (b) servlet will provide the service (c) servlet will be destroyed.

22

Page 22: JCHAT_jchatbox

JChat BoxgetServletInfo() must return a string describing the purpose of our servlet. getServletConfig() method must return the servlet config associated with the servlet. It is the responsibility of servlet containers to create the servlet objects and destroy.<load-on-startup>10</load-on-startup> where 10 is the priority.If we use it, the web container will be created our servlet object when our application is deployed.A servlet object is created• At the startup if we use load-on-startup• When the initial request is send and the servlet is not yet available or• Whenever it is required.

Servlet object will be destroyed• When the web application is undeployed• Whenever the server wants to remove.The GenericServlet implemented as part of javax.servlet package provides the implementation of init method and getServletConfig method that fits almost all the servlets. javax.servlet.http.HttpServlet provides the implementation of service method. We can implement a servlet as a sub class of GenericServlet. service method of GenericServlet takes ServletRequest and ServletResponce as parameters.

HttpServletRequest and HttpServletResponce contains methods specific to http and same as with ftp. If we create a servlet as subclass of GenericServlet we may need to write common code like converting the reference of type ServletRequest, ServletResponce to HttpServletRequest and HttpServletResponce.

This can be eliminated by creating our servlet as a subclass of javax.servlet.http.HttpServlet. Inside the servlet containers our servlets are pointing by using reference of type javax.servlet.Servlet.

Whenever a method is called on an object the JVM will start searching for the method from the class based on which the object is created. If it is not available then the method will be searched in the super class. The containers always calls the methods exposed by Servlet interface.

init(ServletConfig) {init() }service(ServletRequest, ServletResponce) {service(HttpServletRequest,HttpServletResponce) }service(HttpServletRequest,HttpServletResponce) {doXXX() }

The implementation of doXXX methods of HttpServlet sends an error to the user agent. To report an error from our servlets we can useresponse.SendError(“status code”)

23

Page 23: JCHAT_jchatbox

JChat Box

Before we start development of any solution we need to understand the business requirements and functional specifications. We can use request.getParameter to get values sumbitted using a form. Instead of using System.out for debugging its better to use log method. The data will be stored in a destination like in a log file or as database. To know the location of log file we need to read the documentation of the container.Typical sequence of steps we carry out in a servlet to process the form• Read the input parameters• Validate the input• Process the input• Generate the view.Instead of hard coding we can place the information as servlet initialization parameters or context parameters.driverManager.registerDriver(driver);con=DriverManager.getConnection(url,dbuser,dbpass);In above ex, instead of hard code we have used variables. Values of these variables can be picked up from web.xml file. ServletConfig provides the methods getInitparameter() and getInitParameterNames(). As this is implementation of GenericServlet we can call these methods in our servlet.String driver = getInitParameter("driver");String url = getInitParameter("dburl");Above code read the initialization parameters. In web.xml we can add the names of initialization parameters,<init-param><param-name>driver</param-name><param-value>oracle.jdbc.driver.OracleDriver</param-value></init-param><init-param><param-name>dburl</param-name><param-value>jdbc:oracle:thin:@localhost:1521:orcl</param-value></init-param>If multiple servlets uses the same set of parameters instead of placing them as servlet initialization parameters we can use context parameters. <context-param><param-name>name1</param-name><param-value>value1</param-value></context-param>getInitparameter() available in ServletContext will be getting the initialization parameters configured as context parameters. ServletContext scon = getServletContext();url = scon.getInitParameter(“dburl”)1st line gets the reference of servlet context2nd line gets context parameter.We can add any no of context parameters in web.xml file. The web container is responsible for reading context parameters from web.xml and places them in ServletContext. For every servlet the container is responsible for creating ServletConfig and stores the init parameters in this object.

public class init extends HttpServlet {public void doGet(…) {HttpServletRequest req;HttpServletResponce res;

24

Page 24: JCHAT_jchatbox

JChat Boxout.getInitParameters(“name”);}

public void init(ServletConfig config) throws ServletException{System.out.println(ServletConfig.getInitParameter(“name”);}Above code in doGet() will be failing to get the initial parameters. To avoid this failure we need to add super.init(config) if init method is overridden. Methods like getInitParameter, getServletConfig, getServletContext, log available in GenericServlet will fail if we write code with calling super.init(). Instead of overriding init(ServletConfig) we can override init() We can store the strings as resource bundles instead of hard coding the strings in source code. It’s very common to submit the information using multiple forms ex: user registration form can be split-up into multiple forms.

In above ex information is gathered from the user using 3 different forms. Once the user fills the 1st page he gets the 2nd page after it is filled he gets 3rd page. Once the 3rd page filled, information will be saved in database. If the protocol is designed to remember what is done earlier by the client then it is called as stateful protocol otherwise it is called as stateless protocol.** Http 1.0 as well as Http 1.1 is stateless protocols.

If we have application with multiple forms the web server will be able to give the information submitted in the current form, it will not be able to give us the info submitted earlier.A web application can use following techniques to remember the state of the client.• Hidden Fields• Cookies• Sessions using cookies• Sessions using URL rewriting.We can use <input type= hidden name=“n1” value=“v1”> as part of our html forms. Browser will not be developing the info about the hidden fields. If there are too many no of forms more amount of N/W traffic will be generated if we use hidden fields. Cookie is a piece of info set by the server on the client using http. We can use response.setCookie() to set a cookie on a browser, to get the cookies we can use request.getCookie() Steps to set cookie:• Create a cookie object cookie c1 = new cookie(name, value)• Add the cookie response.addCookie(name)Cookies are mainly used to serve personalized content according to user requirement.Problems:• If used heavily this generate more N/W traffic• There are some limitations in some browsers in maximum no of cookies per domain.

25

Page 25: JCHAT_jchatbox

JChat BoxIt is not advisable to store sensitive info using cookie. When we execute response.addCookie(), it adds set-cookie header to the response. Browser sends back the cookie as part of request header as, cookiesname1=value1&name2=value2Most of the browsers provide an option of allowing or denying the cookies. Most of web application developers display a message saying that their web application works properly if the cookies are allowed. The cookie class provides the methods setMaxAge, setDomain, setPath … In most of he cases we may not use these methods. We can store any java object using session.setAttribute(key, java object) , request.setAttribute, ServletContext.setAttribute( key, jo)…We can retrieve the objects by using session.getAttribute(key)request.getAttribute(key) ServletContext.getAttribute(key)To remove the java object we can use xxx.removeAttribute(key)The web containers can create the session objects on behalf of a client. For accessing the session object we use, request.getSession(true/false). For every session object that is created a session id will be generated. request.getSession(true) creates a session object if it is not already exists. We can remove the session objects by using session.invalidate(). As the server can’t detect the closure of browser, the server deletes the session object after inactivatetimeout which can be configured in web.xml or we can usesession.setMaxInactiveInterval(int)session.setAttribute(“key1”,”value1”);session.setAttribute(“key1”,”value2”); session.getAttribute(“key1”);session.getAttribute(“key2”);When 1st stmt executed value1 will be stored using key1 and when 2nd stmt executed value1 is removed and value2 is stored in key1. 3rd stmt gets value2 and 4th line gets null. A web application based on session using cookie to carry session id may failed (if user doesn’t accept cookies). To overcome this we can use sessions maintain using URL rewriting technique.

To use URL rewriting in our servlets, we need to use response.encodeURL(string) instead of directly writing the URL. When we use response.encodeURL, the URL will rewritten as, /xyz/abc +session id This technique places a bit of burden on server (server has to spend some time in writing URLs with session id).

To upload the files we have to use post method. In the form we can use any no of inputs. For files the input type must be specified as file. There are so many file uploading components available in the market one such component is javazoom file upload component. You can see details athttp://www.javazoom.net/jzservlets/uploadbean/uploadbean.htmlTo deals with upload files• Create a newreq object using the class javazoom• To get the list of the files we can use getFiles() – uses a list of files in a hash table.To store the files:• Create uploadBean• Set the folder• Set override policy• Execute store method with newreq as parameter.To read the parameter submitted as part of the form we can use newreq.getParameter() .Ex: book store provided by java soft We can consider deploying a web application, un-deploying a web application, creating a session, adding an attribute, removing an attribute from ServletContext, HttpSession as

26

Page 26: JCHAT_jchatbox

JChat Boxevents. We can write the code by implementing the listeners interface provided as part of javax.servlet.http package.Names of the listener interface, ServletContextListener, HttpSessionListener, ServletContextAttributeListener and HttpSessionAttributeListener ContextInitialized is called when the application is deployed.ContextDestroyed is called when the application is undeployed.We can implement the above listeners and configure them as listeners in web.xml file as,<listener><listener-class> Class Name</listener-class> </listener>SessionListener interface has (a) sessionCreated – called when the session iscreated (b) sessionDestroyed – called when session is destroyed.Whenever we need to add an object as soon as the session object is created.We can write the code in sessionCreated of HttpSessionListener.Along with the cookie we can pass a comment indicating the purpose of thecookei using cookie.setComment() Netscape 4.75 (old versions) stores the cookies in cookies.txt file and IE uses multiple files. When we specify the age of the cookie the browser stores the info about the cookie in a file,1) Name of the cookie2) Value of the cookie3) Path of cookie4) Domain of the cookie and5) Expire time of the cookie.In most of the applications the parameters will not setting the path explicitly using setPath() In such case path of the cookie will be set to the path of resource. It is very rare to use setDomain() on a cookie. By default domain value will be set to the domain name where the cookie is set ex: http://localhost or www.yahoo.com A servlet running at www.domain1.com can’t set a cookie specifying the domain name of the cookie as www.domain2.com. If the cookies are set by hotmail.com the browser will send back to hotmail.com only. This is why the browser stores the domain of a cookie. While sending back the cookies, browser will check whether the path of requested resource is matching with the path of the cookie or not. If we are running 2 web applications in same server one servlet in application1 can set a cookie that can be reuse by servlet in application2. We can remove the cookie that is set earlier by setting its MaxAge to 0; if we have not used setMaxAge -1 will be used as default. If MaxAge is -1 the browser will not storing the cookie in file, cookie will held in memory and its get deleted when the browser is closed. We need to pass the no of seconds the cookie has to live. Ex: setMaxAge(600) – cookie will live 10 min. We can assign multiple names like a.com, b.com, www.a.com … to the same machine. On the global internet the N/W administrators will be configuring the DNS servers with this mapping. We can place the mapping between the name and IP address in C:/winnt/system32/drivers/etc (in 2000/NT)C:/windows/system32/drivers/etc (in win Xp).Ex: 102.54.94.97 xyz.comabc.comHttp 1.1 supports virtual hosting – hosting the web site with different domain names on a single sever. This is supported by using the Host header. According to Http 1.1 Host header is mandatory. Using this header the web server will be able to identify the resource that has to be served. It is very common to refer images, applets, activex controls in a webpage. In older Http protocol the browsers used to establish a connection, sends the request, get the response, and disconnect the connection. If we have a html file with 10 images embedded inside it. The browser has to repeat the same steps for 11 times. This may reduce the performance of browser as establishing a connection is time consuming process. Browsers can send connection

27

Page 27: JCHAT_jchatbox

JChat Boxkeep alive header asking the web browser to keep the connection alive. The server may or may not keep the connection alive.Most of the web administrators either disable keep alive request or disable persistent connection or set the connection timeout to a small value. If we expect too many concurrent users then to improve the performance of web server. We use small value for no of connections that are kept alive or we can total disable persistent connection.**Irrespective of the type of connection http is stateless.

The above web application uses Front Controller design pattern In this design pattern we use one servlet to act as a controller sitting in front of other resources. In this design pattern all the requests will be first handled by FC then it dispatches the request to the appropriate resource. The servlet engine internally uses RequestDispatcher to dispatch the request to the appropriate servlet or jsp. We can use ServletContext.getRequestDispatcher() to get the request dispatcher.There are two methods (a) forward (b) include It’s very common to develop a web application with more Servlets processing the same request. ** We can use both include and forward to dispatch the request to other servlets. When we use include the outputs generated by both the servlets will be sent to the client when forward is used the output generated by 1st servlet will be discarded and only 2nd servlet output will be send to the client.

Difference between Request Forward and Redirect :When we forward method only one request will be send by the browser and it is processed by two servlets/jsps. But when we SendRedirect method two requests will be send by the browser.

28

Page 28: JCHAT_jchatbox

JChat Box

JSP

Most of the web developers deploying web applications using servlets mixes the presentation logic and business logic. Separation of business logic from presentation logic helps us in simplifying the development of application( web authors can concentrates on developing the presentation logic and other developers in the team who has good knowledge of java can concentrate on business logic in (1)Java Beans (2)EJB and (3)Tag Handlers)

Java Server Page is designed to simplify the process of developing a web application on the top of servlet technology. Writing and configuring the application using JSP is easy Javax.servlet.jsp and javax.servlet.jsp.tagext contains the interfaces to support JSP technology and Tag libraries. When we send a request to JSP file if there is no servlet representing the JSP file the web container runs JSP compiler that generates the servlet code. Whenever we modify the JSP file the servlet will be regenerated. Some of the web containers provide an option of pre-compiling of JSP. We can place our JSP files directly under WEB_APP_ROOT or any other sub directory except WEB-INF.We need not add an entry in web.xml file for most of JSPs. When we need to pass initialization parameters to JSPs then we have to make an entry in web.xml as,<servlet><servlet-name>servlet1</servlet-name><jsp-file>one.jsp</jsp-file></servlet><!-- mapping our servlet --><servlet-mapping><servlet-name>servlet1</servlet-name><url-pattern>/jsp1</url-pattern></servlet-mapping>If there are any errors in JSP file the jsp compiler fails to compile the java source code. We can check the log files for more information on session for failure.ASP allows us to mix html with a scripting language like jscript, vb script… JSP also allows us to mix html with java language (scriptlet) or scripting languages. Most of the web containers support only java language code be mixed with html. Resin supports jscript as part of JSP. In JSP files we can use Page directives like Language, Import,

29

Page 29: JCHAT_jchatbox

JChat BoxInclude …These directives very much similar to preprocessor directives we use in C programs.

It is very common to have the same header and footer for multiple web pages, to simplify the development of such applications we develop header.jsp – responsible for generating only the header portion and footer.jsp to generate the footer. In all other JSP pages we write the code as, Page1.jsp : Page2.jsp:Include header.jsp Include header.jspContent1 Content1Include footer.jsp Include footer.jspEx: www.oracle.com (same header and footer for all pages)When we send the request for page1.jsp the JSP compiler internally generates Page1.jsp by merging header.jsp, footer.jsp with Page1 and this JSP page will be converted as a servlet. According to JSP specification the container need not regenerates the servlet whenever there is a change in the files that are included using include directive. Tomcat regenerates the servlet even if there is a change in the included file. When we used Info directive JSP compiler generates getServletInfo method. Language directive can be used to specify the language that is used as part of our JSP. Ex:Page Directive:<%@ page[ language="java" ][ extends="package.class" ][ import= "{ package.class | package.* }, ..." ][ session="true|false" ][ buffer="none|8kb|sizekb" ][ autoFlush="true|false" ][ isThreadSafe="true|false" ][ info="text" ][ errorPage="relativeURL" ][ contentType="mimeType [;charset=characterSet ]" |"text/html ; charset=ISO-8859-1" ][ isErrorPage="true|false" ]%>For more information on JSP page directives see the URLhttp://www.developer.com/java/other/article.php/626391Whenever we use an object in System.out.println internally toString() will be executed. Ex: Date d = new Date();System.out.println(d);System.out.println(d.toString());If we need to use a class in a package other than the default package we can use import package or fully qualified name of the class in our code In our JSP pages to import the classes we can use • <%@ page import = “java.util.Date” %> <%@ page import = “java.io.* %> (or)• <%@ page import = “java.util.Date, java.io.*” %>We can include the java code directly as part of JSP files ,<% Java Code %> called as scriptlet. When the JSP compiler compiles the JSP file it copies the scriptlet as it is in jspService method. Html content<%= new java.util.Date() %><% int i=10; out.println(“i=“,+i); %>

30

Page 30: JCHAT_jchatbox

JChat BoxIn above code we have declared a variable ‘i’ and used in print stmt but we are using a variable ‘out’ without declaring it but it is perfectly valid in JSP scriptlets.Implicit Variables:JSP compiler generates JSP code with a set of variable like (i) out ii) request iii) response iv) pageContext v) session vi) application vii) config and viii) page. All the variables can be used in the scriptlets without declaring them. These variables are called as well known variable or implicit variables. For more info on implicit variable see the following linkhttp://javaboutique.internet.com/tutorials/JSP/part11/page07.htmlpage refers to this – current object and pageContext is an object (javax.servlet.jsp.pageContext) that is created for every JSP page and it provides access to the other objects like out, session …. We have methods like forward and include performing operations like RequestDispatcher.forward and RequestDispatcher.include In JSP pages we can use declarative statements to define the variables or implement the methods as,<%! int i; %>We can write our own methods, static variables and instance variables in declarative statement as,<%! Static int x =10;int add (int a, int b) { return a+b; }%>It is highly recommend to use tag libraries instead of using scriptlets and declarative statement.In java we use try catch blocks to separate out the actual code that performs the action and code the code that deals with error. In JSP we can provide the implementation of code that handles the error in a separate page. This JSP page is known as error page. For supporting the above concept JSP provides isErrorPage and errorPage directives.

When an exception is thrown while executing one.jsp file the container will start executing errpage.jsp. We can access the exception variable without declaring it in error pages. Instead of sending the data byte by byte to the browser the web container collects the data in a buffer. If the size of the buffer is enough to accommodate the whole o/p of JSP page the o/p is collected and send at once to the browser. This reduces the amount of Network traffic. If the jsp generates more amount of data than the size of the buffer the container frees the buffer once it is filled (this is done if autoFlush is set to true)<%@ page buffer="1kb"%><%@ page autoFlush="false"%> ( default is true)When we encounter JSP buffer overflow exception we can solve it either by increasing the size of the buffer or by setting the value of autoFlush to true. In JSP pages we can use action tags like include, forward, useBean, setProperty, getProperty, param… these tags are supported by all the web containers. See url http://javaboutique.internet.com/tutorials/JSP/part11/page08.html<jsp:include page=“page2.html" flush="true" /> It includes the content of page2 (it may be of type jsp/html/img ….) in the o/p sent to the client (internally it uses requestDispatcher.include) similarly we can use jsp:forward tag to forward the request from one page to other page. This is equivalent to

31

Page 31: JCHAT_jchatbox

JChat BoxrequestDispatcher.forward. If the data is already committed before the execution of jsp:forward then forward will be failed. We can solve the problem by increasing the buffer. There will be no difference in the o/p produced by using jsp:include and include directive. When we use include directive the contents will merge together by jsp compiler and generates a single servlet but when we use action tag include two servlets will be generated and in first servlet code similar to requestDispatcher.include will be added.

There may be slight benefit in terms of performance using include directive. When we use jsp:include a change in main file and change in sub file causes regeneration of the servlets. According to jsp specification the container need not regenerates the servlet if there is a change in included file when we use include directive We can write the functions as part of declarations and in these function we can’t access implicit variables. Implicit variables are local to jspService and can be accessed from the scriptlets. We can provide the implementation of jspInit and jspDestory which are equivalent to init() and destroy() methods in the servlets. As part of JSP files we can use jsp expression as,<%= Java Expression %>ex: Current time: <%= new java.util.Date() %> In jsp 2.0 we have support for EL – Expression LanguageTomcat as well as other web containers internally creates the threads and access the service method from the threads. A servlet container creates multiple threads and accesses the service method from these threads concurrently as shown below same point of time it sends the response.

Since the servlets are accessing from multiple threads the code in Servlets must be ThreadSafe. Code will be thread safe if it can be executed concurrently from multiple threads. All the objects we will use from our servlets using instance variables must be thread safe. Not every java class is thread safe ex: AWT, JFC classes If our servlet uses only locals variables we can claim that our servlet is thread safe. We can develop a servlet by implementing single thread model. This is a marker interface or tagged interface. From servlets 2.4 this interface is deprecated and it is not recommended. By implementing this interface we are telling the web container that my service method can’t executed concurrently from multiple threads. Most of the web container vendors creates multiple servlet objects based on same class if the servlet implements single thread model. In this case more amount of memory space is required.

Java Beans:

32

Page 32: JCHAT_jchatbox

JChat BoxWe can assemble a computer or fan very easily by choosing different components manufactured by different vendors. We can take a screw from company one and use it to fit the Mother board to cabinet as they are manufactured according to a standard. Observing to this point to simplify the process of developing software, different software companies has proposed different component technologies. Ex: java soft java bean component tech, EJB component tech, Microsoft COM, BONOBO component model. Java Bean and EJB are two different specifications from java soft. EJB can be used to implement business logic on the server side. Most of the developers uses to assume Java Bean components are for developing GUI components and they can be used only on the client side but we can develop any kind of software using Java Bean standard (GUI/ non GUI). Java Bean can be used either on the client side or on the server side. AWT, JFC components are implemented according to Java Bean standard. According to Java Bean standard a Bean component can support a set of properties, set of events, any number of additional methods. A property can be read-write or it can be just read only property. For read write property we need to provide setXXX and getXXX methods (isXXX if the property is Boolean )To support the following properties (i) uname (ii) email (iii) age according to Java bean standard we need to write the code as, public class UserBean {String uname; String email;int age;public void setUsername( String value ) {uname = value; }public void setEmail( String value ) { email = value; }public void setAge( int value ) { age = value; }public String getUsername() { return uname; }public String getEmail() { return email; }public int getAge() { return age; }}Java Beans like JButton supports the events by providing the methods withnaming patterns (i) addXXXListener (ii) removeXXXListenerApart from developing Java bean class we can also provide BeanInfo class.In this class we can provide (i) Information about properties (ii) Informationabout the events and (iii) Information about the icon that represents ourbean.According to JSP model1 we can develop the application as,

According to above model the presentation logic has to be implemented in JSP page and the business logic has to be implemented as part of Java bean This model help us in separating the presentation and business logic. For a large scale projects instead of using model1 it is better to use model2 (MVC). Stuts frame work is based on model 2.

33

Page 33: JCHAT_jchatbox

JChat Box

34

Page 34: JCHAT_jchatbox

JChat Box

DESIGN PRINCIPLES & METHODOLOGY

To produce the design for large module can be extremely complex task. The design principles are used to provide effective handling the complexity of the design process, it will not reduce to the effort needed for design but can also reduce the scope of introducing errors during design.

35

Page 35: JCHAT_jchatbox

JChat BoxFor solving the large problems, the problem is divided into smaller

pieces, using the time-tested principle of “divide and conquer”. This system problem divides into smaller pieces, so that each piece can be conquered separately. For software design, the problem is to divide into manageable small pieces that can be solved separately. This divide principle is used to reduce the cost of the entire problem that means the cost of solving the entire problem is more than the sum of the cost of solving all the pieces.

When partitioning is high, then also arises a problem due to the cost of partitioning. In this situation to know the judgement about when to stop partitioning.

In design, the most important quality criteria are simplicity and understandability. In this each the part is easily related to the application and that each piece can be modified separately. Proper partitioning will make the system to maintain by making the designer to understand problem partitioning also aids design verification.

Abstraction is essential for problem partitioning and is used for existing components as well as components that are being designed, abstracting of existing component plays an important role in the maintenance phase. ding design process of the system.

In the functional abstraction, the main four modules to taking the details and computing for further actions. In data abstraction it provides some services.

The system is a collection of modules means components. The highest-

level component corresponds to the total system. For design this system, first

following the top-down approach to divide the problem in modules. In top-

down design methods often result in some form of stepwise refinement after

divide the main modules, the bottom-up approach is allowed to designing the

most basic or primitive components to higher-level components. The bottom-

up method operations starting from very bottom.

In this system, the system is main module, because it consists of discrete components such that each component supports a well-defined abstraction and if a change to the component has minimal impact on other components. The modules are highly coupled and coupling is reduced in the system. Because the relationships among elements in different modules is minimized.

36

Page 36: JCHAT_jchatbox

JChat Box

37

Page 37: JCHAT_jchatbox

JChat Box

System design is the process of applying various techniques and principles for the purpose of definition a system in sufficient detail to permit its physical realization.

Software design is the kernel of the software engineering process. Once the software requirements have been analyzed and specified, the design is the first activity. The flow of information during this process is as follows.

Information domain details

38

Design

Code

Test

Page 38: JCHAT_jchatbox

JChat BoxFunction specification

Behavioral specification

Other requirement modules Program

Procedural design

Software design is the process through which requirements are translated into a representation of software.

Primary design is concerned with the transformation of requirements into data and software architecture.

Detailed design focuses on refinements to the architectural representations that lead to detailed data structure and algorithmic

representation for software. In the present project report only preliminary design is given more emphasis.

System design is the bridge between system & requirements analysis and system implementation. Some of the essential fundamental concepts involved in the design of as applications are

Abstraction Modularity Verification

Abstraction is used to construct solutions to problems without having to take account of the intricate details of the various component sub-programs. Abstraction allows system designer to make step-wise refinements by which attach stage of the design unnecessary details annunciate with representation or implementation may be hidden from the surrounding environment.

Modularity is concerned with decomposing of main module into well-defined, manageable units with well-defined interfaces among the units. This enhances

39

Page 39: JCHAT_jchatbox

JChat Boxdesign clarity, which in turn eases implementation, debugging, testing, and documentation maintaining of the software product. Modularity viewed in this senses vital tool in the construction of large software projects.

Verification is fundamental concept in software design. A design is verification. It can be demonstrated that the design will result in an implementation, which satisfied the customer’s requirements.

Some of the important factors of quality that are to be considered in the design of application are:

The software should behave strictly according to the original specification of satisfying customer’s requirements and should function smoothly under normal and possible abnormal conditions. This product is highly reliable, can handle any number of mails to filter.

The design of the system must be such a way that any new additions to the information functional and behavioral domain may be done easily and should be adapted to new specifications. We provided this extensibility to this product. you can add any number of filters to your product in the future.

System design is the process of developing specification for the candidate system that meets the criteria established during the phase of system analysis. Major step in the design is the preparation of input forms and design of output reports in a form acceptable to the user. These steps in turn lead to a successful implementation of the system.

Architectural overview of the project:

you can create/manager/monitor chatrooms. You can add/update/remove moderators. You can also track user's sessions. Finally you can modify jChatBox system properties.

AUTHENTICATION

Administration GUI is login/password protected.When you access http://yourserver.com/admin/index.jsp you get the screen below.- Default SYSTEM login is : system and default password is : password.  You could change both in System properties.- Default MODERATOR login is : moderator and default password is : password.  You could change both in Moderators properties.  You could also add and remove moderators.

40

Page 40: JCHAT_jchatbox

JChat Box

MODERATORS

jChatBox provides moderation feature. You can add/remove/update moder-ators. A moderator is defined by an username (login), a password and an email. Email field is not mandatory. Links between moderators and chatrooms could be configured in chatroom forms. In addition to chatroom's moderation(kick off, ban,transcript,...), a moderator can open many new chat rooms. However moderators cannot backup chatrooms, modify jChatBox System properties, and add/remove/update others moderators.

Note:Moderators information are persisted in jchatboxusers.xml file. All pass words are encrypted, they can't be reversed.

41

Page 41: JCHAT_jchatbox

JChat Box

CHATROOMS

jChatBox supports multiple chatrooms. You can open new chatroom by following "open a chatroom" link. You can manage a chatroom by selecting the chatroom in the list box named "Manage chatroom". You can backup all chatrooms by following "Backup chatrooms" link. See the screen below to locate these features. Note that you can logout the administration through the "Logout" link. System properties page is available through "Manage jChatBox" link

42

Page 42: JCHAT_jchatbox

JChat Box

OPEN A CHATROOM

You need severals parameters (basics and advanced) to open a new chatroom :

Name : The name of the chatroom.Subject : The subject of the chatroom.Max. users. : Maximum users for the chatroom. No more users allowed to enter in the chatroom once this limit is reached.Display Mode : There are four ways to display chatroom's content (i.e. chatooms clients). It could be in an HTML/JavaScript page, an Applet, a Java application or in a Macromedia Flash5 client. So, for HTML/JavaScript clients, you have to choose between Framed (JSP) or Buffered-Framed (JSP) modes. Buffered-Framed one is optimized to lower flickering effect.Note that "Framed" means that HTML/JavaScript clients need frames.

History : It's the number of lines, from the chatroom's content, that will be displayed on clients. It's a "window" on the chatroom's content starting from the most recent message. The more history value is high, the more you need bandwith. One page is around 5 KB with history=40.Refresh model : jChatBox uses a PULL system to keep all clients synchonized. It means that each client asks for the chatroom's content periodically. jChatBox provide three model of "time-period" to refresh clients :+ Time-Constant => Period is constant (in seconds).

43

Page 43: JCHAT_jchatbox

JChat Box+ RoomLoad => The more chatroom is loaded, the more its clients are "refreshed".+ Action-Tracker => The more an user chats, the more it is "refreshed".Refresh limit : This parameter is linked to refresh model above. Refresh period can't be longer than this value. The more this value is low the more refresh period is fast.Private message : This parameter allows system user to enable/disable private message feature for the chatroom.Language : This parameter allows system user to select a language for the chatroom. It will work only if the skin support multilanguage feature. If you want to add more languages then see API & Extension section.Filters : This parameter applies filters to the chatroom's content.+ HTML filter escapes "<" and ">" characters to prevent from HTML tags send by users. These tags could mess up the chatroom (i.e. : javascript tag, images ...).+ URL Converter filter transforms - on the fly - user's messages including http://..., ftp://..., mailto:..., news://.. into hyperlinks. It could be useful for users. Note that links are always opened in a new browser's window.Much more filters to come ...

Finally, you can select moderators for the chatroom to open. Multiple moderators are allowed. A moderator can list/kickoff/ban chatroom's users. He can also generate transcripts and update chatroom's parameters.

44

Page 44: JCHAT_jchatbox

JChat Box

MANAGE A CHATROOM

Once the chatroom is opened you can update some parameters : Subject, History, Refresh Model, Refresh Limit, Private Messages, Language, Filters and Moderators. The update occurs in real time, as soon as you click on "Update" button.

You can generate a transcript (text file dump) of the chatroom through the Transcript form. Fill in a transcript filename and click on "Generate". The text file will be stored in logs folder.

You can clear the chatroom content through "Clear" link.

You can close the chatroom through "Close" link. The whole chatroom will be lost.

You can join the chatroom by following "Join" link. You will be logged as SYSTEM or MODERATOR user so filters don't applies. That's the only way for moderators and system user to join a chatroom.

45

Page 45: JCHAT_jchatbox

JChat Box USERS

You can list users through "Users" link. You will learn about Name, IP Address, User Agent (Netscape, Internet Explorer,...) and last accessed time (in seconds) of any logged user.You can also kickoff or ban any user. "kickoff" means that the user will be kicked off the chatroom for a few seconds only. He could join the chatroom again. "ban" means that user's IP Address will be banned. He couldn't join the chatroom with the same IP.All banned users (IP) move to Blacklist. You can clear the whole blacklist or only some IP address. You can also manually add an IP address to the blacklist. Note that only SYSTEM and MODERATOR users knows about users' IP.

jChatBox identifies guest users (nickname). Moreover It does provide authentication (login/password) through Add-Ons tools.

SYSTEM PROPERTIES

You can modify jChatBox system properties (jchatbox.xml) through the administration GUI below. Once saved, modifications will be taken into account on the next login.

Backup file : Backup filename of jChatBox. Chatrooms' dump will be stored there.Log folder : Log folder of jChatBox. Log files will be stored there. System login : SYSTEM login. Default is system. You should modify it. System email : SYSTEM email.TimeOut : User's session timeout in seconds. (e.g. if an user closes its browser then he will leave the chatroom automatically after the TimeOut period).USERSESSIONID : Name of an internal variable for session management. Do not modify it except if you have a conflict with others WebApp in your servlet engine.Default Language : Default language for chatrooms. License file : License filename. You have to modify it if you purchase a license to use.Update password : You should modify SYSTEM password. Default is password. You have to select the checkbox and fill in password forms twice before submiting. Note this password is stored as its MD5 value (i.e. encrypted).

46

Page 46: JCHAT_jchatbox

JChat Box

Input design is the process of converting user-originated information to computer-based format. The goal of designing input data is to make data entry as easier and error free as possible. An input format should be easy to understand.

In this product inputs are nothing but forms fed with data. Using the JSP pages provides high-level graphical user interface.

Output reflects image of the organization. The output design involves designing forms layout, making lists, making well designed reports etc., and reports are main outputs of the proposed system. We can also consider the response for our inputs is nothing but outputs. Here if we set some properties the affect of that setting can be immediately seen are nothing but outputs for

47

Page 47: JCHAT_jchatbox

JChat Boxour system. How the system is working according to our setting or properties set by us is the main issue we have to monitor. Those are our system results. Suppose a user create a new chat room. Then creating a new chat room is our required output.

Databases and database management systems and explores how to use relationships in a pool of data when developing methods for data storage and retrieval. Databases allow data to be shared among different applications.

But here in our application we haven’t use any database to maintain user data.

48

Page 48: JCHAT_jchatbox

JChat Box

USE-CASE DIAGRAMS

49

Page 49: JCHAT_jchatbox

JChat Box

50

Moderator1

Moderator2

Administrator

JCHAT BOX

Page 50: JCHAT_jchatbox

JChat Box

51

Page 51: JCHAT_jchatbox

JChat Box

52

Page 52: JCHAT_jchatbox

JChat Box

53

Page 53: JCHAT_jchatbox

JChat Box

54

Page 54: JCHAT_jchatbox

JChat Box

55

Page 55: JCHAT_jchatbox

JChat Box

56

Page 56: JCHAT_jchatbox

JChat Box

57

Page 57: JCHAT_jchatbox

JChat Box

58

Page 58: JCHAT_jchatbox

JChat Box

59

Page 59: JCHAT_jchatbox

JChat Box

60

Page 60: JCHAT_jchatbox

JChat Box

61

Page 61: JCHAT_jchatbox

JChat Box

62

Page 62: JCHAT_jchatbox

JChat Box

63

Page 63: JCHAT_jchatbox

JChat Box

64

Page 64: JCHAT_jchatbox

JChat Box

65

Page 65: JCHAT_jchatbox

JChat Box

66

Page 66: JCHAT_jchatbox

JChat Box

67

Page 67: JCHAT_jchatbox

JChat BoxTesting is one of the most important phases in the software development activity. In software development life cycle (SDLC), the main aim of testing process is the quality; the developed software is tested against attaining the required functionality and performance.

During the testing process the software is worked with some particular test cases and the output of the test cases are analyzed whether the software is working according to the expectations or not.

The success of the testing process in determining the errors is mostly depends upon the test case criteria, for testing any software we need to have a description of the expected behaviour of the system and method of determining whether the observed behaviour confirmed to the expected behaviour.

Since the errors in the software can be injured at any stage. So, we have to carry out the testing process at different levels during the development. The basic levels of testing are Unit, Integration, System and Acceptance Testing.

The Unit Testing is carried out on coding. Here different modules are tested against the specifications produced during design for the modules. In case of integration testing different tested modules are combined into sub systems and tested in case of the system testing the full software is tested and in the next level of testing the system is tested with user requirement document prepared during SRS.

There are two basic approaches for testing. They are

In Functional Testing test cases are decided solely on the basis of requirements of the program or module and the internals of the program or modules are not considered for selection of test cases. This is also called Black Box Testing

In Structural Testing test cases are generated on actual code of the program or module to be tested. This is called White Box Testing.

A number of activities must be performed for testing software. Testing starts with test plan. Test plan identifies all testing related activities that need to be performed along with the schedule and guide lines for testing. The plan also specifies the levels of testing that need to be done, by identifying the different testing units. For each unit

68

Page 68: JCHAT_jchatbox

JChat Boxspecified in the plan first the test cases and reports are produced. These reports are analyzed.

Test plan is a general document for entire project, which defines the scope, approach to be taken and the personal responsible for different activities of testing. The inputs for forming test plane are

Project planRequirements documentSystem design

Although there is one test plan for entire project test cases have to be specified separately for each test case. Test case specification gives for each item to be tested. All test cases and outputs expected for those test cases.

The steps to be performed for executing the test cases are specified in separate document called test procedure specification. This document specify any specify requirements that exist for setting the test environment and describes the methods and formats for reporting the results of testing.

Unit testing mainly focused first in the smallest and low level modules, proceeding one at a time. Bottom-up testing was performed on each module. As developing a driver program, that tests modules by developed or used. But for the purpose of testing, modules themselves were used as stubs, to print verification of the actions performed. After the lower level modules were tested, the modules that in the next higher level those make use of the lower modules were tested.

Each module was tested against required functionally and test cases were developed to test the boundary values.

Integration testing is a systematic technique for constructing the program structure, while at the same time conducting tests to uncover errors associated with interfacing. As the system consists of the number of modules the interface to be tested were between the edges of the two modules. The software tested under this was incremental bottom-up approach.

Bottom-up approach integration strategy was implemented with the following steps. Low level modules were combined into clusters that perform specific

software sub functions. The clusters were then tested.

69

Page 69: JCHAT_jchatbox

JChat Box System testing is a series of different tests whose primary

purpose is to fully exercise the computer-based system. It also tests to find discrepancies between the system and its original objective, current specifications.

JChat BoxSystem Test Cases & System Test Report

The system test cases mentioned below are expected to work and give the expected behaviour if the explorer is configured to run jar files as mentioned in the project folder. The necessary library files and standard jar files are in the appropriate project directories and the path and classpath environment variables are appropriately set.

TesC.No.

INPUT EXPECTED BEHAVIOUR

Observed behaviour

StatusP =

PassedF =

Failed

1 a

The JChat Box Tool application jar is double-clicked on the Windows Explorer

The application should be launched and show the initial JChat Box Application swing window.

-do- P

1 b

The JChat Box Tool application jar is double-clicked on the Windows Explorer

The application should be launched and show the initial JChat Box Application swing window. But the application could not launch due to some configuration settings or because the “jar” files are not set to open appropriately. A suitable error message as “Entry point not found” or “Main class not found”

-do- P

2

On the tester Applcn. Window the user selects FILE-> New test. The test sequence is given a name to identify and save test parameters.

The test application main window (swing UI) is displayed with the various field empty for user input. A new properties file in the application folder will be created if the test is to be saved.

-do- P

The tester enters the URL of the web resource to be tested and then also fills up the

The user is initially shown the screen to enter the generic parameters and upon click of enter the new

70

Page 70: JCHAT_jchatbox

JChat Box

3concurrency level (no. of simulated users), iterations (no. of loops), no. of the screen parameters of the target application and any other test parameters and clicks enter. In the subsequent tab displayed the user enters the screen parameters of the target application.

tab to enter the specific parameters is shown. Here the user is shown the screen specific parameters as name value pairs : (since the target application’s parameters will not be known before hand) – the user has to enter the name of the parameter of the target servlet and also its value.

-do- P

4

The user then clicks on the continue test button.

The user is shown a new screen with options to select the type of output display.The options available are : Graph 2D (bar-chart), Summary Table, Detailed Table, Line Graph.

-do- P

5

The user selects the Graph2D/Line Graph…. options in the above selection

The user is then shown the http parameters tab in which the user may enter specific HTTP parameters.

-do- P

6

The user enters the specific HTTP params as required by the current run of the test.

The application validates the http parameters entered by the user for illegal entries and displays suitable error message on invalid parameters.

-do- P

7 a

The user finally clicks on the test button.

The application should try to connect to the target application by invoking the Connection using the supplied parameters for the http headers and the application specific parameters. It should also instantiate the THREAD pool and accordingly open that many connections with the target application and return a connection code of success or failure.

-do- P

71

Page 71: JCHAT_jchatbox

JChat Box

7 b

Depending upon the network conditions , the target application characteristics, validity of http headers and validity or target URL / URL parameters the connection may succeed or fail. These need to be conveyed to the end user with appropriate messages.

The connection code is a success code – then the user needs to be given a “Connection successful” message.

If the connection failed the cause of failure with the http error code has to be shown. E.g.(example codes only)404 – File not found602 – Access Denied550 – Network Transient

-do- P

8

The connection was successful. The tester application proceeds with the test.

The application will have to ping the targeted servlet with all the parameters as entered by the user. The http headers used for the connection request needs to be prolonged across all the transactions of the tester application with the servlet. (This can be examined using packet sniffers)

-do- P

9The target application is down or is not running or is not reachable from the current host.

An error message saying “http: // target servlet ” path not found has to be displayed.

-do-

P

10

The target application could be reached but the invoking URL does not have the right parameters.

An error message saying “http: // target servlet ” Invalid URL has to be displayed.

-do- P

11

The target application could be reached but the invoking host/URL pair does not have the privileges connect to the target application or authorization is necessary or the target application is

An error message saying “http: // target servlet ” Access Denied has to be displayed.

-do- P

72

Page 72: JCHAT_jchatbox

JChat Boxnot on a mutually trusted network.

12

The target application could be reached and the response was received from the destined URL.

Depending upon the selection of the user in TC.No.4 the output of the users target application is shown in the Graph or Table formats.

-do-

P

13

The http packets are all received and every connection has succeeded in getting back valid responses.

The graph shows the proportion of good and failed packets. In this case 100% valid packets indicate a bar chart of full scale.

-do- P

14The responses received have mixture of succeeded and failed packets.

The bar chart shows proportional bars of failed and succeeded packets.

-do- P

15

The responses received have mixture of succeeded and failed packets. But the selection in 4 was detailed table.

The table shows all the threads and their connection params with the corresponding responses and error codes.

-do- P

16The user changes the URL and tries step 1 through 15 with a different application.

Appropriate changes depending upon the target application show up and refresh the table or the graph.

-do- P

17The user click on quit

The application exits and all connections with the targeted applcns. Are closed.

-do- P

73

Page 73: JCHAT_jchatbox

JChat Box

1. PROJECT INSTALLATION1.1 INSTALLING J2SDK:If you have J2SDK installed on your system, please skip this section. For those who do not have J2SKD on the system, you will need to download and run the selfinstalling executable for J2SDK software bundle. After installing the JDK, you will need to update your PATH variable. For Windows 2000, if you want to set the PATH permanently, Choose start, Setting, Control Panel, and double-click System.

Select the Advanced tab and then Environment Variables. Choose “New” button from the system variables setting and create or edit the following two system variables:JAVA_HOME = C:\jdk1.3.1_05 depicted in Figure 1.Path = %JAVA_HOME%\bin; depicted in Figure 2

74

Page 74: JCHAT_jchatbox

JChat Box

1.2 INSTALLING APPLICATION SERVER (WEBLOGIC/Tomcat):First, you will need to download WebLogic application server binaries file from

http://www.WebLogic.org where it has all current WebLogic binaries. For this project, please download WebLogic-3.0.7_jakarta-tomcat-4.1.24.zip – this version of WebLogic comes with a simple Database (Hypersonic) and Tomcat Web Server out of the box without any initial configuration. Once you have downloaded WebLogic, just extract the zip file to any directory you want, then the installation is complete. The directory structure of WebLogic is as shown in left hand side of the Figure 3

75

Page 75: JCHAT_jchatbox

JChat Box

1.3 RUNNING INTEGRATED SERVER (TOMCAT, WEBLOGIC, AND HSQL DB):Depicted in Figure 4, change the current directory under WEBLOGIC_HOME/bin directory and launch the run script that matches the OS: • For Unix: $ run.sh• For Windows: E:\WebLogic-3.0.7_jakarta-tomcat-4.1.24\bin>run

If everything is setup correctly, administrator should see the following text at the end of the run script.• [Server] WebLogic (MX MicroKernel) [3.0.7 (CVSTag=WebLogic_3_0_7 Date=200304081816)] Started in 0m:13s:439ms If you get to this point with no error messages, HSQL database server, Tomcat Web Server and WebLogic Application Servers are up and running.

jChatBox users login as guest users. It means they only need a nickname to join a chatroom. Then they could broadcast their messages or send private messages.

• LOGIN

All users need to fill in nickname form AND select a chatroom to join it. Depending on client or skin, it could be done in different ways :

[HTML/CSS/JavaScript] - mIRC skin :

76

Page 76: JCHAT_jchatbox

JChat BoxFirst, user selects a chatroom in the list. Information (name, subject, users) about the selected chatroom will be automatically updated.Then he fills in a nickname before following "Enter" link. Login will fail if the nickname is already in use, or if the chatroom is full, or if the IP address is banned.

[HTML/CSS/JavaScript] - j-TV skin : First, user enters a nickname.Then he follows the link matching to the chatroom he wants to join. Login will fail if the nickname is already in use, or if the chatroom is full, or if the IP address is banned.

77

Page 77: JCHAT_jchatbox

JChat Box

[Applet] - Comics skin : First, user enters a nickname. Then he selects the room he wants to join and hits the "Join" button. Login will fail if the nickname is already in use, or if the chatroom is full, or if the IP address is banned.

78

Page 78: JCHAT_jchatbox

JChat Box

• CHAT

Once logged in, an user can send messages to all users in chatroom through message form. Depending on how filters (HTML, URL Converter) have been enabled, an user can send text messages or HTML-formated messages. URL filter converts http://..... into hyperlink.User can follow "refresh" link to speed up chatroom's content synchonization. He can also follow "logout" link to leave the chatroom.

79

Page 79: JCHAT_jchatbox

JChat Box

80

Page 80: JCHAT_jchatbox

JChat Box

• PRIVATE MESSAGES

The chatroom lists joined users (see bottom-right table above). Private messages could be sent (if allowed by SYSTEM user) by clicking on user name. For HTML/JavaScript skins, a new window should pop-up. Messages from this window will be sent to the selected user only. They should be displayed in red color in chatroom's content.For Applet skins, private mode is enabled by clicking on username and disabled by clicking on users label (e.g. "> ALL USERS").

- Private message pop-up -

• COMMANDS

A command starts with a / character. You can run a command from the chat form :

81

Page 81: JCHAT_jchatbox

JChat Box

There are 3 command's levels : User level, Moderator level and System level.System user can run all commands. Moderator users can run Moderator and User commands but not System commands. Users can't run Moderator nor System commands.

User commands Aliases Action

/help [command] /h Displays help for input command.

/time Displays server time.

/chat [username] [message] /sendto /c /s Sends private message to username.

/refresh /r Refreshes chatroom's client.

/quit /q Quits the current chatroom.

/logout /bye /exit Logouts the current chatroom.

     Moderator commands Aliases Action

/moderatorhelp /modhelp /mh Displays moderator help for input command.

/kickoff [username] (reason) /kick Kicks off username for the following reason.

/ban [username] (reason) Bans username for the following reason.

/banip [ipaddress] (reason) Bans ip address for the following reason.

/clear /clearblacklist Clears chatroom's blacklist.

/generatetranscript [filename] /transcriptGenerates transcript in log folder with the following filename.

/openchatroom [name] [subject] (maxusers) (history) (mode=FRAMED|

/open Opens a new chatroom.

Sample command :

82

Page 82: JCHAT_jchatbox

JChat BoxBUFFEREDFRAMED| APPLET| FLASH) (refreshlimit>=1) (refreshmodel=1-CONSTANT| 2-TRACK| 3-LOAD) (private=YES|NO) (language) (filterid=filter_html) (filterid=filter_url) (moderatorsid=name1,name2)

/open testing java 20 40 BUFFEREDFRAMED 8 2 YES english filter_html filter_url moderator,operator

/clearchatroom /clean Cleans current chatroom's content.

/closechatroom /close Closes current chatroom.      

System commands Aliases Action

/systemhelp /syshelp /sh Displays system help for input command.

/backup Backups all chatrooms./addmoderator [login] [password] [email] /am Adds a new moderator./removemoderator [login] /rm Removes a moderator./updatemoderator [login] [newlogin] (newpassword) (newemail)

/um Removes a moderator.

83

Page 83: JCHAT_jchatbox

JChat Box

JChat Box can be considered as a tool, which creates an environment that

allows users to chat each other in their required chat rooms. Lots of efforts

were put to make it work perfectly and efficiently. The developed system is

84

Page 84: JCHAT_jchatbox

JChat Boxtested with real data and the users are satisfied with the performance of the

system and reports.

This project is developed using JSPs/Java Servlets and web Server. By using

this tool we can make easy the work of navigating, creating a chat room,

allowing publicly or privately. By this lot of work load will be reduced to the

administrator, who is creating/updating/deleting users or chat rooms. This tool

is very useful for Administrating deportment of SAPARNA InfoTech Limited. It

provides extendibility also. So you can add your own features in future very

simply without disturbing the existing code. This tool reduces the manual

work and saves the time as well as manpower. The time for processing and

producing reports is considerably reduced. All the features are implemented

and developed as per the requirements.

85

Page 85: JCHAT_jchatbox

JChat Box

Basic Java Concepts : Thinking in JAVA

( Bruce Eckel )

Java Mail API : Wrox Publications Volume I and II

An Integrated Approach to

86

Page 86: JCHAT_jchatbox

JChat BoxSoftware Engineering: Pankaj Jalote

Introduction to System

Analysis and Design : I.T.Hawryszkiewycz

For UML diagrams : UML in 24 Hours Book

Some preferred websites : www.bruceeckel.com

www.sun.com/j2ee/mailapi

www.sun.com/j2se

87


Recommended