{"id":2073,"date":"2023-12-01T18:27:15","date_gmt":"2023-12-01T21:27:15","guid":{"rendered":"https:\/\/stackcodelab.com\/blog\/?p=2073"},"modified":"2023-12-01T18:28:18","modified_gmt":"2023-12-01T21:28:18","slug":"capitulo-15-despliegue-de-aplicaciones-java","status":"publish","type":"post","link":"https:\/\/stackcodelab.com\/blog\/capitulo-15-despliegue-de-aplicaciones-java\/","title":{"rendered":"Cap\u00edtulo 15: Despliegue de Aplicaciones Java"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">El despliegue de aplicaciones Java es un paso crucial en el ciclo de desarrollo de software. En este cap\u00edtulo, exploraremos los diferentes aspectos del despliegue de aplicaciones Java, desde la creaci\u00f3n de archivos JAR y WAR hasta la implementaci\u00f3n en servidores de aplicaciones. Proporcionaremos ejemplos y ejercicios para que los lectores practiquen y profundicen en su comprensi\u00f3n de este proceso.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>15.1 Archivos JAR<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los archivos JAR (Java Archive) son contenedores de archivos que almacenan clases Java y recursos. Son ampliamente utilizados para distribuir bibliotecas y aplicaciones independientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de creaci\u00f3n de un archivo JAR:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que tienes un conjunto de clases en un directorio llamado&nbsp;<code>mi_aplicacion<\/code>. Para crear un archivo JAR, puedes ejecutar el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jar cf mi_aplicacion.jar -C mi_aplicacion <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando empaqueta todas las clases y recursos en un archivo JAR llamado\u00a0<code>mi_aplicacion.jar<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio:<\/strong> Crea un archivo JAR que contenga varias clases y recursos, y luego ejecuta una aplicaci\u00f3n desde ese archivo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>15.2 Archivos WAR<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los archivos WAR (Web Application Archive) son utilizados para empacar aplicaciones web Java que se ejecutan en servidores de aplicaciones web como Tomcat o Jetty.<strong><br><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de creaci\u00f3n de un archivo WAR:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Supongamos que tienes una estructura de directorios que contiene tu aplicaci\u00f3n web. Puedes crear un archivo WAR ejecutando el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>jar cf mi_aplicacion.war -C directorio_de_aplicacion <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este comando empaqueta todos los archivos y directorios en un archivo WAR llamado&nbsp;<code>mi_aplicacion.war<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio:<\/strong>&nbsp;Crea un archivo WAR que contenga una aplicaci\u00f3n web simple y despli\u00e9gala en un servidor web de tu elecci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear un archivo WAR que contenga una aplicaci\u00f3n web simple y desplegarla en un servidor web, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 1: Estructura de directorios<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crea una estructura de directorios para tu aplicaci\u00f3n web. Deber\u00eda contener al menos los siguientes elementos:<ul><li><code>WEB-INF\/<\/code>&nbsp;(un directorio que debe contener el archivo&nbsp;<code>web.xml<\/code>)<\/li><\/ul><ul><li><code>WEB-INF\/web.xml<\/code>&nbsp;(archivo de configuraci\u00f3n de la aplicaci\u00f3n web)<\/li><\/ul><ul><li><code>index.html<\/code>&nbsp;(una p\u00e1gina HTML simple)<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Clases Java que forman parte de tu aplicaci\u00f3n (si es necesario).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 2: Configuraci\u00f3n del archivo&nbsp;<code>web.xml<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>El archivo&nbsp;<code>web.xml<\/code>&nbsp;es el archivo de configuraci\u00f3n de la aplicaci\u00f3n web. Aqu\u00ed puedes definir servlets, filtros, mapeos y otras configuraciones. A continuaci\u00f3n, se muestra un ejemplo simple de&nbsp;<code>web.xml<\/code>&nbsp;para una aplicaci\u00f3n que muestra la p\u00e1gina&nbsp;<code>index.html<\/code>:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n&lt;web-app xmlns=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\"\r\n         xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n         xsi:schemaLocation=\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\/web-app_4_0.xsd\"\r\n         version=\"4.0\">\r\n\r\n    &lt;display-name>Mi Aplicaci\u00f3n Web&lt;\/display-name>\r\n    \r\n    &lt;welcome-file-list>\r\n        &lt;welcome-file>index.html&lt;\/welcome-file>\r\n    &lt;\/welcome-file-list>\r\n&lt;\/web-app>\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 3: Empaquetar la aplicaci\u00f3n en un archivo WAR<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Usa tu herramienta de construcci\u00f3n favorita (por ejemplo, Maven o Gradle) o simplemente crea manualmente un archivo WAR. Aseg\u00farate de incluir todos los archivos y directorios necesarios en la estructura del archivo WAR.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 4: Desplegar en un servidor web<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Copia el archivo WAR que creaste en el directorio de despliegue de tu servidor web. La ubicaci\u00f3n del directorio de despliegue puede variar seg\u00fan el servidor que est\u00e9s utilizando. Por ejemplo, en Apache Tomcat, el directorio de despliegue suele ser&nbsp;<code>webapps<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 5: Iniciar el servidor web<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Inicia tu servidor web. Dependiendo del servidor que elijas, puedes hacerlo de diferentes formas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 6: Acceder a la aplicaci\u00f3n<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que el servidor web est\u00e9 en funcionamiento, abre un navegador web y accede a la URL donde se encuentra tu aplicaci\u00f3n. Por ejemplo, si est\u00e1s utilizando Tomcat de forma local, puedes acceder a&nbsp;<code>http:\/\/localhost:8080\/nombre_de_la_aplicacion<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Eso es todo. Tu aplicaci\u00f3n web simple deber\u00eda estar ahora desplegada y accesible a trav\u00e9s del servidor web que hayas elegido. Aseg\u00farate de ajustar la configuraci\u00f3n y la estructura de directorios seg\u00fan tus necesidades espec\u00edficas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>15.3 Despliegue en Servidores de Aplicaciones<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para desplegar una aplicaci\u00f3n Java en un servidor de aplicaciones, necesitas empaquetarla en un archivo WAR y copiarlo en el directorio de despliegue del servidor. Cada servidor de aplicaciones tiene su propio proceso de despliegue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de despliegue en Tomcat:<\/strong><\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Crea un archivo WAR de tu aplicaci\u00f3n.<\/li>\n\n\n\n<li>Copia el archivo WAR en el directorio&nbsp;<code>webapps<\/code>&nbsp;de Tomcat.<\/li>\n\n\n\n<li>Inicia Tomcat.<\/li>\n\n\n\n<li>La aplicaci\u00f3n estar\u00e1 disponible en&nbsp;<code>http:\/\/localhost:8080\/nombre_de_la_aplicacion<\/code>.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio:<\/strong>&nbsp;Despliega una aplicaci\u00f3n web Java en un servidor de aplicaciones de tu elecci\u00f3n (puede ser Tomcat, WildFly, GlassFish, etc.).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a>15.4 Contenedores Docker<\/a><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Docker es una plataforma que te permite empaquetar una aplicaci\u00f3n y todas sus dependencias en un contenedor, que puede ejecutarse en cualquier entorno que admita Docker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejemplo de creaci\u00f3n de una imagen Docker:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes crear un archivo Dockerfile para definir c\u00f3mo se construir\u00e1 la imagen Docker de tu aplicaci\u00f3n. Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FROM openjdk:11\r\nCOPY mi_aplicacion.jar \/app\/mi_aplicacion.jar\r\nCMD &#91;\"java\", \"-jar\", \"\/app\/mi_aplicacion.jar\"]\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Luego, puedes construir la imagen con el siguiente comando: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t mi_aplicacion:1.0 <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Ejercicio:<\/strong> Crea una imagen Docker para tu aplicaci\u00f3n Java y ejec\u00fatala en un contenedor Docker.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para crear una imagen Docker para tu aplicaci\u00f3n Java y ejecutarla en un contenedor Docker, sigue estos pasos:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 1: Preparaci\u00f3n de la aplicaci\u00f3n<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aseg\u00farate de que tu aplicaci\u00f3n Java est\u00e9 lista y funcionando correctamente. Deber\u00edas tener un archivo JAR o WAR que contenga tu aplicaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 2: Creaci\u00f3n de un archivo Dockerfile<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Crea un archivo llamado <code>Dockerfile <\/code>(sin extensi\u00f3n) en el directorio de tu aplicaci\u00f3n. Este archivo se utilizar\u00e1 para construir la imagen Docker. Aqu\u00ed tienes un ejemplo b\u00e1sico de un Dockerfile para una aplicaci\u00f3n Java:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Usa una imagen base de Java\r\nFROM openjdk:11\r\n\r\n# Copia el archivo JAR o WAR de tu aplicaci\u00f3n al contenedor\r\nCOPY mi_aplicacion.jar \/app\/mi_aplicacion.jar\r\n\r\n# Establece el directorio de trabajo dentro del contenedor\r\nWORKDIR \/app\r\n\r\n# Comando para ejecutar la aplicaci\u00f3n cuando se inicie el contenedor\r\nCMD &#91;\"java\", \"-jar\", \"mi_aplicacion.jar\"]\r<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, se utiliza una imagen base de Java 11 y se copia el archivo JAR de la aplicaci\u00f3n al directorio&nbsp;<code>\/app<\/code>&nbsp;en el contenedor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 3: Construcci\u00f3n de la imagen Docker<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abre una terminal y navega al directorio que contiene el Dockerfile y tu aplicaci\u00f3n. Ejecuta el siguiente comando para construir la imagen Docker. Reemplaza&nbsp;<code>nombre_de_la_imagen<\/code>&nbsp;con el nombre que desees para tu imagen y&nbsp;<code>versi\u00f3n<\/code>&nbsp;con la versi\u00f3n de tu aplicaci\u00f3n:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t nombre_de_la_imagen:versi\u00f3n <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>docker build -t mi_aplicacion:1.0 <\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 4: Ejecuci\u00f3n del contenedor Docker<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que se haya construido la imagen Docker, puedes ejecutar un contenedor con la aplicaci\u00f3n utilizando el siguiente comando. Aseg\u00farate de reemplazar <code>nombre_de_la_imagen:versi\u00f3n<\/code> con el nombre y la versi\u00f3n que hayas elegido:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>docker run -d -p 8080:8080 nombre_de_la_imagen:versi\u00f3n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El argumento&nbsp;<code>-d<\/code>&nbsp;inicia el contenedor en segundo plano, y&nbsp;<code>-p<\/code>&nbsp;mapea el puerto del contenedor al puerto del host. En este ejemplo, el contenedor escuchar\u00e1 en el puerto 8080.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Paso 5: Acceso a la aplicaci\u00f3n<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Una vez que el contenedor est\u00e9 en ejecuci\u00f3n, puedes acceder a tu aplicaci\u00f3n Java en tu navegador web utilizando la direcci\u00f3n&nbsp;<code>http:\/\/localhost:8080<\/code>&nbsp;(o el puerto que hayas especificado en el mapeo de puertos).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Eso es todo! Tu aplicaci\u00f3n Java deber\u00eda estar ahora ejecut\u00e1ndose en un contenedor Docker. Puedes personalizar m\u00e1s tu Dockerfile seg\u00fan las necesidades espec\u00edficas de tu aplicaci\u00f3n. El despliegue de aplicaciones Java es un proceso esencial en el desarrollo de software. Aseg\u00farate de comprender c\u00f3mo empaquetar tu aplicaci\u00f3n en archivos JAR o WAR y c\u00f3mo desplegarla en servidores de aplicaciones o contenedores Docker. Practicar estos conceptos te ayudar\u00e1 a tener \u00e9xito en tus proyectos de desarrollo de Java.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>El despliegue de aplicaciones Java es un paso crucial en el ciclo de desarrollo de software. En este cap\u00edtulo, exploraremos los diferentes aspectos del despliegue de aplicaciones Java, desde la creaci\u00f3n de archivos JAR y WAR hasta la implementaci\u00f3n en servidores de aplicaciones. Proporcionaremos ejemplos y ejercicios para que los lectores practiquen y profundicen en [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2074,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[40],"tags":[49],"class_list":["post-2073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java-y-otras-hierbas","tag-despliegue-de-aplicaciones-java"],"uagb_featured_image_src":{"full":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java.jpg",1000,667,false],"thumbnail":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java-150x150.jpg",150,150,true],"medium":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java-300x200.jpg",300,200,true],"medium_large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java-768x512.jpg",768,512,true],"large":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java.jpg",1000,667,false],"1536x1536":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java.jpg",1000,667,false],"2048x2048":["https:\/\/stackcodelab.com\/blog\/wp-content\/uploads\/2023\/12\/Despliegue-de-Aplicaciones-Java.jpg",1000,667,false]},"uagb_author_info":{"display_name":"arquitecto","author_link":"https:\/\/stackcodelab.com\/blog\/author\/arquitecto\/"},"uagb_comment_info":0,"uagb_excerpt":"El despliegue de aplicaciones Java es un paso crucial en el ciclo de desarrollo de software. En este cap\u00edtulo, exploraremos los diferentes aspectos del despliegue de aplicaciones Java, desde la creaci\u00f3n de archivos JAR y WAR hasta la implementaci\u00f3n en servidores de aplicaciones. Proporcionaremos ejemplos y ejercicios para que los lectores practiquen y profundicen en&hellip;","_links":{"self":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/comments?post=2073"}],"version-history":[{"count":1,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2073\/revisions"}],"predecessor-version":[{"id":2075,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/posts\/2073\/revisions\/2075"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media\/2074"}],"wp:attachment":[{"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/media?parent=2073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/categories?post=2073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stackcodelab.com\/blog\/wp-json\/wp\/v2\/tags?post=2073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}