Conhecendo o Payara Micro.
Neste post vamos conhecer um pouco sobre o Payara Micro para desenvolver aplicações modernas com Java EE / Jakarta EE .
Introdução ao Payara Micro
Payara Micro é uma plataforma de middleware de código aberto criada a partir do lançamento do Payara Embedded Web para implementações de microsserviços Java EE (Jakarta EE) em container.
Com menos de 70 MB de tamanho, a Payara Micro não requer instalação ou configuração e não precisa de regravação de código — para que você possa criar e implantar um aplicativo totalmente funcional em poucos minutos.
Compatível com o Eclipse MicroProfile, o Payara Micro é uma versão pronta para microservices do Payara Server. Você pode executar arquivos war a partir da linha de comandos sem qualquer instalação do servidor de aplicativos. O cluster automático e elástico torna a Payara Micro ideal para executar aplicativos Java EE em uma infraestrutura virtualizada moderna.
Além das api do MicroProfile 1.2 :
- JAX-RS 2.0
- CDI 2 (updated 1.2 → 2)
- JSON-P 1.0
- Annotation 1.2
- Microprofile Config 1.1
- Microprofile Fault Tolerance 1.0
- Microprofile Health 1.0
- Microprofile Metrics 1.0
- Microprofile JWT Propagation 1.0
Payara micro tambem suporta as api do Java EE como :
- Servlets, JSTL, EL and JSPs
- WebSockets
- JSF
- JAX-RS
- EJB lite
- JTA
- JPA
- Bean Validation
- CDI
- Interceptors
- JBatch
- Concurrency
- JCache
- JCA
- e muito mais.
Bem feita essa rápida introdução sobre o Payara Micro, vamos para a parte legal, a prática .
Requisitos
Para podemos utilizar a versao mais recente do Payara Micro, precisamos atualizar o nosso JDK para a versão 8u162 ou maior, devido a uma restrição na versão mais recente do Grizzly .
Feita essa atulização,podemos fazer o download o Payara micro aqui ou podemos fazer o uso de uma imagem docker .
Criando uma instancia
Para criar uma instancia do Payara Micro basta passar o seguinte comando :
java -jar payara-micro-5.181.jar
com esse único comando você tem um micro servidor rodando conforme a imagem :
Deploy das Aplicações
Para realizamos o deploy das nossas aplicações Java EE/Jakarta EE tambem é muito simples conforme o comando abaixo :
java -jar payara-micro-5.181.jar — deploy caminhoDoMeuWAR
aqui o comando “ — deploy” é opcional, desde a versão 4.1.2.181 e 5.181.
vejamos um exemplo de deploy de um app em Servlet :
java -jar payara-micro-5.181.jar demoServlet.war
após executar o comando, o micro servidor ira fazer o deploy do nosso demoServlet.war e no final ira exibir a url para acessar o recurso, que no caso seria , agora abra o url no browser e adicione ao final da url o caminho para chamar o servlet: “http://192.168.1.6/demoServlet/HelloPayaraMicro :
Além disso podemos fazer deploy de multiplos war dentro do Payara Micro com o seguinte comando :
java -jar payara-micro-5.181.jar demoServlet.war demoServlet2.war
agora temos duas Servlet rodando no Payara Micro, porem existe uma outra forma de fazer isso de maneira mais rapida, que seria criar um novo diretorio e dentro dele adicionar todos os war e em seguinda utilizar o seguinte comando :
java -jar payara-micro-5.181.jar — deploymentDir /localDasWAR
Gerando Uber Jar
È possivel tambem com o Payara Micro gerar um jar executavel pela linha de comando, desta forma podemos empacotar o aplicativo (ou aplicativos), configuração e dependências em um único jar com o seguinte comando :
java -jar payara-micro-5.181.jar demoServlet.war — outputUberJar demoServlet.jar
e em seguida executar o comando :
java -jar demoServlet.jar
Clustering no Payara Micro
O Payara Micro Cluster é baseado no Hazelcast, similarmente ao clustering da Hazelcast no Payara Server. Cada nó em um cluster da Payara Micro é efetivamente um nó Hazelcast.
Isso facilita a escalabilidade da infraestrutura para nossos aplicativos dinamicamente, sem nenhuma configuração complexa ou tempo de inatividade.
A integração da Hazelcast na Payara Micro permite que as instâncias se agrupem automáticamente e dinamicamente. Quando duas instâncias são apontadas no mesmo endereço e porta multicast, elas serão automaticamente agrupadas.
Vejamos um exemplo de executação de 2 instancias do Payara Micro em porta diferentes :
java -jar payara-micro-5.181.jar demoServlet.war — autoBindHttp
a opçao “ — autoBindHttp” é usado para obter diferente configuração de porta, ou seja, quando executarmo duas vezes o comando acima teremos 2 instancias do Payara Micro com o mesmo endereço IP porem com porta diferentes, algo como 8080,8081… .
após a execução em um dos terminal vai esta conforme a imagem abaixo :
pronto temos nossas aplicações em modo cluster, em nosso caso, ele se juntou ao Domain Data Grid que é o novo modo de descoberta para o Payara Micro e Payara Server, você pode aprender um pouco mais sobre o mesmo nesse artigo .
Payara Micro Maven Plugin
Para finalizar, iremos ver como podemos executar e gerar um Uber Jar com o plugin do Maven .
Crie um novo projeto com o seguinte conteúdo no pom.xml:
para mais detalhes sobre o que cada tag representa, acessa o link da documentação.
Para executar faça o seguinte :
mvn clean package payara-micro:bundle && mvn payara-micro:start
feito isso sua aplicação estará em execução escutando a porta 8080 que é a padrão.
Bem isso é tudo, espero que os leitores tenham gostado de conhecer um pouco sobre Payara Micro como alternativa light a servidores de aplicação full como Payara Server/GlassFish ,etc .
código de exemplo no meu github .
voce pode aprender mais nos seguintes links :
- https://blog.payara.fish/getting-started-with-payara-micro-5-demo
- https://blog.payara.fish/demystifying-microservices-for-java-ee-developers-new-guide-now-available
- https://blog.payara.fish/event-driven-microservices-with-payara-micro-blog
- https://github.com/SouJava-Rio/soujava-rio-labs/tree/master/microprofile/payara-micro
- https://github.com/payara/Payara-Examples