Conhecendo o Payara Micro.

20150906224045
Logo Payara

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 :

START

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

run

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 :

run2

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

run3

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 :

das

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 :

REFERÊNCIAS

Anúncios

Executando sua aplicação Java na Oracle Application Container Cloud Service

cloudgs_appcontainer

Neste post veremos como  utilizar a plataforma de Cloud da Oracle executar nossas aplicações Java no serviço de Application Container .

Obtendo uma Conta Free

Antes de iniciarmos nossa aventura, você vai precisar criar uma conta na Oracle Cloud para poder utilizar os serviços.

Para isso basta acessar o site : http://cloud.oracle.com/ e criar uma conta trial que te dar $300(900 BRL) para testar a plataforma por 30 dias.

trial
http://cloud.oracle.com/

Bastando preencher os campos solicitado e informar o numero do cartão de credito para que o cadastro seja completado, porem não se preocupe que não sera cobrado nada apos o termino dos 30 dias, a menos que optar por fazer upgrade para uma conta paga para continuar a usar os serviços.

Feito o cadastro, basta aguardar um e-mail de boas vindas com as sua credenciais para acesse a plataforma Oracle Cloud , que leva mais ou menos uns 2 dias.

Oracle Application Container Cloud Service

O Oracle Application Container Cloud Service permite que você implemente aplicativos Java SE, Node.js, PHP, Python, Ruby, Go e .NET para Oracle Cloud. Você também pode implantar aplicações Java EE.

A inscrição no Oracle Application Container Cloud Service disponibiliza todos os tipos quando você faz o deploy. Seu aplicativo é executado em um recipiente Docker.

Com tudo esse serviço oferece os seguinte recursos :

  • Um ambiente pré-configurado para aplicativos Java SE, Java EE, Node.js, PHP, Python, Ruby, Go e .NET.
  • Java SE recursos avançados, como Java Flight Recorder, Java Mission Control, gerenciamento avançado de memória e atualizações de segurança.
  • Plataforma aberta que suporta todos os frameworks Java e contêineres, como Spring, Play, Tomcat e Jersey.
  • Suporte para linguagens baseadas em Java Virtual Machine (JVM), como JRuby. Você pode executar qualquer idioma que use o Java Virtual Machine neste serviço.
  • Suporte de nível empresarial da Oracle.
  • Interface de usuário baseada na Web e API REST.

Além disso, você pode optar por se integrar com outros serviços Oracle Cloud. Você pode desenvolver sua aplicação em seu sistema local ou pode usar o Oracle Developer Cloud Service.

Se você quiser armazenar e recuperar dados, você pode usar Oracle Cloud Infrastructure Object Storage Classic – uma assinatura está incluída. Você também pode se inscrever no Oracle Database Cloud Service ou no MySQL Cloud Service.

Para implantar um aplicativo e configurar um banco de dados em uma única etapa, você pode usar o Oracle Cloud Stack Manager.

Para comunicação, você pode se inscrever no Oracle Messaging Cloud Service. Sua aplicação se comunica com esse serviço através da sua API REST, portanto, nenhuma configuração de segurança especial é necessária.

Bem feita essa rápida introdução sobre o serviço, podemos da inicio ao processo de criação de um app e logo depois uma instancia na Oracle Cloud.

Criando o Projeto

Para esse post criaremos um simples app rest utilizando Payara-micro e Microprofile .

crie um projeto maven e configure o pom.xml da seguinte forma :

dep

dep2

feito isso crie duas classes com o seguinte conteúdo :


@ApplicationPath("app")
public class Boot extends Application { }

 

@Path("JUG")
@Produces(MediaType.APPLICATION_JSON)
public class JUGService {

@Inject
@ConfigProperty(name = "jug.nome")
private String jugNome;

@Inject
@ConfigProperty(name = "jug.leaders")
private String jugLeaders;

@Inject
@ConfigProperty(name = "jug.descricao")
private String descricao;

@GET
public Response getJUG() {
JsonObject json = Json.createObjectBuilder()
.add("Jug", jugNome)
.add("Lideres", jugLeaders)
.add("Descrição", descricao)
.build();

String resultado = json.toString();
return Response.ok().entity(resultado).build();
}
}

 

agora dentro da pasta “META-INF” crie um arquivo beans.xml e um “microprofile-config.properties” :

 

jug.nome = SouJava { Rio }
jug.leaders = Daniel Dias, Paulo Simões, Ulisses Telemaco
jug.descricao = SouJava - Fortalecendo a comunidade Java brasileira.
beans
beans.xml

 

agora podemos fazer o build do projeto e executa-lo localmente, para isso faça o seguinte comando :


mvn clean install

 

