, , , , , ,

At often, I get confused on the purpose, difference, when and where to use on stateful and stateless in java. Below is for my reference and may useful for who looking the definition on these.

stateful – keep track of the previously stored information which is used for current transaction.

stateless – every transaction is performed as if it were being done for the very first time. There is no previously stored information used for the current transaction.

Stateful means the computer or program keeps track of the state of interaction, usually by setting values in a storage field designated for that purpose.

Stateful and stateless are adjectives that describe whether a computer or computer program is designed to note and remember one or more preceding events in a given sequence of interactions with a user, another computer or program, a device, or other outside element. Stateful means the computer or program keeps track of the state of interaction, usually by setting values in a storage field designated for that purpose. Stateless means there is no record of previous interactions and each interaction request has to be handled based entirely on information that comes with it. Stateful and stateless are derived from the usage of state as a set of conditions at a moment in time.

The Internet’s basic protocol, the Internet Protocol ( IP ), is an example of a stateless interaction. Each packet travels entirely on its own without reference to any other packet. When you request a Web page from a Web site, the request travels in one or more packets, each independent of the other as far as the Internet Protocol program itself is concerned.

The Web’s Hypertext Transfer Protocol ( HTTP ), an application layer above TCP/IP, is also stateless. Each request from a user for a Web page or URL results in the requested pages being served, but without the Web (HTTP) server remembering the request later. In other words, there is no recorded continuity. Each communication is discrete and unrelated to those that precede or follow. In order to have stateful communication, a site developer must furnish a special program that the server can call that can record and retrieve state information. Web browsers such as Netscape Explorer and Microsoft Internet Explorer provide an area in their sub-directories where state information can be stored and accessed. The area and the information that Web browsers and server applications put in this area is called a cookie.

Imagine a request over the web where you have a client browser communicating to a server process. To maintain state over the stateless http protocol the browser typically send a session identifier to the server on each request. For each request the server will be like “ah, its this guy”. State information can then be looked up in server side memory or in a database based on this session id.

In a purely stateless environment you wouldn’t need this session id. Each request would contain all the information the server would need to process. But many applications need to maintain state to keep track of whether or not a session is authenticated to view certain content or to keep track of what a user is doing. You wouldn’t want to send user credentials over the wire for each request.