Java
Criando um projeto WS JSON Java/Spring – Parte 2

Neste artigo irei explanar como criar um projeto de Servidor Json Java Spring.

O objetivo deste artigo, é documentar os passos necessários que eu utilizei para fazer.

Sou novo neste negócio, por isso, tudo o que desenvolvo, acabo documentando para tentar mapear, e posteriormente não perder.

Talvez não sirva para você.Porem como os passos sempre são semelhantes, a maior chance, é que minhas dificuldades enfrentadas tambem sejam as suas.]

Boa Sorte!

Configurando o Intellij

Configurando o pom.xml

Entre no seu projeto, e configure o arquivo pom.xml. Irei apresentar um modelo, que peço que se baseia, porem dependendo das características do seu projeto, este pode mudas.

<?xml version="1.0" encoding="UTF-8"?>
<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 http://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>3.1.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.comlink</groupId>
    <artifactId>SacDigital</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>19</maven.compiler.source>
        <maven.compiler.target>19</maven.compiler.target>
        <spring-boot.version>2.5.3</spring-boot.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

Não copie o fonte, verifiqueas dependency, plugin, parent, properties.

Criando servico em porta especifica

Em resources, crie o arquivo application.properties,

server.port=8081

Criando Perfil de application

Vá em resources , crie um novo file:

  • application-development.properties
  • application-production.properties

Em application.properties, inclua a seguinte diretiva

spring.profiles.active=development

Tanto no development como production,inclua os seguintes códigos:

spring.application.name=Servidor de SACDigital Producao
server.port=8088

Na classe onde usa spring, verifique se possui os seguintes imports.

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

Por fim, o código pode ser visto no seguinte GITHUB:

https://github.com/marcelomaurin/MOCKSD

Exemplo de teste de conexão:

Java
Java sem nutela no Ubuntu – Parte 3

Estarei neste tópico apresentando como integrar linux com JAVA, de forma que possamos utilizar recursos do sistema operacional de forma que possamos ganhar maior agilidade.

Porque usar o SO

É interessante criar rotinas integráveis para o sistema operacional para ganhar agilidade e performace.

Como utilizar?

Podemos chamar aplicações:

  • shell script– Quando queremos agregar operações em lote, exemplo copiar uma pasta.
  • aplicação terceira – Quando queremos aproveitar features especificas da linguagem, exemplo uso de python para IA.

Quando não utilizar o SO

Existem muitos motivos para usar, e outros motivos que rejeitam o uso.

O mais importante motivo que rejeita seu uso, é quando queremos criar aplicações que não dependem do SO, podendo ser desacoplada de qualquer plataforma.

Aplicações

Aplicações de infra, necessárias para criação de serviços ou recursos, associados a um dado SO.

Podemos utilizar um serviço por exemplo para criar ambientes automatizados, criando ambientes de forma rápida e automática, replicando o que um operador faria em processos manuais.

Exemplos:

  • Clonagem de banco de dados
  • Copiar arquivos
  • Montagem de Serviços
  • Gestão de recursos do SO
  • Manipulação de containers ou serviços.
  • Gestão de testes integrados, etc

Como chamar aplicações

	public static int ProgExt(String Param01, String Param02)  throws IOException {
		int Resultado = 0;
		System.out.println ("Chamando ProgExt... ");
		Runtime rt = Runtime.getRuntime();
        String[] commandAndArguments = {"/home/mmm/projetos/meuproj/scripts/ScripExt.sh",  Param01, Param02 };
		System.out.println(commandAndArguments);
        try {
			String s;
			System.out.println ("ProgExt- Exec commandAndArguments completo");
			Process p = rt.exec(commandAndArguments);
			p.waitFor();
			Resultado = p.exitValue();
            System.out.println ("ProgExt- exit: " + Resultado);

            p.destroy();
		} catch(Exception ex) {
            ex.printStackTrace();
        }

		return Resultado;
	}

Ao Realizar a chamada o ScriptExt.sh, passamos os parâmetros, conforme o script abaixo:

#!/bin/bash

ORIGEM=$1
DESTINO=$2

PATH=/home/mmm/projetos/meuproj/scripts


echo "Inicio de Log" >  $PATH/logbkp.log
echo "Iniciando copia de arquivo" >>  $PATH/logbkp.log

/usr/bin/cp -r $ORIGEM $DESTINO >>  $PATH/logbkp.log

