segunda-feira, 20 de maio de 2019

Desenvolvendo com JBoss EAP 7 - Configurando Servidor

< EM CONSTRUÇÃO - Material sendo elaborado >
Introdução

Essa é a segunda parte da serie de posts que ensina a configurar o ambiente de desenvolvimento para a plataforma Java EE. As outras partes são:

1. Overview
2. Configurando o Servidor
3. Configurando a IDE
4. Validando o ambiente

Nesse post veremos o que é o JBoss EAP, como obter uma cópia para desenvolvimento e os conceitos utilizados pelo JBoss para gerenciar as configurações e como customizar um perfil para o desenvolvimento de nossas aplicações.

O que é o JBoss EAP

JBoss Enterprisee Application Platform é o nome de um servidor de aplicações que implementa a especificação Java EE. Ele é vendido pela RedHat baseado no modelo de subscrição juntamente com o suporte ao produto. Nesse modelo é cobrado o direito de uso do software, juntamente com um pacote de suporte que dá acesso a ajuda dos profissionais da RedHat para instalar, configurar e corrigir problemas no JBoss assim como na integração entre as aplicações e o servidor de aplicação.

Quanto Custa?

O custo da subscrição básica é de U$ 8.000,00 por ano, já a subscrição premium, que fornece um nível de suporte melhor sai por U$ 12.000,00. Os preços mais atuais podem ser conferidos direto no site da RedHa, no seguinte link: https://www.redhat.com/en/store. Um detalhe curioso sobre o preço anunciado no site da RedHat é que não fica claro qual a política comercial em relação a subscrição. Pesquisando um pouco consegui encontrar uma calculadora que compara a economia entre a subscrição do JBoss vs produtos da IBM e Oracle (https://www.redhat.com/pt-br/product-red-hat-jboss-eap-eap-calculator). Segundo os parâmetros da calculadora, podemos deduzir que o preço da licença do JBoss é calculado por core. Para que o preço anunciado de U$ 12.000,00 seja aplicado, é necessário uma configuração mínima de 16 cores.

Porque usar?

A grande vantagem de se pagar a subscrição da RedHat é contar com o apoio e conhecimento dos profissionais da empresa para enfrentar os desafios do mundo corporativo. A empresa conta com um grupo de profissinais capacitados para ajudar na resolução de problemas e na busca por soluções para desafios tecnológicos que os times de infraestrutura e desenvolvimento possam enfrentar durante o desenvolvimento de suluções Java EE.
No caso de um desenvolvedor independente, ou de empresas que tenham equipes treinadas e capacitadas para atuar de forma independente o ganho no uso da subscrição pode não ser tão significativo.

Quais alternativas?

O JBoss EAP é a versão comercial de um projeto OpenSource e Free chamado WildFly, também desenvolvido e patrocinado pela RedHat. O WildFly funciona como uma espécie de laboratório para a implementação de novos recursos e especificações que podem ser incorporados no JBoss EAP. Segundo descrito na seguinte página, os dois servidores tem, atualmente, o mesmo conjunto de funcionalidades: http://wildscribe.github.io/index.html.

Caso você ou sua empresa não tenham intenção de utilizar o JBoss EAP, o WildFly é uma alternativa viável, contanto que seu time seja capacitado suficiente para não depender do suporte da RedHat.

E para o desenvolvedor?

Para o desenvolvedor ou administrador de servidores querendo testar ou aprender a como utilizar o JBoss EAP, a RedHat disponibiliza uma versão gratúita. Para isso é necessário criar uma conta no site https://developers.redhat.com/ e fazer o download do software no seguinte link.



Faça o download do arquivo ZIP - Application Platform


Lembrando que não é permitido utilizar o software em produção com a licença de desenvolvedor.


Instalação

Para o ambiente proposto não utilizaremos o instalador do JBoss. Executaremos o servidor como uma aplicação Java padrão. Existe a opção de usarmos o JBoss como um serviço do Windows, porém, para manter o ambiente simples, não usaremos essa opção.

Uma vez baixado o arquivo jboss-eap-7.2.0.zip precisamos descompactá-lo em um diretório qualquer do sistema operacional.

Antes de executar o servidor é necessário garantir que a variável de ambiente JAVA_HOME esteja apontando para o SDK escolhido. Para o ambiente que está sendo configurado recomendo o uso do OpenJDK 1.8 - Hotspot distribuído pelo site AdoptOpenJDK.

estrutura de diretório do JBoss 7.2


Iniciando o servidor

O JBoss tem dois modos de execução: Standalone ou Dominio. O modo Dominio é apropriado para configurações onde o JBoss será executado de forma clusterizada, ou seja, com diversas instâncias rodando em diferentes máquinas se comportando como um único servidor. No modo standalone são utilizadas configurações que assumem o servidor sendo executado em uma única máquina sem comunicação com outros servidores JBoss.

Para o ambiente de desenvolvimento será utilizada a configuração Standalone. Para subir o servidor nesse modo, basta executarmos o arquivo standalone.bat que fica no diretório /bin/standalone.bat. 



Esse utilitário irá fazer as verificações básicas do ambiente e iniciar uma instância baseada nas configurações encontradas no seguinte diretorio: /standalone/configuration/standalone.xml



O servidor irá iniciar, por padrão, utilizando a porta 8080 para o servidor web (undertow) e na porta 9990 para o console de administração.


Para testar a instalação, podemos acessar o console no seguinte URL: http://localhost:9990/console/index.html

No primeiro acesso será mostrado um aviso, dizendo que nenhum usuário de administração foi configurado.

Para obtermos acesso ao console de administração, precisamos executar o script add-user.bat que está na pasta /bin/add-user.bat 

O script iniciará um utilitário interativo onde você deverá preencher algumas informações referente ao usuário a ser criado:

