Spring vulnerabilidade.

Após alguns dias da divulgação da vulnerabilidade Java no Log4JShell, foi agora divulgado uma vulnerabilidade dentro do spring framework.

A vulnerabilidade no Spring permite a execução remota da aplicação já está sendo chamado de Spring4Shell.

Basicamente a vulnerabilidade explora uma classe que permite criar um arquivo jsp que permite acesso ao invasor.

O problema é explorado a partir de combinações com Jdk 9 ou superior, Tomcat 10.0.19, 9.0.61, 8.5.78 ou inferior, Spring framework 5.3.0 até 5.3.17 ou 5.2.0 até 5.2.19.

Uma observação é que o ataque somente é explorado em pacotes war, os pacotes jar estão fora dessa vulnerabilidade.

Recall.

Para corrigir essa vulnerabilidade, principalmente quem tem a combinação dita no tópico anterior é seguir algumas das alterações.

Fazer downgrade para versão Jdk 8, apesar de não ser muito recomendado.

Fazer upgrade do Spring framework para as versões 5.2.20 ou 5.3.18 ou superior, o que pode ser recomendado para todos independentemente da combinação de stack.

Atualizar o Tomcat para versões diferentes de 10.0.20, 9.0.62, ou 8.5.78 para quem usa Tomcat como servidor de aplicação.

Outra opção mas um pouco invasiva é adicionar anotações de proteção nos códigos ou gerar pacotes jar no lugar dos pacotes war.

Conclusão.

Para evitar qualquer tipo de dor de cabeça nas suas aplicações, verifique se existe a combinação de stack e faça as correções, mas seria interessante independente da stack, fazer a atualização do Spring framework.

Link

Spring Webflux.

O Spring Webflux é uma lib do ecossistema Spring para programação reativa.

A programação reativa para Java é uma ótima opção para quem quer uma aplicação não blocante.

Para atender as requisições assíncronas, o Webflux utiliza o servidor Netty que vem embarcado com a lib.

Diferente da programação síncrona, a programação não blocante consegue atender várias requisições simultaneamente.

Mas para que o sistema atenda às requisições simultaneamente, toda infraestrutura precisa ser não blocante.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/2021/webflux.html.

Link

Spring + JMS embarcado.

Nesse Post vamos demonstrar um pequeno exemplo utilizando Spring com fila JMS embarcado.

Com 3 classes podemos implementar um modelo de fila JMS e ActiveMQ embarcado de forma simples.

Utilizar a tecnologia JMS pode resolver vários problemas de acoplamento e ser agnóstico a diferentes tecnologias.

Esse modelo de fila embarcada pode ajudar em algumas soluções onde se precisa tratamento de chamadas assíncronas.

Outra vantagem deste modelo é que não existe a necessidade de configurar uma infraestrutura para tratamento de filas.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/springQueue.html.

Citação

WS Soap client Java.

Vamos criar um cliente para consumir uma web service Soap utilizando Java e Spring boot.

No Post anterior criamos um servidor web service Soap utilizando Java, Apache CXF e Spring boot.

No consumo de uma web service Soap não utilizaremos o Apache CXF, podemos mapear todo wsdl utilizando as bibliotecas Spring.

Um pouco mais trabalhoso que o consumo de uma web service Rest, pois o consumo de um Soap depende de um contrato wsdl.

O contrato wsdl também vai nos ajudar a mapear os objetos de entrada e saída da aplicação.

Acesse o tutorial completo em: https://nakatech.herokuapp.com/article/clientSoap.html.

Link

Aplicações com Caching utilizando Spring.

pexels-photo-577585.jpeg

Aplicações com Cache melhoram a performance de aplicações distribuídas.  Quando existe uma solução com uma arquitetura cliente servidor com uma demanda muito grande de requisições de consulta o cache pode ajudar a diminuir o custo com acesso a banco de dados.

As consultas no Banco de dados são muito caras, pois consomem muito I/O e uma solução para isso é “cachear” as consultas.

Existem algumas observações que podem fazer com que não viabilize a utilização de cache na aplicação:

  • Servidores balanceados: quando existe um balanceador de aplicação, o cacheamento fica mais complicado de ser configurado na aplicação e acaba sendo mais funcional utilizar um cacheamento de Proxy.
  • Grande número de atualização: quando existe uma grande quantidade de atualização dos dados, os mesmos são modificados com tanta  frequência que não compensa guardar em cache.

Para ver o artigo completo acesse: http://nakatech.herokuapp.com/article/cache.html

 

Citação

Aplicações com fila MQTT.

startup-photos.jpg

O Mqtt é um protocolo de comunicação leve baseado em fila ou topologia publish/subscribe.

Por ser uma comunicação mais leve que a tradicional Mq, o Mqtt é muito utilizado em comunicação entre dispositivos de iot como Raspberry, orangePi, Arduino, Nodemcu, beeagleboard entre outros.

O processo do protocolo Mqtt é dependente de um servidor Mqtt ou mais conhecido como Broker Mqtt, onde existem tópicos para entrada e saída de dados.
Tópico são como endpoints, onde os clientes se conectam a eles e podem enviar e receber mensagens.

Diferente da tradicional fila Mq onde precisamos fazer toda configuração da fila como queue manager e Channel na camada de infraestrutura (Servidor), na fila Mqtt toda configuração é feita na aplicação, com exceção da URL do servidor.

Para ver o artigo completo acesse http://nakatech.herokuapp.com/article/mqtt.html

Citação

Crie uma aplicação Back-End e Front-End Rest em 10 minutos.

pexels-photo-177598.jpeg

No último Post falamos um pouco sobre React e como é simples criar uma aplicação Front-end sem integração.

Nesse Post vamos fazer algo mais elaborado, criando uma aplicação Front-end React consumindo de um Back-end um serviço Rest feito em Spring Boot.

Também vamos falar um pouco sobre CORS(Cross-Origin Resource Sharing).

A ideia é mostrar como é rápido criar uma aplicação com duas camadas com as ferramentas certas.

Não vamos discutir aqui se React é melhor que o Angular para desenvolvimento da camada de Front-end nessa aplicação.

Para ver o tutorial completo acesse http://nakatech.herokuapp.com/article/reactSpring.html.