Estou tentando entender a diferença entre um servidor de aplicativos completo (por exemplo, Weblogic, JBoss etc.) e um contêiner de servlet (Tomcat, Jetty etc.).
Como eles diferem e quando usá-los?
Obrigado,
Estou tentando entender a diferença entre um servidor de aplicativos completo (por exemplo, Weblogic, JBoss etc.) e um contêiner de servlet (Tomcat, Jetty etc.).
Como eles diferem e quando usá-los?
Obrigado,
Respostas:
Um servlet-container suporta apenas a API de servlet (incluindo JSP, JSTL).
Um servidor de aplicativos suporta todo o JavaEE - EJB, JMS, CDI, JTA, a API de servlet (incluindo JSP, JSTL), etc.
É possível executar a maioria das tecnologias JavaEE em um contêiner de servlet, mas você deve instalar uma implementação independente da tecnologia específica.
Em termos gerais, um contêiner de servlet se restringe mais ou menos à implementação da especificação J2EE Servlet. Além disso, seu foco está no ambiente de tempo de execução e não tanto no fornecimento de ferramentas adicionais.
Em contraste, um servidor de aplicativos completo implementa toda a pilha J2EE; além disso, vem com todas as ferramentas da empresa e possibilidades de integração. Um servidor de aplicativos geralmente possui interfaces de administração avançada, ele suporta clustering e outros recursos usados principalmente no desenvolvimento de sistemas de alta tecnologia.
Para um iniciante, provavelmente é melhor ficar com um contêiner de servlet simples, já que a curva de aprendizado lá é muito menos íngreme.
Editar
@Apache Fan: Depende das especificidades da sua situação, como sistemas existentes e planos futuros, entre outras coisas. Não acho que uma abordagem de fluxograma genérico seja aplicável aqui.
A seleção da plataforma geralmente é feita comparando-se os requisitos específicos com o conhecimento de primeira mão dos sistemas em consideração.
No entanto, a pergunta não dá pistas sobre quais são os critérios de avaliação. Deve ser de código aberto? O suporte do fornecedor 24 horas é necessário? Com que tipo de ambiente corporativo o sistema deve se integrar? As taxas de licenciamento são um problema? Alguma tecnologia ou ferramenta indispensável? Etc.
Sem saber o que foi dito acima, é basicamente um tiro no escuro.
Basicamente, um servidor de aplicativos no contexto Java EE é um software instalado em um servidor e que implementa uma especificação Java EE (Java EE 7 por exemplo). Isso significa que esse software (servidor de aplicativos) deve ser capaz de executar aplicativos Java EE.
Java EE define 4 domínios, os chamados contêineres :
Dois contêineres fazem parte do servidor de aplicativos (EJB e contêiner da Web) e dois outros fazem parte do computador cliente.
JBoss e Weblogic são servidores de aplicativos, Tomcat e Jetty são contêineres da web. É por isso que JBoss e Weblogic podem lidar com mais tecnologias do que um contêiner da Web. O servidor de aplicativos pode gerenciar EJB.
O contêiner de servlet não é a expressão apropriada para Tomcat e Jetty qualificados porque é mais restritiva. O Tomcat também pode executar JSP e JSF, não apenas Servlets.
afaik, websphere e jboss são totalmente compatíveis com j2ee-server que podem ser executados além de servlets, como EJB, enquanto Tomcat é apenas um contêiner de servlet e você não pode executar EJBs nele.
Em termos de Layman: Um servidor web significa: Manipulação de solicitações HTTP (geralmente de navegadores).
Um recipiente de servlet (por exemplo, Tomcat) significa: Ele pode lidar com servlets e JSP.
Um servidor de aplicativos (por exemplo, GlassFish) significa: * Ele pode gerenciar aplicativos Java EE (geralmente servlet / JSP e EJBs).
Para um iniciante, provavelmente é melhor ficar com um contêiner de servlet simples.