O modelo deste script, permite capturar pela shell script os parâmetros recebidos do JAVA, realizando tarefas via scripts, permitindo aproveitar o que o JAVA teria maior dificuldade em realizar.

De fato a automação de cópia, não se enquadra em tarefa difícil, porem em um processo didático exemplifica sua prática.

Outro Exemplo seria copia de banco de dados:

#!/bin/bash

#exemplo de teste
#sh -x  ./clonabanco.sh bancoorigem bancodest

PATH=/home/mmm/projetos/meuproj/scripts

echo "Script de replicação de banco"

databaserep=$1

database=$2

output="output.sql"


echo "Log de execucao da operacao de clonagem de banco" >>  $PATH/logbkp.log

echo "Origem:$databaserep" >>  $PATH/logbkp.log
echo "Destino:$database" >>  $PATH/logbkp.log
echo "Data:`/usr/bin/date`" >>  $PATH/logbkp.log



echo "Iniciando criacao de backup " >>  $PATH/logbkp.log
echo `/usr/bin/mysqldump -uroot -pSENHA $databaserep -r $PATH/output.sql` >> $PATH/logbkp.log


echo "Escrevendo script de copia" >>  $PATH/logbkp.log

echo "CREATE DATABASE $database;"> $PATH/copy.sql
echo "use $database" >> $PATH/copy.sql
echo "SOURCE $PATH/output.sql" >> $PATH/copy.sql

echo "Criando a base destino" >>  $PATH/logbkp.log

echo `/usr/bin/mysql -uroot -pSENHA < $PATH/copy.sql` >> $PATH/logbkp.log

echo "Fim de execução " >>  $PATH/logbkp.log


Podemos ver neste script, o uso de técnica de clonagem do banco de dados, permitindo a integração simples com JAVA.

Com este ultimo artigo, encerramos a série de artigos Java sem Nutela no Ubuntu, espero que tenham gostado.

Java
Java sem nutela no Ubuntu

Muitas vezes em C temos que compilar o projeto na mão.

A maioria das linguagens tem essa opção, vou explicar como fazer isso sem IDE de desenvolvimento, usando o VI no java.

Instalação

Para instalar o java vamos chama o terminal

sudo apt install openjdk-17-jdk-headless

Temos agora o ambiente montado, para começar a montar nosso projeto.

Git

git do projeto montado.

https://github.com/marcelomaurin/Java-Hello-World

Criando o Hello World

Criaremos o famoso Hello World, pois existe a lenda que se não criarmos ele no começo, tudo dá errado. Então vamos seguir:

Fonte: hello.java

// Meu primeiro programa
class HelloWorld {
        public static void main(String[] args) {
                System.out.println("Hello, World!");
        }
}

Agora para testar, vamos executar ele direto, executando o script:

java hello.java

Segue o exemplo de sua execução:

Chamando o hello.java

Agora iremos criar o script para compilação:

Arquivo: Makefile

JCC=javac
SOURCE= \
        hello.java

TARGET= HelloWorld

all: compile run

compile:
        $(JCC) $(SOURCE)

run:
        java $(TARGET)

Para compilar, chamamos o make compile, e para executar o make run , conforme figura abaixo:

Debugando o java

Para debugar o fonte temos que compilar o projeto com a opção -g, conforme segue o script do Makefile alterado.

JCC=javac
SOURCE= \
        hello.java

TARGET= HelloWorld

DEBUG= -g

all: compile run

compile:
        $(JCC) $(DEBUG) $(SOURCE)

run:
        java $(TARGET)

O parametro -g, cria os espaços de debug necessários para o debug.

Ao compilar agora, podemos chamar o debug em Java.

O jdb é semelhante ao gdb do C, para executar o mesmo, chamamos o nosso programa conforme exemplo abaixo:

jdb HelloWorld

rodando com Debug

Podemos verificar que o código foi rodado inteiramente, pois não tinhamos breakpoints.

Para incluirmos o break point usamos o comando:

stop in [classe].[metodo]

Para rodar no debug use o comando:

run

Conforme figura abaixo:

Debug pela console

Para continuar usamos o step, e o print mostra a variavel.

Com isso, mostramos as funcionalidades básicas para analisar e rodar uma aplicação Java pelo terminal, sem necessidade de incluir uma IDE.

Espero que tenham gostado, críticas e comentários, fico no aguardo.

maurinsoft.com.br