Skip to content

offline0x33/Biblioteca

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Biblioteca
JakartaEE 10


github github Release Date

Introdução

Este repositório GitHub apresenta um projeto de exemplo abrangente que demonstra a construção de uma aplicação Java EE robusta utilizando Jakarta EE 10 em conjunto com containers Docker. A aplicação é composta por:

  • Servidor de Aplicação: WildFly, um servidor de aplicação Jakarta EE de alto desempenho, gerenciado em um contêiner Docker.
  • Banco de Dados: MySQL 8, um sistema de gerenciamento de banco de dados relacional popular, também executado em seu próprio contêiner Docker.
  • API REST: Uma API RESTful desenvolvida com Jakarta EE para fornecer acesso remoto às funcionalidades do negócio da aplicação. Tecnologias Empregadas

O projeto é estruturado com as seguintes tecnologias:

  • Jakarta EE 10: A plataforma de desenvolvimento Java para aplicações enterprise, oferecendo recursos avançados como CDI, JPA, EJB e JAX-RS.
  • WildFly: Um servidor de aplicação Jakarta EE leve e modular, ideal para ambientes de produção e desenvolvimento.
  • MySQL 8: Um SGBD relacional confiável e escalável, com suporte a diversas funcionalidades e alto desempenho.
  • Docker: Uma plataforma de containerização que simplifica a implantação e o gerenciamento de aplicações em ambientes distribuídos.
  • Maven: Uma ferramenta de gerenciamento de projeto e construção que facilita o desenvolvimento e a entrega de aplicações Java.

Funcionalidades Chave

O projeto oferece diversas funcionalidades:

  • Acesso a Dados: A API REST permite consultar, inserir, atualizar e excluir dados no banco de dados MySQL 8 de forma segura e eficiente.
  • Autenticação e Autorização: A aplicação implementa mecanismos de autenticação e autorização para garantir o acesso controlado aos recursos.
  • Validação de Dados: A API valida os dados recebidos nas requisições para garantir a integridade e confiabilidade das informações.
  • Gerenciamento de Erros: A aplicação manipula erros de forma robusta, fornecendo mensagens de erro descritivas para facilitar a depuração.
  • Documentação: A API REST é documentada com Swagger, permitindo que os desenvolvedores explorem e integrem facilmente os recursos da aplicação.
--docker
 |
  --Dockerfile

    /**
     * contem informações relacionadas ao usuario e password para acessar a 
     * aplicação bean remota.
    */
  --application-user.properties 

    /**
     * tem dados para levantar os containers necessários para funcionamento 
     * da aplicação, nesse caso especifico são dois um com wildfly e outro 
     * com banco de dados mysql.
    */
  --docker-composer.yml

    /** 
     * é referenciado pelo docker-compose para criação das tabelas no banco 
     * de dados.
    */
  --init.sql

    /** 
     * é responsavel por carregar o modulo mysql-coonector-java-8.1.0.jar no 
     * servidor wildfly
    */
    --module.xml
  --mysql-coonector-java-8.1.0.jar

    // são as configurações do wildfly.
  --standalone.xml

Requisitos/Opcionais

docker docker-compose maven netbeans openjdk/jdk junit5

Depedencias maven

       <dependencies>
        <dependency>
            <groupId>jakarta.platform</groupId>
            <artifactId>jakarta.jakartaee-api</artifactId>
            <version>10.0.0</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest</artifactId>
            <version>2.2</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.immutables</groupId>
            <artifactId>value</artifactId>
            <version>2.10.1</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.12.5</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.12.5</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId>
            <version>0.12.5</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-crypto</artifactId>
            <version>6.2.4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>6.2.5</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.jboss</groupId>
            <artifactId>jboss-dmr</artifactId>
            <version>1.7.0.Final</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.wildfly.core</groupId>
            <artifactId>wildfly-controller-client</artifactId>
            <version>25.0.0.Beta4</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.eclipse.microprofile.jwt</groupId>
            <artifactId>microprofile-jwt-auth-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.eclipse.microprofile.config</groupId>
            <artifactId>microprofile-config-api</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <!-- Logging for your Application -->
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>5.11.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <version>5.12.0</version>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate.orm</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.5.2.Final</version>
        </dependency>
        <dependency>
            <groupId>jakarta.persistence</groupId>
            <artifactId>jakarta.persistence-api</artifactId>
            <version>3.2.0</version>
            <scope>test</scope> 
        </dependency>
        <dependency>
            <groupId>org.hsqldb</groupId>
            <artifactId>hsqldb</artifactId>
            <version>2.7.3</version>
            <scope>test</scope> 
        </dependency>
        <!-- Test Cucumber -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>7.18.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>7.18.1</version>
            <scope>test</scope>
        </dependency>
        <!-- Test JUnit -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.10.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-params</artifactId>
            <version>5.10.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>5.10.3</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <!-- Outras dependências -->
            <dependency>
                <groupId>org.wildfly.bom</groupId>
                <artifactId>wildfly-microprofile</artifactId>
                <version>32.0.1.Final</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
  • Um simples inicio

execute start.sh no linux.

#!/bin/bash

mvn clean package

cd $HOME/NetBeansProjects/Biblioteca/docker

yes | sudo rm -R db

yes | cp $HOME/NetBeansProjects/Biblioteca/target/biblioteca-1.0-SNAPSHOT.war $HOME/NetBeansProjects/Biblioteca/docker

docker-compose down --rmi all
docker build --build-arg jdk=22 --tag=jboss/wildfly-admin . 
docker-compose up --remove-orphans

Referências

Releases

No releases published

Packages

No packages published

Languages