Jboss ou apache?

Sem flames mas alguem poderia listar alguns beneficios de maleficios deles, sei que as 2 devem ter seu lado bom e seu lado ruim, mas gostaria apenas de saber.

Pretendo implementar ejb em meu sistemas mas estou meio indeciso, pois falaram tambem que o ejb so funciona em jboss!!

vlww

A informação procede. O Apache Tomcat é apenas um conteiner Web, ou seja, ela suporta as especificações Servlets e JSP e permite disponibilizar recursos JNDI. Já o JBoss é um servidor JEE completo, pois implementa EJB’s, CDI, se eu não me engano, as versões mais recentes já vem com o Hibernate, portanto suporta JPA além de incorporar o Tomcat como conteiner Web. Sendo assim, a pergunta JBoss x Apache (Tomcat) não faz muito sentido. É como perguntar Java x Windows. Faria mais sentido um questionamento JBoss x Glassfish.

Existem diversos projetos da apache de servidores java EE 6.
Apache TomEE
Apache Geronimo

Não o EJB não só roda no JBoss.
Ele pode rodar em qualquer servidor de aplicação que seja compatível com o java EE 6.

O que muda normalmente de uma para outro é a implementação de uma especificação
ex:
O jpa padrão do Jboss é o hibernate
o do glassfish é o EclipseLInk
e do Geronimo é o openJpa

A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
Poucas são as instituições de ensino (faculdades e escolas técnicas) que se preocupam em mostrar como funciona um AS (application server).
O que pode-se dizer a respeito de ambos é, o Apache Tomcat é um container web, que implementa as especificações de Servlet e JSP, o que permite, portanto, utilizar tecnologias baseadas nessas especificações (Struts, JSF, etc).
O JBoss, assim como Glassfish, Websphere, Weblogic e outros AS, possuem N outras funções, embora todos tenham um container web dentro deles (ou seja, suportam tudo o que o Apache Tomcat faz e mais um pouco). Em geral, todas suportam a especificação EJB, que é muito mais ampla que a especificação de servlets.

Eu acho que ele quis perguntar quando pode usar apenas um Servlet Container(Tomcat) ou quando precisa de um AS mais ‘parrudo’(JBOSS)…

[quote=drsmachado]A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
Poucas são as instituições de ensino (faculdades e escolas técnicas) que se preocupam em mostrar como funciona um AS (application server).
O que pode-se dizer a respeito de ambos é, o Apache Tomcat é um container web, que implementa as especificações de Servlet e JSP, o que permite, portanto, utilizar tecnologias baseadas nessas especificações (Struts, JSF, etc).
O JBoss, assim como Glassfish, Websphere, Weblogic e outros AS, possuem N outras funções, embora todos tenham um container web dentro deles (ou seja, suportam tudo o que o Apache Tomcat faz e mais um pouco). Em geral, todas suportam a especificação EJB, que é muito mais ampla que a especificação de servlets.[/quote]

Ótimo comentário.
A única obervação que gostaria de fazer é que por ter um container web não necessariamente ele roda EJBs.
O tom cat é um exemplo desse.

Is tomcat an EJB server? Can I use EJBs with tomcat?

Tomcat is not an EJB server. Tomcat is not a full J2EE server. Tomcat is a Servlet container. Tomcat does support those parts of the J2EE specification that are required for Servlets, such as a subset of JNDI functionality. Furthermore, you can connect to remote J2EE servers, or run tomcat embedded inside a full J2EE server.

fonte: http://wiki.apache.org/tomcat/FAQ/Miscellaneous

Para saber os servidores que são compatíveis com o java EE 6 acesse:

http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html

Legal pessoal, gostei desse topico… aprendi coisas que nao sabia…

Por isso que gosto do GUJ, pessoas sempre ajudando com humildade :slight_smile:

[quote=drsmachado]A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
[/quote]

Rapaz,eu discordo desse erroneamente,se a gente quando tá iniciando já é dificil até botar o Tomcat pra rodar,que dirá de um “monstro” como o Jboss? :lol:

(por que eu sou o único que observa essas questões?)

eu penso o seguinte, o que voce vai rodar, PRECISA de um servidor de aplicação??
o Tomcat consome pouca memória e é bem rápido… já o JBoss é um comilão de memória devido a quantidade de serviços oferecidos…
logo, portanto, entretanto, todavia, contudo busque analisar se o consumo exacerbado do JBoss vai se fazer necessária!!