sera gerado o build do seu projeto alem de fazer o download do payara-micro conforme a seguinte imagem :

build

para executar seu projeto localmente faça o seguinte comando :


java -jar payara-micro.jar --deploy microprofile-sample.war

após executa-la você poderá acessar o serviço através da url apresentada no console :

payara

Como vimos o projeto funciona localmente, agora para correr o mesmo na Oracle Cloud iremos precisar criar um arquivo extra de configuração bem simples e logo depois zipa-lo para pode ser feito o upload para a Cloud .

Para isso vamos criar o arquivo manifest.json , esse arquivo é o que define como a nossa app vai iniciar, esse arquivo é o equivalente ao do Heroku que no caso é o “Procfile” , então configure o arquivo da seguinte maneira :


{
 "runtime":{"majorVersion":"8"},
 "command":"java -jar payara-micro.jar --deploy microprofile-sample.war --port $PORT"
}

mais detalhes sobre manisfest.json poderá acessar o seguinte link.

Com tudo feito, faça um arquivo zip contendo o war,payara-micro.jar e o arquivo manisfest.json . Apos isso podemos subir para a Oracle Cloud .

Acessando a Oracle Application Container Cloud

Logo apos ter feito o cadastro de uma conta trial e receber o e-mail de boas vindas juntamente com as credenciais para acessar os serviços podemos da inicio na criação de uma instancia do serviço de Contêiner .

Primeiramente acesse o link que você recebeu no e-mail e ao clicá-la sera levado a seguinte tela :

login

entre com seu usuário e senha recebido no e-mail, feito o login sera levado a tela de DashBoard contendo informações sobre seus serviços, valores, notificações, etc.

paineldeControle
Painel de Controle/DashBoard

A partir desta tela podemos criar novas instancias dos serviços disponíveis em nossa conta, com podem observar eu tenho dois serviços listados no meu painel, os mesmo estão sendo exposto aqui, eu especifiquei quais serviços eu quero mostrar em meu painel quando entro na minha conta, podemos adicionar mais serviço clicando no card “Personalizar Painel de Controle”.

Como entrar nessa tela pela primeira vez, temos somente o serviço de Identity Cloud apresentado, para criar uma nova instancia de algum serviço temos duas opções :

1 – Clicando no card “Criar Instancia” que ira da uma lista dos serviços disponíveis separados por categoria .

2 – Clicar no menu ao lado do nome “Oracle Cloud – Meus Serviços”, nisso ira lhe apresentar um menus com uma lista de opções e um outro menu chamado “serviços” que lista os serviços que temos disponíveis para usar.

Para esse post eu vou utilizar o serviço chamado “Application Container” para isso clique no Card criar instancia ou mesmo vai no menu e procurar por esse nome e você sera levado a tela do serviço , como pode ser visto na seguinte imagem :

appCloud

Agora para criarmos uma instancia desse serviço, vamos clicar no botão “Go to Console” e sera exibida a seguinte tela :

create

Clique no botão “Create Application” e sera aberto um popup conforme a imagem:

create2

Selecione o “Java SE” e ira abrir a seguinte tela :

deploy

Nesta tela preencha o que for necessário para você e aguarde a finalização do upload do projeto.

Logo depois você voltara para a tela de Applications com a sua instancia sendo criada conforme a imagem :

demo

clique no nome da sua application para ir para tela de detalhes :

detail

Nesta tela é mostrada os recursos, status de criação da instancia, bem como acesso a URL para podemos ter acesso as aplicações. Se necessário podemos aumentar a memoria e instancia, no meu caso eu tenho 1G memoria, então aumentei para 2 G para ficar no verde.

Para ver a sua app funcionando basta acessa a URL que é disponibilizada, que no meu caso é:

https://demo-danieldiasjava.uscom-east-1.oraclecloud.com/microprofile-sample/app/JUG

que resulta do seguinte resultado no navegador :

json

Agora iremos fazer a mesma coisa, porem com a opção Java EE, iremos fazer um upload de war com uma simples aplicação em Struts-1 :

Clique novamente em “Create Application” e logo depois em “Java EE ” abrindo a seguinte tela :

javaee

preencha o formulário e clique em “Create”, apos isso seu war sera processado e poderá utiliza-lo a a URL disponível  que no meu caso é :

https://struts-danieldiasjava.uscom-central-1.oraclecloud.com/

strutsCloud

 

strutsCloud2

 

Bem isso é tudo, espero que os leitores tenham gostado desse passo a passo na utilização de um dos serviços da Oracle Cloud.

Aproveite seus 30 dias e explore mais esse serviço e teste outros também.

Código-fonte: https://github.com/Daniel-Dos/DanielDiasjava-Blog/tree/master/Projeto-Cloud

REFERÊNCIAS