The Web Server (also called HTTP Server) serves only static content, typically HTML pages.
The Application server serves dynamic content and contains and environment to execute Java components.
Usually there is a plug-in that must be installed in the web server in order to communicate with the AppServer.
Typically, if the web server is IIS, the communication with the app server is via ISAPI, if it is Apache the communication is via NSAPI, and so on.
Actually, an HTTP servlet processes HTTP requests.
APIs for maintaining session data throughout a web application and interacting with the user request overcomes the limitation of the stateless nature of HTTP.
J2EE servers are not obliged to implement JTS.
The transaction manager must support distributed transaction, what is typically done with XA.
JAXP was added to J2EE v1.3
J2EE v1.3 determines that J2EE products must be capable of exporting enterprise beans using the IIOP protocol. This is required to enable interoperability and to make EJB appear as Corba objects.
The type of the session bean (stateless or stateful) is declared in the DD.
stateless session beans can have non-client specific state, for example, an open database connection.
Other servlet examples implement the doPost() and/or doGet() methods. These methods reply only to POST or GET requests; if you
want to handle all request types from a single method, your servlet can simply implement the service() method. (However, if you choose to implement the service() method, you will not be able to implement the doPost() or doGet() methods, unless you call super.service() at the beginning of the service() method.)
Many details are omitted in the source code examples.