no seu caso parece que sim, já que voce irá rodar EJB…

[quote=otaviojava][quote=drsmachado]A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
Poucas são as instituições de ensino (faculdades e escolas técnicas) que se preocupam em mostrar como funciona um AS (application server).
O que pode-se dizer a respeito de ambos é, o Apache Tomcat é um container web, que implementa as especificações de Servlet e JSP, o que permite, portanto, utilizar tecnologias baseadas nessas especificações (Struts, JSF, etc).
O JBoss, assim como Glassfish, Websphere, Weblogic e outros AS, possuem N outras funções, embora todos tenham um container web dentro deles (ou seja, suportam tudo o que o Apache Tomcat faz e mais um pouco). Em geral, todas suportam a especificação EJB, que é muito mais ampla que a especificação de servlets.[/quote]

Ótimo comentário.
A única obervação que gostaria de fazer é que por ter um container web não necessariamente ele roda EJBs.
O tom cat é um exemplo desse.

Is tomcat an EJB server? Can I use EJBs with tomcat?

Tomcat is not an EJB server. Tomcat is not a full J2EE server. Tomcat is a Servlet container. Tomcat does support those parts of the J2EE specification that are required for Servlets, such as a subset of JNDI functionality. Furthermore, you can connect to remote J2EE servers, or run tomcat embedded inside a full J2EE server.

fonte: http://wiki.apache.org/tomcat/FAQ/Miscellaneous

Para saber os servidores que são compatíveis com o java EE 6 acesse:

http://www.oracle.com/technetwork/java/javaee/overview/compatibility-jsp-136984.html

[/quote]

Acho que o que eu postei não ficou claro, eu disse que AS possuem containers, porém, vão além destes e suportam a especificação EJB.
Para ficar claro, containers NÃO SUPORTAM EJB e são parte de AS.

[quote=raf4ever][quote=drsmachado]A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
[/quote]

Rapaz,eu discordo desse erroneamente,se a gente quando tá iniciando já é dificil até botar o Tomcat pra rodar,que dirá de um “monstro” como o Jboss? :lol: [/quote]

Não discordo do teu ponto de vista, o problema é que poucos informam que existem outras tecnologias e outras coisas além do óbvio.
Eu leciono cursos de JEE, com servlet e jsp (determinação da escola), mas como o conteúdo é rápido, sempre coloco coisas a mais, como JSF 2 e introdução ao EJB, para mostrar que aquele suplício não é tudo o que existe, dar uma inspirada na turma e tentar fazê-los ir atrás de coisas mais interessantes.

[quote=Victor Neves](por que eu sou o único que observa essas questões?)

eu penso o seguinte, o que voce vai rodar, PRECISA de um servidor de aplicação??
o Tomcat consome pouca memória e é bem rápido… já o JBoss é um comilão de memória devido a quantidade de serviços oferecidos…
logo, portanto, entretanto, todavia, contudo busque analisar se o consumo exacerbado do JBoss vai se fazer necessária!!

no seu caso parece que sim, já que voce irá rodar EJB…[/quote]
Victor, sempre considero este tipo de questão.
Até uso a expressão “usar rifle de caçar elefante para matar formiga”.
Sempre que alguém me questiona sobre usar isso, aquilo ou seja lá o que for, coloco a questão, tento mostrar prós e contras e, se conheço do assunto e posso opinar, tento sugerir algo mais simples.

Porém, este caso é específico, a pergunta é direta, qual dos dois irá rodar EJB (ao menos entendi isso).

[quote=drsmachado][quote=otaviojava][quote=drsmachado]A pergunta faz sentido, pois no caminho do aprendizado, erroneamente, a maioria é ensinada a utilizar apenas o Apache Tomcat.
Poucas são as instituições de ensino (faculdades e escolas técnicas) que se preocupam em mostrar como funciona um AS (application server).
O que pode-se dizer a respeito de ambos é, o Apache Tomcat é um container web, que implementa as especificações de Servlet e JSP, o que permite, portanto, utilizar tecnologias baseadas nessas especificações (Struts, JSF, etc).
O JBoss, assim como Glassfish, Websphere, Weblogic e outros AS, possuem N outras funções, embora todos tenham um container web dentro deles (ou seja, suportam tudo o que o Apache Tomcat faz e mais um pouco). Em geral, todas suportam a especificação EJB, que é muito mais ampla que a especificação de servlets.[/quote]
[/quote]

