Capítulo 3. Desenvolvendo Aplicativos Usando o JBoss EAP
3.1. Visão Geral Copiar o linkLink copiado para a área de transferência!
Este guia fornece informações sobre o desenvolvimento de aplicativos usando o Red Hat JBoss Developer Studio e exemplos de início rápido do JBoss EAP 7.
O Red Hat JBoss Developer Studio é um ambiente de desenvolvimento integrado (IDE) baseado em Eclipse que integra plug-ins do JBoss para o desenvolvimento de aplicativos. O JBoss Developer Studio pode ajudar no desenvolvimento de seu aplicativo com seus assistentes específicos ao JBoss e a habilidade de implantar aplicativos nos servidores do JBoss. Muitos exemplos de código de início rápido são fornecidos com o JBoss EAP 7 para auxiliar os usuários a começar a escrever os aplicativos usando diferentes tecnologias Java EE 7.
3.2. Configurando o Ambiente de Desenvolvimento Copiar o linkLink copiado para a área de transferência!
É recomendável usar o JBoss Developer Studio 11.0 ou posterior com o JBoss EAP 7.1.
Faça download e instale o JBoss Developer Studio.
Para obter instruções, consulte Instalação do JBoss Developer Studio autônomo usando o instalador no Guia de instalação do JBoss Developer Studio.
Configure o servidor do JBoss EAP no JBoss Developer Studio.
Para obter instruções, consulte Uso de detecção de tempo de execução para configurar o JBoss EAP de dentro do IDE no guia Introdução às ferramentas do JBoss Developer Studio.
3.3. Usando os Exemplos de Início Rápido Copiar o linkLink copiado para a área de transferência!
Os exemplos de início rápido fornecidos com o JBoss EAP são projetos Maven.
3.3.1. Sobre o Maven Copiar o linkLink copiado para a área de transferência!
O Apache Maven é uma ferramenta de automação de compilação distribuída, usada no desenvolvimento de aplicativos Java para criar, gerenciar e compilar projetos de software. O Maven utiliza arquivos de configuração padrão chamados POM (Modelo de Objeto do Projeto) para definir os projetos e gerenciar o processo de compilação. Os arquivos POM descrevem o módulo e as dependências dos componentes, a ordem de compilação e as metas para a saída e o empacotamento do projeto resultante usando um arquivo XML. Isto garante que o projeto seja compilado de forma correta e uniforme.
O Maven é capaz de atingir isto usando um repositório. Um repositório do Maven armazena bibliotecas Java, plug-ins e outros artefatos de compilação. O repositório público padrão é o Repositório Central do Maven 2, mas os repositórios podem ser privados e internos dentro de uma empresa com o objetivo de compartilhar artefatos comuns entre as equipes de desenvolvimento. Os repositórios também estão disponíveis através de terceiros. Para mais informações, consulte o projeto Apache Maven e o guia Introduction to Repositories.
O JBoss EAP inclui um repositório do Maven que contém muitos dos requisitos que os desenvolvedores Java EE geralmente usam para compilar aplicativos no JBoss EAP.
Para obter mais informações sobre como usar o Maven com o JBoss EAP, consulte Uso do Maven com o JBoss EAP no Guia de desenvolvimento do JBoss EAP.
3.3.2. Usando Maven com os Inícios Rápidos Copiar o linkLink copiado para a área de transferência!
As dependências e os artefatos necessários para compilar e implantar aplicativos no JBoss EAP 7 são hospedados em um repositório público. Com o JBoss EAP 7, não é mais necessário configurar o arquivo do Maven settings.xml para usar esses repositórios durante a compilação dos inícios rápidos. Os repositórios do Maven agora são configurados nos arquivos POM dos projetos de início rápido. Este método de configuração é fornecido para facilitar a introdução dos inícios rápidos, no entanto, não é geralmente recomendado para projetos de produção, pois pode deixar a sua compilação mais lenta.
O Red Hat JBoss Developer Studio inclui o Maven, portanto não há necessidade de baixá-lo e instalá-lo separadamente. É recomendável usar o JBoss Developer Studio versão 11.0 ou posterior.
Se você planeja usar a linha de comando do Maven para compilar e implantar seus aplicativos, então você deve baixar primeiro o Maven através do projeto Apache Maven e instalá-lo seguindo as instruções fornecidas na documentação do Maven.
3.3.3. Baixando e Executando os Inícios Rápidos Copiar o linkLink copiado para a área de transferência!
3.3.3.1. Baixando os Inícios Rápidos Copiar o linkLink copiado para a área de transferência!
O JBoss EAP vem com um conjunto completo de exemplos de código de início rápido criado para ajudar os usuários a começar a escrever aplicativos usando as várias tecnologias Java EE 7. Os inícios rápidos podem ser baixados a partir do Portal do Cliente Red Hat.
- Faça o login no Portal do Cliente Red Hat.
- Clique em Downloads.
- Na lista Downloads de Produtos, clique em Red Hat JBoss Enterprise Application Platform.
- Selecione 7.1 no menu suspenso Versão.
- Encontre a entrada Red Hat JBoss Enterprise Application Platform 7.1.0 Quickstarts na tabela e clique em Download.
- Salve o arquivo ZIP no diretório desejado.
- Extraia o arquivo ZIP.
3.3.3.2. Executando os Inícios Rápidos no JBoss Developer Studio Copiar o linkLink copiado para a área de transferência!
Depois que os inícios rápidos foram baixados, eles podem ser importados no JBoss Developer Studio e implantados no JBoss EAP.
Importando um Início Rápido para o JBoss Developer Studio
Cada início rápido é fornecido com um arquivo POM que contém o seu projeto e informações de configuração. Use este arquivo POM para importar com facilidade o início rápido para o Red Hat JBoss Developer Studio.
Caso a sua pasta do projeto de início rápido esteja localizada no espaço de trabalho do IDE, quando você importá-la no Red Hat JBoss Developer Studio, o IDE gera um nome de arquivo WAR e um nome de projeto inválido. Certifique-se antes de que a sua pasta do projeto de início rápido esteja localizada fora do espaço de trabalho do IDE.
- Inicie o JBoss Developer Studio.
-
Selecione Arquivo
Importar. Selecione Maven
Projetos Maven Existentes e clique em Next. Figura 3.1. Importando Projetos Maven Existentes
Navegue até o diretório do início rápido desejado (por exemplo, o início rápido
helloworld) e clique em OK. A caixa de listagem dos Projetos é preenchida pelo arquivopom.xmldo projeto de início rápido selecionado.Figura 3.2. Selecionando Projetos Maven
- Clique em Concluir.
Executando o Início Rápido helloworld
A execução do início rápido helloworld é uma maneira simples de verificar se o servidor do JBoss EAP está configurado e executando corretamente.
- Se você ainda não definiu um servidor, adicione o servidor do JBoss EAP ao JBoss Developer Studio. Consulte Uso da detecção de tempo de detecção para configurar o JBoss EAP de dentro do IDE no guia Introdução às ferramentas do JBoss Developer Studio.
Clique com o botão direito do mouse no projeto helloworld na guia Explorador de projeto e selecione Executar como
Executar no servidor. Figura 3.3. Executar Como - Executar no Servidor
Selecione o servidor do JBoss EAP 7.1 na lista de servidores e clique em Próximo.
Figura 3.4. Executar no Servidor
O início rápido helloworld já está listado para ser configurado no servidor. Clique em Concluir para implantar o início rápido.
Figura 3.5. Modificando os Recursos Configurados no Servidor
Verifique os resultados.
-
Na guia Servidor, o status do servidor do JBoss EAP 7.1 muda para
Iniciado. A guia Console mostra as mensagens detalhando a inicialização do servidor do JBoss EAP e a implantação do início rápido
helloworld.WFLYUT0021: Registered web context: /helloworld WFLYSRV0010: Deployed "helloworld.war" (runtime-name : "helloworld.war")
WFLYUT0021: Registered web context: /helloworld WFLYSRV0010: Deployed "helloworld.war" (runtime-name : "helloworld.war")Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
O aplicativo
helloworldestá disponível em http://localhost:8080/helloworld e exibe o textoHello World!.
-
Na guia Servidor, o status do servidor do JBoss EAP 7.1 muda para
Para obter detalhes adicionais sobre o início rápido helloworld, consulte Exploração do início rápido helloworld.
Executando o Início Rápido bean-validation
Alguns inícios rápidos, tais como o bean-validation, não fornecem a camada da interface do usuário e, em vez disto, fornecem testes Arquillian para demonstrar funcionalidade.
-
Importe o início rápido
bean-validationno JBoss Developer Studio. - Na guia Servidores, clique com o botão direito no servidor e escolha Iniciar para iniciar o servidor do JBoss EAP. Se você não encontrar uma guia Servidores ou ainda não tiver definido um servidor, adicione o servidor do JBoss EAP ao JBoss Developer Studio. Consulte Uso de detecção de tempo de execução para configurar o JBoss EAP de dentro do IDE no guia Introdução às ferramentas do JBoss Developer Studio.
-
Clique com o botão direito do mouse no projeto
jboss-bean-validationna guia Explorador de projeto e selecione Executar comoCompilação do Maven. Insira o seguinte no campo de entrada Metas e clique em executar.
clean verify -Parq-remote
clean verify -Parq-remoteCopy to Clipboard Copied! Toggle word wrap Toggle overflow Figura 3.6. Editando a Configuração
Verifique os resultados.
A guia Console mostra os resultados dos testes Arquillian do
bean-validation:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3.3. Executando os Inícios Rápidos através da Linha de Comando Copiar o linkLink copiado para a área de transferência!
Você pode compilar e implantar facilmente os inícios rápidos através da linha de comando usando o Maven. Se você ainda não instalou o Maven, consulte o projeto Apache Maven para baixá-lo e instalá-lo.
O arquivo README.md é fornecido no diretório raiz dos inícios rápidos e contém informações gerais sobre as exigências do sistema, configuração do Maven, adição de usuários e execução de inícios rápidos.
Cada início rápido também contém o seu próprio arquivo README.md que fornece instruções específicas e comandos do Maven para executar esse início rápido.
Executando o Início Rápido helloworld através da Linha de Comando
-
Revise o arquivo
README.mdno diretório raiz do início rápido helloworld. Inicie o servidor do JBoss EAP.
EAP_HOME/bin/standalone.sh
$ EAP_HOME/bin/standalone.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Navegue até o diretório de início rápido helloworld.
Compile e implante o início rápido usando o comando do Maven fornecido no arquivo
README.mddo início rápido.mvn clean install wildfly:deploy
$ mvn clean install wildfly:deployCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
O aplicativo helloworld está disponível agora em http://localhost:8080/helloworld e exibe o texto
Hello World!.
3.4. Revise os exemplos de início rápido Copiar o linkLink copiado para a área de transferência!
3.4.1. Explorando a Inicialização Rápida helloworld Copiar o linkLink copiado para a área de transferência!
O início rápido helloworld mostra como implantar um servlet simples no JBoss EAP. A lógica comercial é encapsulada em um serviço, que é fornecido como um bean de contextos e injeção de dependência (CDI) e injetado no Servlet. Esse início rápido é um ponto de partida para garantir que você configurou e iniciou o servidor adequadamente.
Instruções detalhadas para compilação e implantação desse início rápido usando a linha de comando podem ser encontradas no arquivo README.html na raiz do diretório do início rápido helloworld. Este tópico mostra como usar o Red Hat JBoss Developer Studio para executar o início rápido e presume que você instalou o Red Hat JBoss Developer Studio, configurou o Maven e importou e executou com êxito o início rápido helloworld.
Pré-requisitos
- Instale o JBoss Developer Studio. Para obter instruções, consulte Instalação do JBoss Developer Studio autônomo usando o instalador no Guia de instalação do JBoss Developer Studio.
-
Execute o início rápido
helloworld. Para obter instruções, consulte Execução de inícios rápidos no JBoss Developer Studio. -
Verifique se o início rápido
helloworldfoi implatado com êxito no JBoss EAP abrindo um navegador e acessando o aplicativo em http://localhost:8080/helloworld.
Examine a Estrutura do Diretório
O código do início rápido helloworld pode ser encontrado no diretório QUICKSTART_HOME/helloworld/. O início rápido helloworld é composto por um Servlet e um bean CDI. Ele também contém um arquivo beans.xml no diretório WEB-INF/ do aplicativo que tem um número de versão 1.1 e um bean-discovery-mode de all. Esse arquivo de marcador identifica o WAR como um arquivo morto bean e informa ao JBoss EAP para procurar por beans no aplicativo e ativar a CDI.
O diretório src/main/webapp/ contém os arquivos do início rápido. Todos os arquivos de configuração deste exemplo estão localizados no diretório WEB-INF/ em src/main/webapp/, inclusive o arquivo beans.xml. O diretório src/main/webapp/ também inclui um arquivo index.html, que usa uma atualização meta simples para redirecionar o navegador do usuário para o Servlet, que está localizado em http://localhost:8080/helloworld/HelloWorld. O início rápido não exige um arquivo web.xml.
Examine o Código
A declaração e importações do pacote foram excluídas destas listagens. A listagem completa está disponível no código de fonte da inicialização rápida.
Revise o código do
HelloWorldServlet.O arquivo
HelloWorldServlet.javaestá localizado no diretóriosrc/main/java/org/jboss/as/quickstarts/helloworld/. Este servlet envia as informações ao navegador.Exemplo: código de classe do HelloWorldServlet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Expand Tabela 3.1. Detalhes do HelloWorldServlet Linha Observação 43
Basta adicionar a anotação
@WebServlete fornecer um mapeamento para um URL usado para acessar o servlet.46-48
Cada página da web precisa HTML corretamente formado. Essa inicialização rápida usa Sequências estáticas para gravar o resultado de rodapé e cabeçalho mínimo.
50-51
Estas linhas injetam o bean CDI do HelloService que gera a mensagem real. Contanto que a API do HelloService não seja alterada, esta abordagem permite alterar a implementação do HelloService em uma data posterior sem modificar a camada de exibição.
58
Esta linha chama o serviço para gerar a mensagem "Hello World" e gravá-la à solicitação HTTP.
Revise o código do
HelloService.O arquivo
HelloService.javaestá localizado no diretóriosrc/main/java/org/jboss/as/quickstarts/helloworld/. Este serviço simplesmente retorna uma mensagem. Não é necessário nenhum XML ou registro de anotação.Exemplo: código de classe do HelloService
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4.2. Explorando a Inicialização Rápida do numberguess (adivinhação de número) Copiar o linkLink copiado para a área de transferência!
O início rápido numberguess mostra como criar e implantar um aplicativo não persistente simples no JBoss EAP. As informações são exibidas usando uma exibição JSF e a lógica comercial é encapsulada em dois beans CDI. No início rápido numberguess, você tem dez tentativas para adivinhar um número entre 1 e 100. Depois de cada tentativa, você será informado se o número foi muito alto ou muito baixo.
O código do início rápido numberguess pode ser encontrado no diretório QUICKSTART_HOME/numberguess/, em que QUICKSTART_HOME é o diretório em que você baixou e descompactou os inícios rápidos do JBoss EAP. O início rápido numberguess é composto por alguns beans, arquivos de configuração e exibições Facelets (JSF) e é empacotado como um módulo WAR.
Instruções detalhadas para compilação e implantação desse início rápido usando a linha de comando podem ser encontradas no arquivo README.html na raiz do diretório do início rápido numberguess. Os exemplos a seguir usam o Red Hat JBoss Developer Studio para executar o início rápido.
Pré-requisitos
- Instale o JBoss Developer Studio. Para obter instruções, consulte Instalação do JBoss Developer Studio autônomo usando o instalador no Guia de instalação do JBoss Developer Studio.
-
Execute o início rápido
numberguess. Para obter instruções, consulte Execução de inícios rápidos no JBoss Developer Studio e substituahelloworldpornumberguessnas instruções. -
Verifique se o início rápido
numberguessfoi implantado com êxito no JBoss EAP abrindo um navegador e acessando o aplicativo neste URL: http://localhost:8080/numberguess.
Examinando os Arquivos de Configuração
Todos os arquivos de configuração deste exemplo estão localizados no diretório QUICKSTART_HOME/numberguess/src/main/webapp/WEB-INF/ do início rápido.
Examine o arquivo
faces-config.xml.Este início rápido usa a versão JSF 2.2 do nome de arquivo
faces-config.xml. Uma versão padronizada do Facelets é o manipulador d exibição padrão no JSF 2.2 e, portanto, não requer configuração. Esse arquivo consiste em apenas o elemento raiz e é simplesmente um arquivo de marcador para indicar que o JSF deve ser habilitado no aplicativo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Examine o arquivo
beans.xml.O arquivo
beans.xmlcontém um número de versão 1.1 e umbean-discovery-modedeall. Esse arquivo é um arquivo de marcador que identifica o WAR como um arquivo morto de bean e informa ao JBoss EAP para procurar por beans no aplicativo e ativar a CDI.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Este início rápido não precisa de um arquivo web.xml.
3.4.2.1. Examinando o código JSF Copiar o linkLink copiado para a área de transferência!
O JSF usa a extensão de arquivo .xhtml para arquivos de fonte, mas fornece as exibições renderizadas com a extensão .jsf. O arquivo home.xhtml está localizado no diretório src/main/webapp/.
Exemplo: código-fonte do JSF
Os seguintes números de linha correspondem àqueles vistos ao visualizar o arquivo no JBoss Developer Studio.
| Linha | Observação |
|---|---|
|
36-40 |
Essas são as mensagens que podem ser enviadas ao usuário: "Maior!" e "Menor!" |
|
45-48 |
Assim que o usuário vai adivinhando, a variedade de número de número que ele pode adivinhar vai reduzindo. Esta sentença é alterada para certificação de que um usuário sabe a variedade de número de uma adivinhação válida. |
|
55-58 |
Este campo de entrada é vinculado a uma propriedade de bean usando uma expressão de valor. |
|
58 |
Uma associação de validador é usada para garantir que o usuário não informe acidentalmente um número fora do intervalo para adivinhação. Se o validador não estivesse presente, o usuário poderia desperdiçar uma tentativa com um número fora dos limites. |
|
59-61 |
Deve haver uma maneira do usuário enviar sua tentativa de adivinhação ao servidor. Aqui nós vinculamos um método de ação no bean. |
3.4.2.2. Examinação nos Arquivos de Classe Copiar o linkLink copiado para a área de transferência!
Todos os arquivos de fonte do início rápido numberguess podem ser encontrados no diretório QUICKSTART_HOME/numberguess/src/main/java/org/jboss/as/quickstarts/numberguess/. A declaração e as importações do pacote foram excluídas dessas listagens. A listagem completa está disponível no código-fonte do início rápido.
Revise o código do qualificador
Random.javaUm qualificador é usado para remover a ambiguidade entre dois beans, ambos elegíveis para injeção com base no tipo. Para obter mais informações sobre qualificadores, consulte Uso de um qualificador para resolver uma injeção ambígua no Guia de desenvolvimento do JBoss EAP. O qualificador
@Randomé usado para injetar um número aleatório.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Revise o código do qualificador
MaxNumber.javaO
qualificador@MaxNumberé usado para injetar o número máximo permitido.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Revise o código de
Generator.javaA classe
Generatorcria um número aleatório por meio de um método produtor, expondo o número máximo possível por meio dele. Essa classe está no escopo do aplicativo, então você não obterá um aleatório diferente a cada vez.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Revise o código de
Game.javaA classe no escopo de sessão
Gameé o ponto de entrada primário do aplicativo. É responsável por configurar ou redefinir o jogo, capturar e validar a adivinhação do usuário e fornecer feedback para o usuário com umFacesMessage. Ela usa o método de ciclo de vida pós constructo para inicializar o jogo recuperando um número aleatório do bean@Random Instance<Integer>.Observe a anotação
@Namedna classe. Essa anotação só é exigida quando você desejar tornar o bean acessível a uma exibição JSF usando a linguagem de expressão (EL), neste caso,#{game}.Copy to Clipboard Copied! Toggle word wrap Toggle overflow