Cómo implementar una aplicación web Java con Jetty incrustado en un VPS

Configurar una aplicación web Java en Jetty con un VPS es lo mismo que configurarlo en una máquina física o en una máquina virtual local. Sin embargo, usar un VPS solo podría no escalar demasiado bien, debido a los grandes requisitos de memoria de las aplicaciones web Java y la JVM.

Una solución típica hoy en día es que un servidor web estático, como nginx, sirva los activos estáticos y luego delegue el contenido dinámico del servidor web real. Una configuración para eso está aquí: JavaServers – Comunidad Nginx. Si el VPS es un “servidor en la nube” como en Amazon Web Services o Google Cloud Platform, incluso sería más eficiente que los archivos se sirvan desde el almacenamiento de objetos o CDN. Configurar esto para Java no es diferente de otras plataformas.

La aplicación web Java generalmente tiene la forma de un archivo de guerra (archivo web), ya sea un solo archivo o en formato “explotado” en el sistema de archivos.

Jetty / Howto / Deploy Web Applications

Para SSL, algunas instrucciones están aquí para crear la clave privada y el certificado. Sin embargo, este ejemplo utiliza una Autoridad de certificación, por lo tanto, se realiza una Solicitud de firma de certificado. Otra opción es crear el certificado directamente, aunque el navegador mostrará una advertencia o error al respecto. Tenga en cuenta que la clave privada de Java y los formatos de certificado que utilizan keytool y las API de Java SDK son diferentes de los compatibles con openssl estándar.

Jetty / Howto / Configure SSL

La aplicación web típica de Java utiliza el almacenamiento de la base de datos, que podría estar en el mismo VPS o en un servicio alojado. En los servicios en la nube, generalmente es más eficiente colocar una base de datos con mayor tráfico en su base de datos alojada porque estos servidores están optimizados para bases de datos.

Si la aplicación web está en fase y utiliza Sesiones de Servlet, entonces se necesita la agrupación para hacer que la aplicación escale más allá de un solo servidor.

Agrupación de sesiones con una base de datos

Debido a las complejidades del alojamiento de aplicaciones Java en servidores, podría ser una mejor idea utilizar una Plataforma Java como Servicio (PaaS) en su lugar. Uno sería OpenShift, que está optimizado para aplicaciones JBoss, pero también puede ejecutar aplicaciones desarrolladas por Jetty. Si bien Heroku es popular para todo tipo de aplicaciones, no está especialmente optimizado para Java. En cambio, necesita una aplicación main() que incruste e inicie Jetty.