A questão é que nas faculdades aprendemos e olha que nem é em todas a entender um pouco da arquitetura web e quase sempre fazemos uma aplicaçãozinha .war que roda no tomcat e já era … assim sendo, por se tratar apenas de uma simples aplicação o tomcat resolve muito bem e é o mais utilizado no mundo todo, agora quando aprendemos algo mais aprofundado como ejb, cdi, segurança , controle de transação, etc… neste caminho com certeza irão aparecer os AS mais parrudo digamos assim, pois precisaremos destes para rodarem nossos .ear … portanto o que vale mesmo é saber a necessidade de uso, se você vai fazer uma tela de cadastro não precisa de um Jboss , se você vai construir uma loja virtual as coisa começam a mudar …

Em relação a memória do Jboss , o ideal é saber configurá-lo para não subir todos os serviços que ele tem e ao longo do desenvolvimento você vai disponibilizando os serviços conforme sua necessidade … mas isto você consegue fazer apenas na versão 6 em diante se eu não me engano …

[quote]Sem flames mas alguem poderia listar alguns beneficios de maleficios deles, sei que as 2 devem ter seu lado bom e seu lado ruim, mas gostaria apenas de saber.
Pretendo implementar ejb em meu sistemas mas estou meio indeciso, pois falaram tambem que o ejb so funciona em jboss!! [/quote]
vamos la…

JBoss é um monstro, cheios de recursos…muito provável que vc não precise nem de 10%. Na maioria dos casos o pessoal nem precise usar EJB. Não sei seu caso…Segue um resumo dos serviços básicos do JBOSS (ou qualquer container JEE full)

  • Log
  • SSL
  • JNDI completo.
  • Diversas estrategias de autenticação e autorização com JAAS
  • autenticação e autorização single-signon
  • Cluster e Load balancer
  • cache standalone, distribuído, data grid
  • Diversas estrategias de JCA (acesso a legados e mainframe)
  • Diversas estrategias de DataSource
  • JavaMail
  • Diversas versões de JSF
  • Diversas versões de JSTL
  • Diversas versões de JPA (ORM)
  • web services SOAP
  • web services REST
  • Mensageira com JMS e EJB
  • Servlet e JSP
  • EJB local
  • EJB remoto (RMI)
  • Validação com Bean Validation
  • Agendamento (EJB Timer)
  • AOP interceptores
  • Ioc EJB e CDI
  • transações standalone e distribuída JTA
  • muitas e muitas outras coisas extensões proprietárias que eu não me lembro agora e não sei de cabeça.
    Vc precisa de um grande conhecimento e varias certificação RED HAT para saber habilitar, desabilitar e monitorar TUDO ISSOOOOOOO!!! É algo bem complexo sim…

Tomcat é muito usado pq ele é simples sem nenhum serviço por padrão. Na verdade vc precisa habilitar os serviços na unha através de um “ligthware container = frameworks de terceiros”, caso sua solução necessite usar um serviço que no qual o tomcat não fornceça.
Segue um resumo dos serviços básicos do tomcat:

  • Log
  • SSL
  • Algumas estrategias de autenticação e autorização com JAAS
  • autenticação e autorização single-signon
  • JNDI completo, mas vazio.
  • Cluster e Load balancer
  • Servlet e JSP
  • Um DataSource
  • algumas extensões proprietárias que eu não me lembro agora e não sei de cabeça.

Vc precisa de bem menos conhecimentos para saber usar e monitorar. 1 livro ou ler o docs no site já é suficiente.

Na verdade vc tem que escolher um container que lhe beneficie mais…Veja bem…quais são os serviços que sua aplicação vai precisar? Compensa ir direto para um container full cheio de coisas e desabilitar ou ir para um container minimo e habilitar alguns serviços? É uma decisão baseada na solução e não gosto pessoal.

O que mais temos aqui no forum é os abelhudos usando JBOSS com ejb sem a necessidade se ferrando no ambiente de produção com uma serie de issues justamente por ter usado algo que não precisava…A famosa frase “Matar formiga com bazuca”! Fique livre para tomar sua decisão…

