Outra caracterstica importante est na arquitetura, que foi organizada em subsistemas. A configurao deles
fcil de compreender, pois segue padres inteligentes especificados nos arquivos XML do produto.
Isto significa que possvel excluir do servidor de aplicao os subsistemas que no forem necessrios no
seu ambiente. Por exemplo: se o projeto que vai rodar no WildFly no utiliza EJB, basta remover as linhas
que definem o subsistema Enterprise JavaBeans do XML.
No que diz respeito s formas de gerenciamento do servidor, possvel modificar ou obter parmetros de
funcionamento atravs das seis maneiras, listadas a seguir:
Alterando os arquivos internos do produto;
Executando instrues via linha de comando;
Acessando o console administrativo web;
Utilizando uma API Java nativa do WildFly;
Usando REST baseado em HTTP/JSON;
Acessando um gateway JMX.
Servidor web de alta performance incorporado (Undertow)
Um novo servidor web de alta capacidade de processamento foi criado para atender os requisitos de
performance do WildFly. Assim surgiu o projeto Undertow, um produto independente, patrocinado pela
JBoss, desenvolvido em Java e totalmente baseado na API New I/O.
Entre os recursos disponveis neste servidor web esto o suporte a Servlets 3.1 e a WebSockets, este ltimo
seguindo a especificao JSR 356.
Segundo os desenvolvedores do servidor web, ele tem a capacidade de processar milhes de conexes
simultaneamente. De acordo com testes realizados pela empresa de desenvolvimento de software
TechEmpower, o produto bateu concorrentes fortes de vrias linguagens no quesito taxa de transferncia,
comprovando o poder do Undertow (confira a seo Links).
Reduo no nmero de portas
Esta uma alterao que facilita muito a vida da equipe de infraestrutura. Para se adaptar aos servios de
computao em nuvem que rodam vrias instncias de mquinas virtuais em um nico servidor fsico , o
WildFly moveu todos os protocolos para serem multiplexados em apenas duas portas HTTP: uma para
gerenciamento (9990) e outra para as aplicaes (8080).
A Tabela 1 mostra os protocolos e servios que rodam em cada uma dessas portas.
Porta
9990
8080
Protocolos/Servios
Tipo
Gerenciamento
HTTP/JSON,
Atualizao
HTTP
Remota Gerenciamento
(Gerenciamento Nativo e JMX), Console Web de Administrao
HTTP (Servlet, JAX-RS, JAX-WS), WebSockets, Atualizao HTTP Aplicao
Remota (Invocao EJB, JNDI Remoto)
Esta nova estratgia de conectividade foi motivada porque a execuo do WildFly configurado em modo
cluster em ambientes de nuvem deve ser cada vez mais praticada.
Esta realidade surgiu do crescimento da computao em nuvem e por conta da necessidade de elasticidade e
alta disponibilidade existente em grande parte das aplicaes atuais. Neste contexto, uma das provas da
aceitao do WildFly em infraestruturas com essas caractersticas vem da CloudBees, uma fornecedora de
plataforma como servio para aplicaes Java que anunciou o suporte ao novo servidor de aplicao antes
mesmo da verso final ter sido lanada.
Uso de papis para controle de acesso
O WildFly agora utiliza papis para o controle de acesso s operaes administrativas. Desta forma
possvel restringir a permisso de execuo de tarefas no servidor de acordo com a necessidade de cada
usurio. Os perfis existentes so: Administrator, Auditor, Deployer, Mantainer, Monitor, Operator e
SuperUser.
Cada um deles tem acesso a determinadas operaes como leitura/escrita de reas de configurao,
visualizao de operaes de auditoria, gerenciamento de usurios e execuo de operaes de runtime,
como iniciar ou parar servios.
O WildFly tambm permite a criao de grupos com um ou mais perfis associados. Por exemplo: possvel
criar o grupo desenvolvedor com os perfis Mantainer e Operator vinculados e depois associ-lo a um ou
mais usurios.
Log de auditoria aprimorado
O WildFly conta agora com um novo mecanismo de gravao de log de auditoria. Esta funcionalidade
permite determinar se instrues de gerenciamento do servidor sero registradas e se operaes de leitura de
configuraes tambm devem ser includas.
Os arquivos de log podem ser enviados para um servidor externo seguro e o formato padro de gravao o
JSON, facilitando a troca dos dados com algum plugin ou aplicativo.
Instalao facilitada de patches de correo
Outra melhoria para a equipe de infraestrutura foi a criao de uma nova estratgia de aplicao de patches
para correo de problemas no funcionamento do servidor. O procedimento pode ser feito inclusive
remotamente, atravs da utilizao do protocolo de gerenciamento do WildFly.
Novidades para o desenvolvedor
Do ponto de vista do desenvolvedor, o WildFly tambm no deixa a desejar ao trazer uma srie de melhorias
no funcionamento. Algumas inovaes facilitaro bastante a vida dos que produzem cdigo e os tpicos a
seguir mostraro o avano adquirido.
Certificao Java EE 7
O servidor de aplicao traz incorporado o que h de mais moderno no que diz respeito a Java EE. A verso
7 dessa especificao oferece uma srie de recursos que aumentam a produtividade, diminuem a
possibilidade de erros atravs da utilizao de melhores prticas de programao e permitem uma maior
integrao com servios em nuvem.
Entre as novidades presentes no WildFly esto o suporte a HTML 5, WebSockets, processamento de JSON,
uma nova verso do JAX-RS para trabalhar com servios RESTful, uma API para executar processos batch
e a atualizao das bibliotecas JPA, Bean Validation, JSF, CDI, JMS e JTA.
Todas essas tecnologias ajudam o desenvolvedor e facilitam em uma eventual mudana de servidor de
aplicao (para o GlassFish, por exemplo), j que fazem parte de um pacote padronizado de especificaes
que todos os produtos compatveis com a plataforma Java EE 7 devem adotar.
Inicializao mais rpida
Assim como na verso 7 do JBoss AS, a inicializao dos servios acontece de forma concorrente para
eliminar paradas desnecessrias e aproveitar a maior capacidade de execuo de tarefas dos processadores
com mais de um ncleo. Os desenvolvedores do servidor de aplicao prometem um tempo de inicializao
menor em torno de 10 vezes e garantem que o produto consegue ser mais rpido nesse quesito que os servlet
containers Tomcat e Jetty.
Outra abordagem bastante interessante a inicializao de algum servio no crtico por exemplo, o
suporte a processos batch , que passa a ser executada apenas quando h uma chamada ao recurso pela
primeira vez, economizando recursos.
Economia de memria aprimorada
Como forma de atingir uma melhor performance, foi feita uma reviso em vrios trechos de cdigo dos
servios de base do servidor. O procedimento resultou em respostas mais rpidas e em uma alocao menor
de memria no heap (ver BOX 1).
BOX 1. Heap
rea de memria criada pela JVM na qual so armazenados metadados de classes, mtodos carregados e
todos os objetos criados durante a execuo da aplicao.
Outra abordagem que ajudou na economia de memria foi a diviso do class loading em mdulos, ao invs
da tradicional abordagem hierrquica. O modelo foi projetado para que houvesse uma preveno na
duplicao de classes carregadas, com o intuito de facilitar o trabalho do garbage collector.
Por fim, o console de administrao foi feito de forma 100% stateless, ou seja, o software no armazena
informaes das requisies anteriores do usurio. Por esse motivo, os desenvolvedores do produto afirmam
que ele inicializa instantaneamente e requer memria zero para rodar.
Suporte web moderna
Como informado anteriormente, o servidor compatvel com a Java EE 7. Portanto, h suporte para
WebSockets, permitindo uma comunicao full-duplex (ver BOX 2) entre cliente e servidor. Este recurso
muito til em vrios tipos de aplicaes, como chats, mecanismos de sincronizao e sistemas voltados para
dispositivos mveis.
Outra novidade o suporte a JSON-P e a REST atravs da JAX-RS 2, o que alinha o produto a uma
arquitetura muito empregada atualmente em sistemas Java: o uso de front-end baseado em frameworks
JavaScript consumindo servios REST.
BOX 2. Full-duplex
Tipo de comunicao entre dois pontos em que o fluxo de dados bidirecional, ou seja, os pacotes podem
trafegar nos dois sentidos de forma simultnea.
Integrao com o Arquillian
O WildFly segue outra tendncia de mercado na rea de desenvolvimento: um investimento crescente na
poltica de cobertura de testes em aplicaes. Para isto, foi incorporado ao servidor o Arquillian, uma
plataforma de testes funcionais e de integrao para a camada de negcio.
Uma das grandes vantagens do Arquillian que ele permite que os testes sejam executados a partir do IDE
ou da ferramenta de build, facilitando a vida do desenvolvedor.
Instalando o WildFly
Diferentemente de alguns concorrentes, o WildFly s pode ser baixado em formato ZIP, e no existem
opes de download especficas de acordo com o sistema operacional. Para realizar o procedimento de
instalao, baixe o arquivo na seo de downloads do site do produto (confira a seo Links no final do
artigo) e descompacte o contedo na pasta de destino desejada. Este artigo baseia-se na verso 8.0.0.Final do
WildFly e a estrutura de diretrios gerada aps a extrao encontra-se exposta na Tabela 2.
Diretrio
<wildfly_home>/appclient
<wildfly_home>/bin
<wildfly_home>/bin/client
<wildfly_home>/docs/examples/config
<wildfly_home>/docs/schema
<wildfly_home>/domain
<wildfly_home>/modules
<wildfly_home>/standalone
<wildfly_home>/welcome-content
Contedo
Arquivos de configurao, rea para deploy e gravao de
alguns arquivos de controle.
Arquivos executveis e de configurao de inicializao e
parada, utilitrios de linha de comando e ferramenta de
diagnstico Java para ambientes Windows e Unix.
Arquivo JAR para uso em projetos no baseados em
Maven.
Exemplos de arquivos de configurao representando
vrios cenrios.
Arquivos de definio de schemas XML.
Arquivos de configurao, contedo de deploy e reas para
gravao de dados especficos do modo de funcionamento
domnio.
Armazena os mdulos usados pelo servidor.
Arquivos de configurao, contedo de deploy e reas para
gravao de dados especficos do modo de funcionamento
standalone.
rea com o contedo exibido na pgina de boas-vindas.
Contedo
Arquivos de configurao para o modo domnio, Host Controller e qualquer
servidor envolvido no ambiente.
rea interna para armazenamento de contedo de deploy manipulada pelo
Host Controller.
Pasta para colocar JARs referenciados por aplicaes publicadas no servidor.
Arquivos de log gravados pelo Host Controller e pelo Process Controller.
Local para gravao de arquivos de cada instncia do servidor de aplicao
pertencente ao domnio. Cada uma delas ter seu prprio subdiretrio.
Arquivos temporrios do servidor
Contedo
Arquivos de configurao para o modo standalone.
Armazena arquivos temporrios gerados pelo servidor para no perder o
sincronismo no caso de um reincio.
Diretrio para armazenar arquivos que podem ser publicados automaticamente
no servidor, como pacotes WAR e EAR.
Pasta para colocar JARs referenciados por aplicaes publicadas no servidor.
Arquivos de log do modo standalone.
Arquivos temporrios do servidor.
Como dito anteriormente, os dois modos permitem a montagem de clusters de alta disponibilidade. Isto
significa que a grande questo envolvida nesta escolha est relacionada a como os servidores sero
gerenciados, e no os servios que o seu ambiente fornecer, j que em ambos os casos o administrador do
servidor vai contar com os mesmos recursos.
Dessa forma, a estratgia de deciso por uma das opes pode seguir o seguinte raciocnio:
Se apenas um servidor for utilizado para rodar a aplicao, escolha o modo standalone. Ele mais leve e
mais simples de configurar;
No caso da utilizao de mltiplos servidores, a deciso pelo modo de funcionamento pode vir da
necessidade ou no de gerenciamento centralizado do ambiente. Em ambientes que envolvam uma
quantidade elevada de mquinas e onde for preciso sincronismo entre elas, o modo standalone totalmente
desaconselhado.
No entanto, podem haver situaes em que voc queira que uma parte das suas mquinas fique
temporariamente fora de sincronismo. Um caso real quando voc precisa publicar uma nova verso de um
sistema, mas deseja que a verso antiga fique sendo acessada por todos os usurios at que seja validado o
funcionamento da nova verso da aplicao.
Neste caso, podem ser criados mecanismos personalizados que sincronizem por etapas as configuraes
entre grupos de instncias standalone: primeiro, a sincronizao seria feita nos hosts que receberam a verso
nova do sistema, e somente aps a confirmao do administrador do WildFly, o procedimento seria feito nos
hosts restantes. Em situaes como esta, portanto, a escolha do modo de funcionamento vai depender das
caractersticas do ambiente desejado.
Executando o WildFly pela primeira vez
Em nossos testes, assumiremos que o host usa o sistema operacional Windows e vamos rodar o servidor no
modo standalone. Para realizar esta tarefa, abra o prompt de comando, entre no diretrio
<wildfly_home>/bin e execute standalone.bat (seria standalone.sh se voc estivesse no Linux ou Unix).
Aps a confirmao no console de que o servidor foi iniciado, abra o seu navegador e acesse o endereo
http://localhost:8080. A tela exposta na Figura 2 ser apresentada, confirmando que o WildFly est
rodando.
10
11
12
Descrio
Modifica o caminho do n atual para o especificado.
Publica uma aplicao no servidor.
Remove uma aplicao do servidor.
Lista o contedo do n atual.
Sai do utilitrio.
Exibe a verso do servidor e informaes do ambiente.
Adiciona uma fila JMS.
Remove uma fila JMS.
Adiciona um tpico JMS.
Remove um tpico JMS.
Permite adicionar, modificar ou remover um datasource.
Apesar de tantas funcionalidades, os comandos de alto nvel no resolvem tudo o que desejamos. Para isso
existem as instrues de baixo nvel, que permitem ler ou modificar os parmetros do servidor como se
estivssemos editando os arquivos XML.
Com o intuito de facilitar o acesso aos recursos, os desenvolvedores do WildFly estruturaram a configurao
do servidor como uma rvore de recursos, em que cada n permite que operaes de leitura e escrita possam
ser executadas.
A estrutura de uma operao est dividida em trs partes bsicas: um endereo (opcional em alguns casos), o
nome da operao e um conjunto de parmetros (opcional na maioria dos casos). O formato das operaes a
serem executadas pelo administrador do servidor tem o seguinte padro:
[(/tipo-de-n=nome-do-n)* : nome-da-operao [( [nome-do-parmetro=valor-do-parmetro (,nome-doparmetro=valor-do-parmetro)*] )]
A partir deste formato podemos observar que o endereo a ser acessado est especificado pelo trecho (/tipode-n=nome-do-n)*, a operao a ser executada, por nome-da-operao, e o conjunto de parmetros
passados encontra-se em [nome-do-parmetro=valor-do-parmetro (,nome-do-parmetro=valor-doparmetro)*].
Para facilitar o trabalho de quem est administrando o servidor, o utilitrio fornece a complementao dos
comandos atravs do uso da tecla <TAB>, o que pode ajudar bastante em algumas situaes. Um exemplo
de operao neste caso, de leitura descobrir qual porta est sendo usada pelo protocolo HTTPS. A
Figura 8 mostra esta instruo e o resultado dela.
Figura 8. Execuo de instruo para descobrir a porta utilizada pelo protocolo HTTPS.
Consultando o formato padro das operaes mostrado anteriormente, observamos que no comando
executado acessamos a rvore de configuraes do servidor a partir do tipo de n socket-binding-group
com o valor standard-sockets neste n que esto as configuraes de protocolo do WildFly e em
seguida entramos em outro tipo de n chamado socket-binding (filho do n standard-sockets) com o valor
https. Finalmente, para obtermos o nmero da porta, especificamos a operao read-attribute e passamos o
parmetro name com o valor port.
14
Ao administrarmos o servidor via linha de comando podemos executar operaes comuns que podem ser
disparadas em qualquer n read-attribute uma delas e serve para obter o valor de alguma configurao
do servidor e operaes especficas que pertencem a um conjunto restrito de recursos change-root-loglevel, por exemplo, s pode ser chamada no subsistema de logging. As operaes comuns so mostradas na
Tabela 6.
Instruo
add
read-attribute
read-children-names
read-children-resources
read-children-types
read-operation-description
read-operation-names
read-resource
read-resource-description
remove
validate-address
write-attribute
15
Para isto, em cada um dos subtpicos a seguir, uma das trs principais maneiras de gerenciamento do
WildFly (console web, linha de comando e edio dos arquivos XML) ser abordada para vermos como usla na prtica.
Configurando a memria heap
Como padro, o WildFly utiliza 64Mb para o tamanho mnimo e 512Mb para o tamanho mximo do heap
nos modos domnio e standalone. Os dois modos, entretanto, recebem estes parmetros da JVM de forma
diferente. O modo domnio utiliza os arquivos XML, enquanto no modo standalone os argumentos esto em
um arquivo texto que lido pelo WildFly de forma automtica e transparente.
Isto acontece porque o modo domnio pode ter configuraes globais para todos os hosts que fazem parte da
soluo e, como existe um ponto central de gerenciamento do ambiente, o arquivo domain.xml relativo ao
Domain Controller usado para armazenar esses parmetros.
Assim, para os ambientes em que o WildFly est rodando no modo domnio e se deseja modificar a memria
heap, deve-se abrir o arquivo domain.xml e editar a linha 03 apresentada na Listagem 1.
Listagem 1. Trecho de configurao de memria do WildFly no arquivo domain.xml.
01 <server-group name="main-server-group" profile="full">
02
<jvm name="default">
03
<heap size="64m" max-size="512m"/>
04
</jvm>
05
<socket-binding-group ref="full-sockets"/>
06 </server-group>
J no caso de o modo standalone estar sendo utilizado, deve-se editar o arquivo standalone.conf.bat (no
Windows) ou standalone.conf (para Unix/Linux). Procure pelos argumentos -Xms e -Xmx (relativos ao
heap), e -XX:MaxPermSize (relativo ao PermGen). Todos eles so passados para a JVM no momento em
que chamamos o executvel do modo standalone.
Adicionando bibliotecas ao servidor
Colocar bibliotecas diretamente no servidor uma prtica recomendada porque muitas vezes temos mais de
uma aplicao utilizando os mesmos recursos. Quando realizamos este procedimento, evitamos que classes
sejam carregadas de forma duplicada na memria.
Como vimos anteriormente, o WildFly foi projetado para trabalhar com mdulos e atravs da configurao
de um novo mdulo que devemos adicionar um JAR ao servidor de aplicao.
Na simulao que iremos demonstrar, imagine que precisamos colocar o JAR de uma biblioteca em nosso
servidor. Para isto, nosso primeiro passo acessar a pasta <wildfly_home>/modules e dentro dela criar uma
estrutura de diretrios obedecendo a mesma organizao de pacotes do ncleo do projeto. Ao final, adicione
uma pasta chamada main para que o mdulo seja reconhecido corretamente pelo WildFly.
No nosso caso, o caminho final deve ser <wildfly_home>/modules/br/com/devmedia/projetoexemplo/main.
Dentro desta pasta, coloque o JAR do Projeto DevMedia e crie um XML chamado module.xml. Este arquivo
deve conter as definies da biblioteca utilizada, como possveis dependncias que ela tiver e o nome do
mdulo. O cdigo do arquivo XML deve ficar igual ao apresentado pela Listagem 2.
Listagem 2. Contedo do arquivo module.xml.
01 <?xml version="1.0" encoding="UTF-8"?>
02 <module xmlns="urn:jboss:module:1.0" name="br.com.devmedia.projetoexemplo">
16
03 <resources>
04
<resource-root path="projeto-devmedia-core-1.0.4.jar"/>
05 </resources>
06 </module>
Observe que na linha 02 informamos o nome do mdulo e na linha 04 colocamos o nome do JAR que foi
publicado na pasta. Estas informaes servem para o controle do servidor e so obrigatrias.
Configurando um datasource
A maioria dos sistemas utiliza bancos de dados para armazenar informaes. Devido a esta caracterstica,
uma das operaes mais comuns realizadas em servidores de aplicao a criao de datasources. O acesso
ao SGBD atravs deles um procedimento extremamente recomendado no desenvolvimento de aplicaes
pelos seguintes motivos:
Deixa a responsabilidade de gerenciar a conexo e a definio de parmetros do pool a cargo da equipe de
infraestrutura;
Evita que tenhamos que ficar manipulando usurio e senha do banco de dados atravs da aplicao;
Promove uma melhor utilizao das conexes, no caso da existncia de duas ou mais aplicaes que
compartilhem o mesmo banco de dados.
Dito isso, o primeiro procedimento a ser feito antes de criar um datasource disponibilizar o JAR com o
driver do banco de dados no servidor. Para este tipo de situao, temos duas opes: a primeira configurar
como um mdulo como explicado na seo anterior , e a segunda atravs de uma operao de deploy.
Esta ltima alternativa funciona apenas com drivers de banco de dados compatveis com JDBC 4, ou seja,
no se aplica a qualquer JAR e traz a vantagem de a publicao da biblioteca ser propagada para qualquer
instncia que seja incorporada a um domnio.
O outro mtodo, por sua vez, faz com que o administrador do servidor de aplicao tenha de configurar o
mdulo em cada instncia envolvida no ambiente.
Na nossa simulao, vamos configurar o driver como um mdulo do WildFly, e o banco utilizado para criar
o datasource ser o PostgreSQL.
Assim, baixe o driver compatvel com JDBC 4 do SGBD na URL informada na seo Links e coloque-o no
diretrio <wildfly_home>/modules/org/postgresql/main. Em seguida, salve um arquivo com o nome
module.xml dentro desta mesma pasta com o contedo da Listagem 3 para configurar o mdulo. Lembre-se
que o path do recurso (linha 04) deve mudar de acordo com o nome do arquivo baixado.
Listagem 3. Contedo do arquivo module.xml.
01 <?xml version="1.0" encoding="UTF-8"?>
02 <module xmlns="urn:jboss:module:1.0" name="org.postgresql">
03 <resources>
04
<resource-root path="postgresql-9.3-1101.jdbc41.jar"/>
05 </resources>
06 <dependencies>
07
<module name="javax.api"/>
08
<module name="javax.transaction.api"/>
09 </dependencies>
10 </module>
17
J a criao do datasource bastante simples. Neste exemplo, vamos realiz-lo atravs da linha de
comando. Para isso, assumiremos que o servidor j est funcionando no modo standalone. Com o driver do
banco de dados j enviado para o servidor, abra um prompt de comando do Windows (ou console, no Linux)
e entre na pasta <wildfly_home>/bin.
Logo aps, rode a instruo jboss-cli.bat --connect (jboss-cli.sh --connect no Linux). Agora, vamos fazer
com que nosso servidor de aplicao reconhea o driver do SGBD. Sendo assim, digite o comando a seguir
e confirme com <ENTER>:
/subsystem=datasources/jdbc-driver=org.postgresql:add(driver-name="org.postgresql",
name="org.postgresql", xa-datasource-class="org.postgresql.Driver")
driver-module-
O comando mostrado est executando a operao add a partir do tipo de n subsystem e passando o valor
datasources. Em seguida ocorre o acesso ao tipo de n jdbc-driver (filho de datasources) passando o valor
org.postgresql. Os valores entre parnteses so os parmetros passados para que o servidor de aplicao
reconhea corretamente o driver JDBC.
Analisando a instruo, podemos observar que o driver-name e o nome do recurso (valor digitado entre as
palavras jdbc-driver e add) batem com o nome do mdulo (org.postresql) especificado no arquivo
module.xml. Isto imprescindvel para que tudo seja corretamente configurado.
Aps a execuo do comando, ser exibida uma mensagem confirmando o procedimento. Agora que o
driver est sendo reconhecido pelo servidor de aplicao, vamos criar o datasource. Neste ponto,
precisamos de uma base de dados.
Para fins de simulao, vamos assumir que existe uma base de dados chamada javamagazine em um
servidor PostgreSQL local. Como j temos o banco, falta apenas criar o datasource atravs da instruo a
seguir:
/subsystem=datasources/data-source=PostgreSQLDS:add(driver-name="org.postgresql",
connectionurl="jdbc:postgresql://localhost:5432/javamagazine",
jndi-name="java:/JavaMagazine",
username="postgres", password="1234", driver-class="org.postgresql.Driver", min-pool-size=5, max-poolsize=10)
O comando apresentado est executando a operao add a partir do tipo de n subsystem e passando o valor
datasources. Em seguida ocorre o acesso ao tipo de n data-source (filho de datasources) passando o
valor PostgreSQLDS. Os valores entre parnteses so os parmetros passados para que as configuraes de
conexo do datasource sejam gravadas.
Nosso ltimo passo testar o datasource com o seguinte comando (lembre-se que o PostgreSQL deve estar
rodando):
/subsystem=datasources/data-source=PostgreSQLDS/:test-connection-in-pool
A instruo executada est entrando na rvore de configurao do servidor a partir do tipo de n subsystem
e passando o valor datasources. Em seguida ocorre o acesso ao tipo de n data-source (filho de
datasources) passando o valor PostgreSQLDS e a operao test-connection-in-pool executada. Se tudo
der certo, uma mensagem de sucesso ser exibida como retorno indicando que o datasource est pronto para
ser usado pelas aplicaes.
Efetuando o deploy de uma aplicao
18
A publicao de uma aplicao no WildFly pode ser feita de vrias maneiras: via linha de comando, atravs
do console web e, caso o servidor esteja rodando no modo standalone, o pacote (arquivo WAR, EAR, JAR,
SAR, etc.) pode ser colocado no diretrio <wildfly_home>/standalone/deployments. Em nosso teste,
veremos como esse procedimento efetuado atravs do console web e utilizaremos novamente o modo
standalone como base.
Publicaremos uma pequena aplicao web criada pelo autor cujo contedo possui apenas uma pgina JSP
para verificar o funcionamento do sistema (o endereo para download do arquivo WAR se encontra na seo
Links).
Aps efetuar o download do arquivo WAR, acesse o console web a partir do endereo
http://endereo_servidor:9990, entre com o usurio e a senha definidos anteriormente e escolha a opo
Manage Deployments. Em seguida, clique no boto Add. Na janela que ser exibida, clique em Escolher
Arquivo, selecione o WAR baixado e clique em Next. Na tela que surge, confirme ou mude os parmetros de
deploy gerados automaticamente e clique mais uma vez em Next.
Neste ponto a publicao j foi realizada, mas a aplicao ainda no est habilitada para uso. Para ativ-la,
clique em cima do nome da aplicao (se no tiver sido informado outro, ser jmweb.war), depois no boto
En/Disable e no boto Confirm na tela que surgir. Pronto! O sistema est disponvel para acesso, conforme
mostra a Figura 9.
19
Como pudemos verificar, o WildFly 8 chega com uma base consistente e bastante elogiada que surgiu na
verso 7 do JBoss AS. Porm, trata-se de um produto renovado, com uma srie de modificaes que devem
conquistar os adeptos de concorrentes como o GlassFish.
Entre essas novidades podemos citar o suporte recm-lanada Java EE 7, reduo no consumo de
memria, menor tempo de inicializao, um novo servidor web de alta performance e integrao com o
Arquillian.
No que diz respeito administrao do servidor, vimos que o console web uma ferramenta simples e de
fcil manuseio, assim como aprendemos a modificar os parmetros do servidor atravs de instrues via
linha de comando e da edio manual de arquivos XML.
Todas estas estratgias de gerenciamento do WildFly no apresentam grande complexidade e podem ser
facilmente compreendidas com uma rpida leitura da documentao. Estas caractersticas, somadas ao forte
apoio da Red Hat, tornam este produto um software diferenciado que certamente vai causar grande impacto
no mercado nos prximos anos.
Links
Datasheet de divulgao do WildFly.
http://design.jboss.org/jbossorg/branding/datasheets/pdf/
datasheet_wildfly.pdf
Testes da empresa TechEmpower mostram o poder de performance do Undertow.
http://www.techempower.com/blog/2013/10/31/
framework-benchmarks-round-7/
Pgina de download do WildFly.
http://wildfly.org/downloads/
Pgina de download do driver do PostgreSQL.
http://jdbc.postgresql.org/download.html
Pgina de download do WAR do projeto jmweb para teste de deploy no WildFly 8.
https://drive.google.com/file/d/0BxWhwJZjrYMrOFRqUjhlT2F6WE0/
edit?usp=sharing
Guia de administrao do WildFly.
https://docs.jboss.org/author/display/WFLY8/Admin+Guide
Primeiros passos com o WildFly.
https://docs.jboss.org/author/display/WFLY8/Getting+Started+Guide
Guia do desenvolvedor para o WildFly.
https://docs.jboss.org/author/display/WFLY8/Developer+Guide
20