Hi, I saw several messages passing concerning HTTP servers versus application servers.
[* 1 *]. HTTP servers communicate responses to client requests over HTTP protocol. This protocol was initially conceived for exchanging documents and easily access bibliography (using hyperlinks) through text messages over TCP/IP. An HTTP server is, thus, supposed to be able to deliver static HTML pages (or other static resources) at client request. Several HTTP servers, most of them commercial ones (you had to pay to get them) were built, but the community of webmasters, unsatisfied, conceived one as an open sources project. It was knew as "A Patchy server" or "Apache server", it became the most widespreaded HTTP server and it is at the origin of the Apache fondation. As the Apache fondation hosts today very many projects, the server is called today "Apache httpd server". Application servers execute some application code, on a centralized server machine and communicate with client code through some protocole. Application servers arose pushed by two kinds of needs: -- [* 2 *] Web development made useful to have dynamic (i.e. computed on request) content sent in response to a HTTP request, implying extracting data from some persistency repository (such as a database) and processing them. This kind of application servers complement the facilities of a HTTP server (1) -- [* 3 *] Enterprise class applications became too heavy to be executed on end user desktops. The solution would be to isolate heavy business rules data process and to execute them on a big centralized server, leaving the end user desktops to execute only the necessary code for managing the user interface (that implies heavy data processing too) Different technologies allow to build and use application servers. Java technologies use "servlet containers" for (2) and "EJB containers" for (3). Servlet containers (2) are able to execute "servlets": Java code (respecting some - more or less - simple conventions) that produce HTTP output. The servlets may be implicitely generated from scripting code (such as Java Server Pages). EJB containers (3) are able to manage "Enterprise Java Beans": Java code (respecting some - more or less - simple conventions) that encapsulates business objects. The EJB containers are supposed to process the business logic, leaving the user interface code to just display data or gather the data entered by the user. A complex n-Tiers architectures may include -- a database server, -- an EJB container (3) that access the database and process data according to the business rules, -- a servlet container (2) that gets the EJB from the EJB container and composes the HTML dynamic pages (manages the user interface), -- an HTTP server (1) that sends the HTML dynamically generated pages by the servlet container to the end user web explorer. (all the components are not essentially necessary for /any/ application) The Apache fondation also hosts Open Sources projects for (2) and (3). Apache Tomcat is a server combining a HTTP server (I think the original project was called Coyote) and a servlet container (Catalina servlet container). It allows to execute servlets (2) and to deliver the response through the HTTP protocol (1). As everything is written in Java, it is a very compact and easy to deploy application server of the (2)nd kind. It is possible to use Apache Tomcat's servlet container with a more powerful and more flexible Apache httpd server. As Apache httpd is not written in Java, the deployment of such a solution is more complicated, although very interesting for performance tuning purposes, but there is no change from the point of view of the application - no need to bother: Apache Tomcat is enough for learning servlet and JSP programming. Apache Geronimo is an application server that combines an Apache Tomcat server (1 and 2) with a EJB container (3), also available from the Apache fondation. Apache Geronimo (and implicitely Tomcat) code is included in the code of other commercial or free application servers on the market. If Apache httpd is the mose widespreated HTTP server (1) in the world, Apache Tomcat is one of the mostly used as embedded application server (2). Whenever you install an application that allows a stand alone HTTP user interface, then there must probably be an embeded Tomcat server silently installed somewhere there (unless the application provider is Microsoft Itself and the embeded server is IIS). When there is no need for a distinct EJB container, Apache Tomcat is the perfect tool, for training in particular. As far as I know, Apache Geronimo is not as widespreaded as Tomcat, although the derived commercial servers are largely used. Complete (1 + 2 + 3) servers well known on the market are: JBoss (Open Source project), WebSphere (from IBM, including a free community version), Glassfish (Open Source project from SUN), ... Application servers also include supplementary goodies, such as tools for managing named resources like databases or facilities for defining the security options. NetBeans can be downloaded (from www.netbeans.org) with already embedded Apache Tomcat (V6.something I think) and Glassfish (V2 and V3) servers. Servlet and JSP exemples and homeworks can be executed on any of them, at least in theory. More sophisticated exemples (such as ones using database access) may find more facilities (such as embedded tools for the "Java Database") on Glassfish servers. EJB-based training need Glassfish servers. Of course, other servers can be added to the NetBeans platforms, but for the training purposes I think Apache Tomcat and Glassfish are sufficient. Hope it helps mihai diegosouza.br a écrit : > JBoss implements the whole Java EE Specification. It's not interesting > to you if you are a beginner. > > > On Oct 7, 7:17 pm, tedpottel <tedpot...@gmail.com> wrote: > >> Hi, >> I was thinking about installin tomcat to do jsp pages and learn j2ee. >> If I understand it JBoss is tomcat and other stuff added to it. >> >> Would I be better of to install JBOss instad of tomcat? >> > > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Java EE (J2EE) Programming with Passion!" group. To post to this group, send email to java-ee-j2ee-programming-with-passion@googlegroups.com To unsubscribe from this group, send email to java-ee-j2ee-programming-with-passion+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/java-ee-j2ee-programming-with-passion?hl=en?hl=en -~----------~----~----~----~------~----~------~--~---