Vai uma dica…
Hoje as coisas mudaram…
Temos o “web profile” no JEE 6 que é justamente o meio termo.
Falei com o pessoal da oracle no JavaOne 2011 SP e todos eles indicaram usar Glasshfish com web profile. Eles me mostraram muitas empresas que usam em produção hoje. Muito bom!
Segue um resumo dos serviços básicos do web profile:

[i]The Java EE 6 web profile is a specified minimal configuration targeted for small footprint servers that support “typical” web applications. The Web profile is a minimal specification, so an implementation is free to add additional services or allow applications to provision additional services. The required elements of the web profile are:

  • Servlet e JavaServer Pages
  • Standard Tag Library for JavaServer Pages
  • JavaServer Faces (JSF) 2.0
  • Enterprise JavaBeans (EJB) 3.1 Lite (JSR-318) (Somente local)
  • Java Transaction API (JTA)
  • Java Persistence API (JPA)
  • Dependency Injection for Java 1.0
  • Contexts and Dependency Injection for Java EE platform 1.0
  • Bean Validation 1.0
  • Interceptors 1.1
  • SOAP E REST
    [/i]

Web profile é justamente um tomcat melhorado, ou seja, o servidor com poucos serviços habilitados. Justamente aqueles que nos fazíamos manualmente na unha.
O tomcat tb implementa o web profile com TOMEE (mas não se esta pronto…)
Veja - http://fernandofranzini.wordpress.com/2012/01/20/migrando-de-spring-para-jee-6-web-profile/

Na verdade agora temos 3 tipos de servidores para escolher

  1. O minimo sem nada - vc habilita na unha os serviços.
  2. O intermediário com web profile - vem serviços básicos para aplicações de pequeno a medio porte.
  3. O completo full - todos os serviços do JEE + extensões proprietárias de cada provedor.

[quote=Aleksandro]A questão é que nas faculdades aprendemos e olha que nem é em todas a entender um pouco da arquitetura web e quase sempre fazemos uma aplicaçãozinha .war que roda no tomcat e já era … assim sendo, por se tratar apenas de uma simples aplicação o tomcat resolve muito bem e é o mais utilizado no mundo todo, agora quando aprendemos algo mais aprofundado como ejb, cdi, segurança , controle de transação, etc… neste caminho com certeza irão aparecer os AS mais parrudo digamos assim, pois precisaremos destes para rodarem nossos .ear … portanto o que vale mesmo é saber a necessidade de uso, se você vai fazer uma tela de cadastro não precisa de um Jboss , se você vai construir uma loja virtual as coisa começam a mudar …

Em relação a memória do Jboss , o ideal é saber configurá-lo para não subir todos os serviços que ele tem e ao longo do desenvolvimento você vai disponibilizando os serviços conforme sua necessidade … mas isto você consegue fazer apenas na versão 6 em diante se eu não me engano …[/quote]

Em nenhum momento questionei a necessidade do Tomcat para tais fins, além do que, se formos pensar em algo similar, como o ASP.NET, em instituições que usam o C#/VB.NET como base, acredito que ninguém ensine a gerenciar a fundo o IIS, por exemplo…

[quote=drsmachado]
Em nenhum momento questionei a necessidade do Tomcat para tais fins, além do que, se formos pensar em algo similar, como o ASP.NET, em instituições que usam o C#/VB.NET como base, acredito que ninguém ensine a gerenciar a fundo o IIS, por exemplo…[/quote]

Na verdade tentei descrever uma dúvida que todos nós já tivemos um dia e os mais novos tem constantemente, apenas isto …

[quote=FernandoFranzini][quote]Sem flames mas alguem poderia listar alguns beneficios de maleficios deles, sei que as 2 devem ter seu lado bom e seu lado ruim, mas gostaria apenas de saber.
Pretendo implementar ejb em meu sistemas mas estou meio indeciso, pois falaram tambem que o ejb so funciona em jboss!! [/quote]
vamos la…

