Pergunta

Eu tenho lido / aprender mais sobre Spring ultimamente, e como seria de usar o Spring em combinação com outras ferramentas open-source como Tomcat e Hibernate. Estou avaliando se deve ou não Spring MVC poderia ser uma tecnologia de substituição possível para o trabalho de projecto I on, que usa WebLogic e um monte de código Java EE rolou sob medida. A coisa é, eu sempre suspeitou que a nossa solução é mais de engenharia e de maneira mais complexa do que precisa ser. Surpreendentemente, é de 2009, e ainda, estamos escrevendo nossas próprias classes de manipulação de transação e-pool de segmentos. E não é como se estivéssemos Amazon, eBay, ou o Google, se você sabe o que quero dizer. Assim, eu estou investigando uma "simples é melhor" opção.

Então aqui está a minha pergunta: Eu gostaria de ouvir opiniões sobre a forma como você tomar a decisão de que um servidor full-blown aplicação Java EE é necessário, ou não. Como você "medir" o tamanho / carga / demanda em um aplicativo Java EE? Número de usuários simultâneos? Total de transações diárias? Como "pesado" faz uma necessidade aplicativo para chegar antes que você jogue para cima suas mãos em sinal de rendição e dizer: "OK, Tomcat só não é cortá-lo, precisamos JBoss / WebLogic / WebSphere"?

Foi útil?

Solução

Eu não acho que a decisão de usar um servidor de pleno direito Java EE ou não devem ser baseados no número de usuários ou transações. Pelo contrário, deve basear-se se você precisa da funcionalidade.

No meu projeto atual que está realmente se afastando do JBoss a baunilha Tomcat porque percebemos que não estavam usando qualquer uma das funcionalidades Java EE além servlets básicos de qualquer maneira. Estamos, no entanto, usando Spring. Entre a gestão da Primavera básica objeto, manipulação de transações e os recursos JDBC, não estamos vendo uma necessidade premente de EJB. Atualmente usamos Struts 2, em vez de MVC do Spring, mas eu ouvi grandes coisas sobre isso. De qualquer forma, Primavera integra bem com um número de frameworks web Java.

Outras dicas

Spring não tenta substituir algumas peças avançadas do JavaEE especificação, como JMS e JTA. Em vez disso, ele constrói sobre aqueles, tornando-os compatíveis com o "caminho Primavera" e, geralmente, tornando-os mais fáceis de usar.

Se a sua aplicação exige o poder dos gostos de JMS e JTA, então você pode facilmente usá-los através da Primavera. Não é um problema com isso.

Google fontes abrir um monte de seu código. Se você estiver escrevendo baixo nível coisas sozinho, em vez de implementar o código que já está escrito, você está sempre cismar o problema.

Voltar para a questão real, Walmart.com, etrade.com, The Weather Channel e muito poucos outros apenas usar Tomcat. Marketing e vendas caras da IBM querem fazer crer diferente, talvez, mas não há nenhum limite superior no Tomcat.

Com exceção de EJB, não tenho a certeza que Tomcat está faltando, e eu não sou um fã de EJB.

O tomcat não oferece além dos elementos mais exóticos do Java EE é beans de sessão (aka EJBs). beans de sessão permitem isolar o processamento eficiente. Então, você poderia ter uma caixa para o front-end, outro para os beans de sessão (lógica de negócio) e outro para o banco de dados.

Você iria querer fazer isso por pelo menos 2 motivos:

  1. Desempenho; Você está descobrindo que uma caixa para lidar com tudo está a carregar o caixa muito. Separar as camadas diferentes em diferentes caixas que lhe permitem dimensionar. beans de sessão também são capazes de balancear a carga em um nível mais de granulação fina. Tomcat e outros serviços da web de que laia não têm agrupamento fora da caixa.
  2. A flexibilidade; Agora que você já mudou sua lógica de negócio em seu próprio ambiente que você poderia desenvolver um front-end alternativo que usou a mesma camada, mas dizer, foi um front-end cliente de espessura, por exemplo. Ou talvez outros contextos gostaria de fazer uso dos beans de sessão.

Embora eu provavelmente deveria salientar que se você usar serviços da web para se comunicar com essa camada intermediária, ele também poderia estar no tomcat!

A única razão para usar um servidor completo soprado Java EE é se você precisa distribuído transações XA, se você não precisa de transações XA, em seguida, você pode usar o Spring + JPA + Tomcat + Bean Validation + JSTL + EL + JSP + Java Mail.

Além disso, um servidor Java EE deve implementar JMS mas não faz sentido para executar o servidor JMS no mesmo VM como o resto do servidor de aplicações por isso, se você precisa JMS, você deve ter um servidor JMS separado.

Eu discordo fortemente com todas as respostas dadas aqui.

Tudo pode ser adicionado ao Tomcat, incluindo EJB, CDI, JTA, Bean Validation, JAX-RS, etc.

A questão é: você quer isso? Você quer montar todas essas dependências nas versões direita e teste que tudo funciona em conjunto, quando os outros já fizeram isso?

Vamos ser claros: ninguém usa apenas Tomcat! Todo mundo sempre acrescenta um framework web, um recipiente COI, um ORM, um gerenciador de transações, serviços web, etc etc

servidores Lightweight Java EE como Tomee já incluem tudo isso e torna a experiência de pilha completa de ter todas essas coisas integrado muito melhor.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top