Conteúdo do item:

Migrando um projeto de JAR para WAR

Como migrar um projeto existente de Spring Boot no formato JAR para o formato WAR

O Spring Boot é recomendado para uso em containers, pelo fato do JAR conter tudo que é necessário para rodar o seu projeto. No caso de projetos que utilizam o framework Web, o Spring Boot tem em seu pacote um servidor WEB embutido, que por padrão é o Tomcat, não sendo necessário nenhum tipo de de instalação para o JAR funcionar.
 
Porém em muitos lugares as empresas fazem a instalação de um servidor web apartado, e para que seu projeto seja instalado nesse servidor é necessário que seja feito uma conversão de Jar para War, nessa conversão desabilitamos o servidor embutido e configuramos o projeto para funcionar em outro padrão.

Atenção: Os testes não funcionaram no TOMCAT 10, tive que fazer um downgrade de versão para o TOMCAT 9.

Primeiro Passo
No pom.xml vamos fazer duas alterações

- Adicionar o packagin war logo depois da tag name
<packaging>war</packaging>

Exemplo:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.6.2</version>
		<relativePath />
		<!-- lookup parent from repository -->
	</parent>
	<groupId>br.com.byiorio</groupId>
	<artifactId>performance_test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>performance_test</name>
	<packaging>war</packaging>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>8</java.version>
	</properties>

....


- Vamos adicionar a dependencia do TOMCAT como provided, com isso o projeto esperará um servidor web durante a instalação

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<scope>provided</scope>
</dependency>


Segundo Passo

- Opção 1 (Recomendada): Criar a classe ServletInitializer no mesmo pacote que a classe principal do projeto, e colocar o código abaixo, alterando o nome da classe no método application.sources(SUACLASSE.class);
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

public class ServletInitializer extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(PerformanceTestApplication.class);
	}

}

- Opção 2 (Plano B): Na classe principal do projeto, onde temos o @SpringBootApplication, e vamos extender a classe SpringBootServletInitializer

@SpringBootApplication
public class PerformanceTestApplication  extends SpringBootServletInitializer {

	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		return application.sources(PerformanceTestApplication.class);
	}
	public static void main(String[] args) {
		SpringApplication.run(PerformanceTestApplication.class, args);
	}

}


Agora basta compilar seu projeto:

[INFO] Packaging webapp
[INFO] Processing war project
[INFO] Building war: \performance_test-main\java\javaCliente\target\performance_test-0.0.1-SNAPSHOT.war

[INFO] --- spring-boot-maven-plugin:2.6.2:repackage (repackage) @ performance_test ---
[INFO] Replacing main artifact with repackaged archive
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  48.825 s
[INFO] Finished at: 2022-01-25T15:16:32-02:00
[INFO] ------------------------------------------------------------------------

migration; jar; war; spring boot; deploy;



Redirecionar para https://www.byiorio.com.br/product/4/item/16