Tipo do usuário: Digite a letra "a" e pressione ENTER;
Username: Digite o nome escolhido para o usuario de administração. O JBoss não aceita o usuário com nome de 'admin' portanto seja criativo e escolha outro nome;
Password/Confirmação: As senhas podem ter: letras e números (a-z, A-Z, 0-9); traços (-), pontos (.), virgula(,), arroba (@), barra invertida (\) e sinal de igual (=);
Grupos: Deixe em branco e pressione ENTER;
Confirmação dos dados: digite 'yes' e pressione ENTER;
O usuário vai ser utilizado para conectar em outro application server (AS): digite 'no' e pressione enter;

A saída será parecida com a seguinte:


Uma vez adicionado o usuário basta acessar novamente o URL: http://localhost:9990/console/index.html e um popup requisitando as credenciais do usuário administrativo será exibida. Basta preencher com o usuario/senha que acabamos de adicionar e teremos acesso ao console de administração.

Console de administração do JBoss 7.2



Habilitando JMS através do ActiveMQ.

Por padrão a configuração Standalone não habilita o serviço de mensageria JMS, porém, como é comum que aplicações distribuidas utilizem troca de mensagem, vamos habilitar esse módulo antes de inicar nosso servidor.

O JBoss 7.2 utiliza o servidor ActiveMQ Artemis (https://activemq.apache.org/components/artemis/) para gerenciar a troca de mensagens. Para habilitar esse módulo precisamos editar o arquivo de configuração \standalone\configuration\standalone.xml. Para isso vamos executar uma cópia desse arquivo e renomeá-la para standalone_jms.xml e salvar no mesmo diretório do arquivo original.




< EM CONSTRUÇÃO >








domingo, 19 de maio de 2019

Desenvolvendo com JBoss EAP 7 - Overview


Essa série de posts tem como objetivo orientar o leitor no setup do ambiente para desenvolvimento de aplicações Java EE utilizando o servidor de aplicação JBoss EAP ou o WildFly.

Está disponível no site da RedHat um guia de como configurar o ambiente de desenvolvimento que pode ser encontrado no seguinte link: https://developers.redhat.com/products/eap/hello-world/. O material da RedHat orienta o uso do Red Hat CodeReady Studio (antigamente chamado de JBoss Developer Studio), uma versão customizada do Eclipse com funcionalidades específicas para desenvolvimento com JBoss. CodeReady Studio é um produto da RedHat vendido nos mesmos padrões do JBoss, com uma subscrição anual. Também é possível baixar uma versão trial sem a necessidade de pagar licença.

Os próximos posts apresentam um setup minimalista, reduzindo a complexidade do ambiente para que o desenvolvedor possa focar sua atenção na escrita do código, evitando gastar tempo no troubleshooting de problemas do ambiente.

Os posts são divididos da seguinte forma:

1. Overview
2. Configurando o Servidor
3. Configurando a IDE
4. Validando o ambiente

Overview

O ambiente proposto é composto por:
  • Java Development Kit - OpenJDK 1.8
  • Servidor de Aplicação - JBoss EAP 7.2
  • Maven - 3.3
  • Banco de Dados - MySql Community Edition

Java Development Kit

Como discutido nesse post: Java vai ser pago! E agora? precisamos nos atentar para qual distribuição do Java vamos utilizar para criar nossas aplicações. Para usuários domésticos, utilizar a distribuição da Oracle ainda é uma opção, mas para usuários corporativos é necessário atenção no momento da escolha. Utilizei, para todos os passos desse material, a versão OpenJDK 8 - Hotspot distribuída através do site https://adoptopenjdk.net/.

Servidor de Aplicação

Utilizei o JBoss EAP 7.2 distribuido pela RedHat. É um servidor completo e confiável que já tem muitos anos de mercado. Apesar de ser um produto pago, é possível utiliza-lo em ambiente de desenvolvimento sem custos. Existe uma versão do JBoss EAP distribuída gratuitamente, o WildFly. Todas as instruções apresentadas aqui podem ser utilizadas com o WildFly, sem a necessidade de adaptações.

Maven 3.3

Para executar a compilação e organização do código independente da IDE, será utilizada a ferramenta Apache Maven (https://maven.apache.org). Dessa forma o projeto poderá ser uti
lizado na IDE de sua preferência, sem necessidade de alteração. Os proximos posts não tratarão dos conceitos básicos da Maven. Caso o leitor não tenha familiaridade com a ferramenta, recomendo o seguinte tutorial: Maven em 5 minutos.

Banco de Dados

Para testar a conexão com banco de dados será utilizado a versão gratuita do MySQL. Veja que a configuração da conexão com o banco é feita no servidor de aplicação, portanto, por mais que existam pequenas diferenças em como configurar a conexão com diferentes bancos de dados, essa diferença é tratada pelo servidor de aplicação. O código da aplicação não é afetado.

Requisitos do Sistema

O ambiente que será configurado utilizará a mesma máquina para executar todos os componentes. Temos que ter em mente que será necessário uma quantidade considerável de memória RAM e poder de processamento para podermos executar todos os componentes simultaneamente.

O mínimo recomendado para um computador com Windows 10 é 16GB RAM e um processador i5 de 3.0GHz ou melhor.

Computadores com menos RAM ou processadores mais lentos conseguirão rodar os componentes, porém, dependendo da quantidade de ferramentas (IDE, navegadores web, clientes de banco de dados, etc) que forem necessárias, a experiência pode não ser a melhor. Outro componente que faz bastante diferença para desenvolvimento Java é o disco. HD SSD costumam ajudar no tempo de boot do servidor de aplicação, assim como no uso das IDEs.


Parte 2 - Configurando o Servidor