Sembra esserci una tendenza attuale nello spazio java di allontanarsi dalla distribuzione di applicazioni web java a un contenitore servlet java (o server applicazioni) sotto forma di un file war (o file ear) e invece impacchettare l'applicazione come un jar eseguibile con un servlet / server HTTP incorporato come jetty. E lo intendo maggiormente nel modo in cui i framework più recenti stanno influenzando il modo in cui le nuove applicazioni vengono sviluppate e distribuite piuttosto che come le applicazioni vengono fornite agli utenti finali (perché, ad esempio, capisco perché Jenkins utilizza un contenitore incorporato, molto facile da afferrare e andare ). Esempi di framework che adottano l'opzione jar eseguibile: Dropwizard , Spring Boot e Play (beh, non viene eseguito su un contenitore servlet ma il server HTTP è incorporato).
La mia domanda è, provenendo da un ambiente in cui abbiamo distribuito le nostre applicazioni (fino a questo punto principalmente Struts2) su un singolo server di applicazioni Tomcat, quali modifiche, best practice o considerazioni devono essere fatte se intendiamo utilizzare un approccio contenitore incorporato ? Attualmente, abbiamo circa 10 applicazioni sviluppate internamente in esecuzione su un singolo server Tomcat e per queste applicazioni piccole la capacità di condividere risorse ed essere gestite su un server è piacevole. Le nostre applicazioni non sono pensate per essere distribuite agli utenti finali per essere eseguite nel loro ambiente. Tuttavia, andando avanti se decidiamo di sfruttare un nuovo framework Java, questo approccio dovrebbe cambiare? Il passaggio ai jar eseguibili è stimolato dal crescente utilizzo di implementazioni cloud (ad es. Heroku)?
Se hai esperienza nella gestione di più applicazioni nello stile di distribuzione Play rispetto alla distribuzione tradizionale di file war su un singolo server delle applicazioni, condividi le tue informazioni.