JBoss é um monstro, cheios de recursos…muito provável que vc não precise nem de 10%. Na maioria dos casos o pessoal nem precise usar EJB. Não sei seu caso…Segue um resumo dos serviços básicos do JBOSS (ou qualquer container JEE full)

  • Log
  • SSL
  • JNDI completo.
  • Diversas estrategias de autenticação e autorização com JAAS
  • autenticação e autorização single-signon
  • Cluster e Load balancer
  • cache standalone, distribuído, data grid
  • Diversas estrategias de JCA (acesso a legados e mainframe)
  • Diversas estrategias de DataSource
  • JavaMail
  • Diversas versões de JSF
  • Diversas versões de JSTL
  • Diversas versões de JPA (ORM)
  • web services SOAP
  • web services REST
  • Mensageira com JMS e EJB
  • Servlet e JSP
  • EJB local
  • EJB remoto (RMI)
  • Validação com Bean Validation
  • Agendamento (EJB Timer)
  • AOP interceptores
  • Ioc EJB e CDI
  • transações standalone e distribuída JTA
  • muitas e muitas outras coisas extensões proprietárias que eu não me lembro agora e não sei de cabeça.
    Vc precisa de um grande conhecimento e varias certificação RED HAT para saber habilitar, desabilitar e monitorar TUDO ISSOOOOOOO!!! É algo bem complexo sim…

Tomcat é muito usado pq ele é simples sem nenhum serviço por padrão. Na verdade vc precisa habilitar os serviços na unha através de um “ligthware container = frameworks de terceiros”, caso sua solução necessite usar um serviço que no qual o tomcat não fornceça.
Segue um resumo dos serviços básicos do tomcat:

  • Log
  • SSL
  • Algumas estrategias de autenticação e autorização com JAAS
  • autenticação e autorização single-signon
  • JNDI completo, mas vazio.
  • Cluster e Load balancer
  • Servlet e JSP
  • Um DataSource
  • algumas extensões proprietárias que eu não me lembro agora e não sei de cabeça.

Vc precisa de bem menos conhecimentos para saber usar e monitorar. 1 livro ou ler o docs no site já é suficiente.

Na verdade vc tem que escolher um container que lhe beneficie mais…Veja bem…quais são os serviços que sua aplicação vai precisar? Compensa ir direto para um container full cheio de coisas e desabilitar ou ir para um container minimo e habilitar alguns serviços? É uma decisão baseada na solução e não gosto pessoal.

O que mais temos aqui no forum é os abelhudos usando JBOSS com ejb sem a necessidade se ferrando no ambiente de produção com uma serie de issues justamente por ter usado algo que não precisava…A famosa frase “Matar formiga com bazuca”! Fique livre para tomar sua decisão…

Vai uma dica…
Hoje as coisas mudaram…
Temos o “web profile” no JEE 6 que é justamente o meio termo.
Falei com o pessoal da oracle no JavaOne 2011 SP e todos eles indicaram usar Glasshfish com web profile. Eles me mostraram muitas empresas que usam em produção hoje. Muito bom!
Segue um resumo dos serviços básicos do web profile:

[i]The Java EE 6 web profile is a specified minimal configuration targeted for small footprint servers that support “typical” web applications. The Web profile is a minimal specification, so an implementation is free to add additional services or allow applications to provision additional services. The required elements of the web profile are:

  • Servlet e JavaServer Pages
  • Standard Tag Library for JavaServer Pages
  • JavaServer Faces (JSF) 2.0
  • Enterprise JavaBeans (EJB) 3.1 Lite (JSR-318) (Somente local)
  • Java Transaction API (JTA)
  • Java Persistence API (JPA)
  • Dependency Injection for Java 1.0
  • Contexts and Dependency Injection for Java EE platform 1.0
  • Bean Validation 1.0
  • Interceptors 1.1
  • SOAP E REST
    [/i]

Web profile é justamente um tomcat melhorado, ou seja, o servidor com poucos serviços habilitados. Justamente aqueles que nos fazíamos manualmente na unha.
O tomcat tb implementa o web profile com TOMEE (mas não se esta pronto…)
Veja - http://fernandofranzini.wordpress.com/2012/01/20/migrando-de-spring-para-jee-6-web-profile/

Na verdade agora temos 3 tipos de servidores para escolher

  1. O minimo sem nada - vc habilita na unha os serviços.
  2. O intermediário com web profile - vem serviços básicos para aplicações de pequeno a medio porte.
  3. O completo full - todos os serviços do JEE + extensões proprietárias de cada provedor.
    [/quote]

Muito bom. Eu não estava a par do Web Profile. De qualquer maneira, esse post é bastante esclarecedor.