Saltar al contenido

Implementar el archivo WAR en Tomcat of Spring Boot y Angular App

Anduvimos buscando por distintos espacios y de este modo brindarte la solución para tu dilema, si continúas con inquietudes deja la inquietud y contestamos porque estamos para servirte.

Solución:

Paso 1: crear compilación para Angular

Desde la estructura del proyecto compartido, parece que tiene tanto el código de backend como el de frontend en las mismas ubicaciones. La forma ideal es crear el build / artficates para el angular que crea la carpeta dist dentro de su dictornar angular que consiste en sus activos de UI. Para crear el mismo, puede presionar los siguientes comandos según su entorno y configuraciones

ng build --configuration=
ng build --prod

Paso 2: Integrar la interfaz de usuario con Spring Boot

Entonces puede crear los nombres de una carpeta static dentro de src / main / resources y pegue los activos de la interfaz de usuario (archivos dentro de la carpeta dist) dentro de este static carpeta.

Paso 3: Configuraciones de implementación

Paso 1: Cambie la opción de embalaje a guerra en pom.xml

war

Paso 2: se extiende SpringBootServletInitializer

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * This is a helper Java class that provides an alternative to creating a @code web.xml.
 * This will be invoked only when the application is deployed to a Servlet container like Tomcat, JBoss etc.
 */
public class ApplicationWebXml extends SpringBootServletInitializer 

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application)        
        return application.sources(ApplicationApp.class);
    

Paso 3: Crear GUERRA expediente

mvn clean install 

¡Y ahí vamos! Podemos acceder a los puntos finales en

http://localhost:8080/context-path/endpoint OR
http://localhost:8080/war-filename/endpoint

También podemos crear el perfil para war como a continuación


    3.2.3


     
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
        
            
                
                    org.apache.maven.plugins
                    maven-war-plugin
                    $maven-war-plugin.version
                    
                        
                            
                                war
                            
                            package
                        
                    
                    
                        WEB-INF/**,META-INF/**
                        false
                        target/classes/static/
                        
                            
                                src/main/webapp
                                
                                    WEB-INF/**
                                
                            
                        
                    
                
            
        
    


    
        
            war
            
                
                    
                        org.apache.maven.plugins
                        maven-war-plugin
                    
                
            
        
    

Podría ser útil

Implementar WAR en Tomcat (Spring Boot + Angular)

Es posible agrupar todo en una guerra, pero lo veo más conveniente no poner diferentes aplicaciones (backend war y frontend dist content) mixed juntos como un lío, donde ambos ya estamos viendo qué parte responde y dónde.

Más fácil, mucho más fácil en realidad, es aplicar la siguiente configuración:

  
         ...
          
    

donde el Content la etiqueta dice dónde vive la interfaz. Frontend en angular, por brillante que parezca, es un static página para Tomcat como servidor. El backend, que es Java supongo, seguramente necesita activamente un servidor y tiene que ser servido desde la guerra.

Con el docBase dado, el contenido dist se copia y pega manualmente en /home/stuff carpeta y se muestra en http: // localhost: 8080 /static/ sendero. No debería necesitar index.html después de la barra, pero si por alguna razón lo necesita, simplemente agréguelo. Estos valores de ubicación y ruta del archivo se pueden configurar libremente a su gusto. También vale la pena mencionar que otras partes de la configuración solo ilustran la ubicación en el archivo de configuración.

El archivo de configuración utilizado es el de Tomcat. server.xml expediente.

Las rutas de la aplicación de backend que se implementan se pueden ver en la consola de administración de Tomcat.

Fuentes:

[1] https://www.moreofless.co.uk/static-contenido-páginas-web-imágenes-tomcat-outside-war /

Todos los pasos que hiciste como dijo Patel Romil son correctos. El único error que estás cometiendo es llamar a la API en la interfaz. No agregue ninguna ruta de contexto en la URL como agregó en application.properties.

Si su archivo WAR se implementó en la ruta wabITSpring entonces su URL será así en index.html

var cfgApiBaseUrl = "https://localhost:8080/wabITSpring/" 

A su aplicación no le importa la ruta de contexto y no tendrá ninguna referencia a ella. Si su controlador define una ruta de / products, Tomcat lo servirá en / wabITSpring / products.

 var cfgApiBaseUrl = "https://localhost:8080/wabITSpring/products" 

Haga esto y su aplicación se ejecutará correctamente.

Acuérdate de que tienes permiso de esclarecer tu experiencia si te ayudó.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *