Parece haver uma tendência atual no espaço java de deixar de implantar aplicativos da web java para um recipiente de servlet java (ou servidor de aplicativos) na forma de um arquivo war (ou arquivo ear) e, em vez disso, empacotar o aplicativo como um jar executável com um servidor servlet / HTTP embutido como jetty. E quero dizer isso mais na forma como os novos frameworks estão influenciando como novos aplicativos são desenvolvidos e implantados, em vez de como os aplicativos são entregues aos usuários finais (porque, por exemplo, eu entendo por que o Jenkins usa um contêiner integrado, muito fácil de pegar e usar ) Exemplos de estruturas que adotam a opção jar executável: Dropwizard , Spring Boot e Play (bem, não é executado em um contêiner de servlet, mas o servidor HTTP está embutido).
Minha pergunta é, vindo de um ambiente onde implantamos nossos (até este ponto principalmente Struts2) aplicativos em um único servidor de aplicativos tomcat, quais mudanças, melhores práticas ou considerações precisam ser feitas se planejamos usar uma abordagem de contêiner integrado ? Atualmente, temos cerca de 10 aplicativos criados internamente em execução em um único servidor Tomcat e, para esses aplicativos pequenos, a capacidade de compartilhar recursos e ser gerenciados em um servidor é ótima. Nossos aplicativos não se destinam a ser distribuídos aos usuários finais para serem executados em seus ambientes. No entanto, no futuro, se decidirmos aproveitar uma estrutura Java mais recente, essa abordagem deve mudar? A mudança para jars executáveis é estimulada pelo uso crescente de implantações em nuvem (por exemplo, Heroku)?
Se você já teve experiência no gerenciamento de vários aplicativos no estilo Play de implantação versus implantação de arquivo war tradicional em um único servidor de aplicativos, compartilhe sua visão.