Professional Documents
Culture Documents
of Contents
Prefcio 1.1
Introduo 1.2
O que o Wildfly? 1.2.1
Instalao 1.2.2
Requisitos 1.2.2.1
Downloads 1.2.2.2
Instalao passo a passo 1.2.2.3
Criando usurio de gerenciamento 1.2.2.4
Instalando como Servio no Linux 1.2.2.5
Instalando como Servio no Windows 1.2.2.6
Estrutura - Cada coisa em seu lugar! 1.3
Diretrios 1.3.1
Arquivos de configurao 1.3.2
Modo Standalone x Domain 1.3.3
Profiles e suas diferenas 1.3.4
Classloader Modular 1.4
O que e como funciona? 1.4.1
Adicionando um mdulo customizado 1.4.2
Definindo dependncias explcitas de mdulos em sua aplicao 1.4.3
Configurando WildFly 10 1.5
System properties 1.5.1
Socket-bindings 1.5.2
Subsystem datasource 1.5.3
Subsystem mail 1.5.4
Subsystem logging 1.5.5
Subsystem segurana 1.5.6
Subsystem servios Web 1.5.7
Subsystem Transaes 1.5.8
Subsystem servidor Web 1.5.9
Subsystem Remoting 1.5.10
2
Subsystem IO 1.5.11
Subsystem Batch 1.5.12
Subsystem Messaging 1.5.13
Alta disponibilidade (HA) 1.6
Subsystem jGroups 1.6.1
Subsystem Infinispan 1.6.2
Wildfly como loadbalancer 1.6.3
Configurando loadbalancer externos 1.6.4
Modo Domain passo a passo 1.7
Primeiros Passos 1.7.1
3
Prefcio
O livro gratuito e toda e qualquer informao aqui encontrada de autoria dos membros
da comunidade e do JBUG:Brasil, qualquer novo contedo ser revisado e googlado antes
de ser publicado. Todo e qualquer contedo aqui encontrado pode ser compartilhado porm
de forma alguma poder ser utilizado para fins comerciais, sendo destinado aos usurios do
Brasil, s ser disponibilizado em pt-BR.
Contribuies
O livro est em constante edio e sempre que achar que algum contedo ainda no
abordado interessante por favor nos envie sua sugesto.
Qualquer contribuio bem vinda, clone o projeto, faa suas alteraes e nos envie um
pull request para que possamos validar o contedo que voc escreveu.
Utilize o GitHub para realizar fork deste livro e efetuar suas alteraes. Maiores informaes
podem ser encontradas no link abaixo.
Comunidade
Estamos no IRC: #jbug-brasil no freenode e jboss.org
https://developer.jboss.org/groups/jbug-brasil.
4
Prefcio
Agradecimentos
Agradecemos os seguintes contribuidores para elaborao deste livro:
Erros? :-)
Achou algum erro de qualquer espcie ou at mesmo algum contedo que voc no
concorde? Sinta-se a vontade para corrigir ou enviar sugestes.
5
Introduo
Introduo
Java o nome dado tanto linguagem de programao largamente conhecida quanto
plataforma por trs da linguagem. Sua popularidade se deve ao fato de que a linguagem
compilada em um cdigo intermedirio (conhecida como Bytecode) para execuo dentro
da Mquina Virtual Java (ou JVM). Isso proporcionou ao Java uma srie de facilidades na
programao que permite ao desenvolvedor se preocupar somente em programar o que
realmente necessrio para a programao, deixando questes como coleta de lixo
(Garbage Collection), performance de execuo de cdigo nativo, gerenciamento de
memria e outros para a Mquina Virtual Java. Tal caracterstica hoje utilizada em outras
linguagens de programao, como .NET e Python, tamanha a importncia da Mquina
Virtual nos paradigmas atuais de linguagens de programao.
6
Introduo
A plataforma Java, desde a sua concepo, recebeu algumas divises com o objetivo de
tornar a evoluo da plataforma focado em seus devidos objetivos, dentre eles podemos
citar:
Java Standard Edition (ou Java SE): o nome dado plataforma nas sua mais bsica
utilizao, cobrindo toda a implementao da Linguagem Java, do Bytecode e da JVM.
Java Enterprise Edition (ou Java EE): o nome dado plataforma com foco em
aplicaes corporativas (objetivo desde livro), cobrindo caractersticas como
persistncia de dados, distributabilidade, segurana e outros assuntos pertinentes.
Desde a verso 1.6 do Java EE a plataforma se dividiu em dois perfis (profiles): web:
Onde tudo o que ser utilizado/disponibilidado por um fornecedor sero caractersticas
que permitem o desenvolvimento de uma aplicao Web full: Onde o que ser
utilizado/disponibilizado pelo fornecedor sero todo o perfil Web mais caractersticas
adicionais que permitem o uso de componentes como EJB e outros
Java Micro Edition (ou Java ME): o nome dado plataforma cujo objetivo o foco em
dispositivos embarcados (Smartphones, Impressoras, Set-top boxes,
Microcontroladores em geral e outros). Essa plataforma em especfico dividida dois
perfis, sendo eles:
Connected Limited Device Configuration (ou CLDC): Um perfil com foco em
dispositivos que possuem conexo limitada ou nenhuma conexo com a Internet
Connected Device Configuration (ou CDC): Um perfil com foco em dispositivos que
possuem conexo com Internet
Java Card: Uma plataforma muito especfica com foco no desenvolvimento de
aplicaes que utilizam Smart Cards
Java TV: Uma plataforma com foco para TV Digital (O Ginga, plataforma brasileira para
TV Digital, utiliza partes dessa plataforma)
H outras plataformas criadas para outros fins, mas no iremos extender em descrever
todas. Conforme j mencionado, o objetivo deste livro est no foco ao Java EE, onde o
Wildfly implementa suas caractersticas.
7
Introduo
Sendo assim, a JCP define como determinada plataforma deve ser construda, ficando a
cargo das empresas interessadas em ter um software alinhado quela plataforma
literalmente implementar aquelas especificaes. Hoje, empresas como Oracle, Red Hat e
IBM so as principais que trabalham para implementar essas especificaes em suas
solues.
O Wildfly, ento, uma implementao da plataforma Java EE. Isso significa que todas as
especificaes determinadas para uma determinada verso do Java EE (a verso mais
recente a Java EE 1.7) foram implementadas no Wildfly.
Distributabilidade
Persistncia
Segurana
Gerenciamento de Transaes
Mensageria
Entre outros...
8
Introduo
importante lembrar que o objetivo da especificao Java EE (sim, Java EE tambm uma
especificao, conhecida como Umbrella Specification) padronizar o uso de determinadas
tecnologias e portanto ela no tem como objetivo criar inovaes tecnolgicas em torno da
plataforma. Seu objetivo principal evitar o fenmeno chamado de Vendor Lock-In, que
um fornecedor "prender" seus clientes a uma caracterstica muito especfica e que altera
uma funcionalidade do Java EE. Claro que h outros aspectos que o Java EE no pretende
controlar, como por exemplo Clustering, sendo esse livre para o fornecedor criar sua prpria
implementao. A este caso especfico foi dada essa liberdade de implementao para
permitir a livre concorrncia entre seus fornecedores e atra-os para a comunidade Java.
9
O que o Wildfly?
O que o Wildfly?
Wildfly, tambm conhecido como JBoss, um servidor de aplicao Java EE desenvolvido
em Java e pode ser executado em qualquer Sistema Operacional, 32 ou 64 bits que tenha
suporte ao Java.
Houve ento uma votao na comunidade JBoss para decidir o novo nome do projeto da
comunidade. Muitos nomes foram sugeridos (mais de 1500 nomes, de acordo com Mark
Little, CTO da diviso de Middleware da Red Hat) e depois de uma pr-seleo cinco
nomes foram selecionados para a votao da comunidade. Wildfly foi o nome mais votado
entre vrios outros, a troca de nomes foi oficialmente anunciada no JUDCon Brazil de 2013
em So Paulo e mais tarde Mark Little postou em seu blog o anncio.
10
Instalao
Instalao
Este captulo ir abordar o processo de instalao passo a passo desde os downloads at a
primeira inicializao do Wildfly e tambm os primeiros passos aps sua instalao.
11
Requisitos
Requisitos
Para executar o Wildfly o nico requisito possuir uma mquina fsica ou virtual
independentemente do sistema operacional com memria suficiente para a execuo. A
quantidade de memria necessria pode variar de acordo com a aplicao que ser
executada. A configurao padro do Wildfly est configurada da seguinte maneira:
-Xms64m -Xmx512m
O que significa que o mnimo de memria utilizada 64mb e pode crescer at 512mb.
Porm o principal requisito o seu interesse por este magnfico Servidor de Aplicao.
Vamos comear, no prximo tpico vamos aos Downloads e consequentemente a
instalao.
12
Downloads
Downloads
No presente momento, iremos utilizar o Wildfly verso 10.1.0.Final no decorrer dos
prximos tpicos. Sendo este contedo atualizado conforme novas verses forem lanadas.
Alm das verses Final existem tambm as Beta e Alpha que so lanadas antes da Final
com o intuito de testar o Servidor de Aplicao para que a verso Final seja o mais perto
possvel de ser bug free.
Podemos encontrar todas as verses disponveis para download neste link, realize o
download da verso 10.1.0.Final ou clique aqui para realizar o download.
Neste caso irei utilizar a verso 8 do Java que pode ser encontrado neste link.
Lembre-se que para realizar o download do Java necessrio escolher o binrio de acordo
com o Sistema Operacional que estiver utilizando. Neste caso estaremos utilizando o
seguinte binrio: jdk-8u101-linux-x64.rpm. Se preferir voc tambm pode utilizar o
OpenJDK, o que torna a instalao bem mais simples no Linux
Ou
13
Downloads
Aps a finalizao verifique se o Java foi corretamente instalado e configurado, para isso
basta executar o seguinte comando:
$ java -version
openjdk version "1.8.0_101"
OpenJDK Runtime Environment (build 1.8.0_101-b14)
OpenJDK 64-Bit Server VM (build 25.101-b14, mixed mode)
Se o resultado for semelhante a este voc j est pronto para ir para o prximo tpico.
14
Instalao passo a passo
Bom, como todos ns temos o direito de escolha, para ilustrar os exemplos deste tpico e
dos demais irei usar a seguinte configurao:
Obs: O banco de dados no ser necessrio neste primeiro momento, mas ser utilizado
em captulos futuros.
Neste caso utilizarei um usurio chamado _wildfly _que ser somente utilizado para
executar o WildFly, para criar o usurio execute o seguinte comando:
15
Instalao passo a passo
# cd /opt
# ln -s wildfly-10.1.0.Final wildfly
# ll /opt
total 0
drwxr-xr-x. 10 root root 220 Jul 28 01:02 wildfly-10.1.0.Final
Note que as permisses de usurio e grupo esto configuradas para o usurio root, como
boas prticas no iremos utilizar o usurio root para execuo do WildFly, e sim o usurio
criado anteriormente, altere as permisses com o seguinte comando:
Caso ocorra tudo bem durante a inicializao do WildFly voc ter um log muito semelhante
a este:
16
Instalao passo a passo
JBOSS_HOME: /opt/wildfly-10.1.0.Final
JAVA: java
=========================================================================
17
Instalao passo a passo
18
Instalao passo a passo
listening on http://127.0.0.1:9990
12:33:30,013 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 1
0.1.0.CR1 (WildFly Core 2.2.0.CR9) started in 4417ms - Started 331 of 577 services (39
3 services are lazy, passive or on-demand)
19
Criando usurio de gerenciamento
Neste tpico iremos abordar somente a criao de usurio de gerenciamento bem como
acessar a console de gerenciamento.
Caso voc tente acessar a console de gerenciamento sem ter antes, criado o usurio voc
ser redirecionado para a pgina abaixo informando que necessrio executar o script add-
user.sh (add-user.bat para Windows) para adicionar um usurio de gerenciamento
utilizando o realm ManagementRealm:
Acesse http://localhost:9990
20
Criando usurio de gerenciamento
$ ./add-user.sh
21
Criando usurio de gerenciamento
Logo a seguir voc ser informado que o usurio admin j existe porm est desativado e
ir lhe mostrar as opes disponveis:
User 'admin' already exists and is disabled, would you like to...
a) Update the existing user password and roles
b) Enable the existing user
c) Type a new username
(a):
Voc ter a opo de atualizar usurio existente e seus grupos, ativar o usurio existente ou
digitar um novo username. Neste caso iremos somente atualizar a senha do usurio admin,
por padro esta opo j est selecionada, apenas tecle enter.
Password recommendations are listed below. To modify these restrictions edit the add-u
ser.properties configuration file.
- The password should be different from the username
- The password should not be one of the following restricted values {root, admin, adm
inistrator}
- The password should contain at least 8 characters, 1 alphabetic character(s), 1 dig
it(s), 1 non-alphanumeric symbol(s)
Password :
Re-enter Password :
What groups do you want this user to belong to? (Please enter a comma separated list,
or leave blank for none)[ ]:
Updated user 'admin' to file '/opt/wildfly-10.1.0.Final/standalone/configuration/mgmt-
users.properties'
Updated user 'admin' to file '/opt/wildfly-10.1.0.Final/domain/configuration/mgmt-user
s.properties'
Updated user 'admin' with groups to file '/opt/wildfly-10.1.0.Final/standalone/config
uration/mgmt-groups.properties'
Updated user 'admin' with groups to file '/opt/wildfly-10.1.0.Final/domain/configurat
ion/mgmt-groups.properties'
22
Criando usurio de gerenciamento
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection
for server to server EJB calls.
yes/no? no
Dicas
23
Criando usurio de gerenciamento
username=8959126dd54df47f694cd762a51a1a6f
24
Criando usurio de gerenciamento
#
# Password restriction
#
# Password must not match the username. Valid values: TRUE or FALSE.
password.restriction.mustNotMatchUsername=TRUE
# Password strength. Valid values: VERY_WEAK, WEAK, MODERATE, MEDIUM, STRONG, VERY_STR
ONG or EXCEPTIONAL.
# If not present, it defaults to "MODERATE"
password.restriction.strength=MEDIUM
Para alterar a poltica de senha conforme suas necessidades apenas edite a propriedade
desejada neste arquivo e salve. As configuraes realizadas j sero aplicadas na criao
do prximo usurio.
25
Instalando como Servio no Linux
Init.d
Under development
Systemd
O arquivo de configurao do systemd disponibilizado na instalao do WildFly j est
pronto para uso, sendo necessrio realizar somente alguns passos antes de execut-lo
como servio.
Neste ponto, ser necessrio ter efetuado os passos descritos no tpico Instalao passo a
passo. Com o ambiente pr configurado, siga os passos abaixo:
26
Instalando como Servio no Linux
# mkdir /etc/wildfly
# cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.conf /etc/wildfly/
# cp /opt/wildfly/docs/contrib/scripts/systemd/wildfly.service /etc/systemd/system/
# cp /opt/wildfly/docs/contrib/scripts/systemd/launch.sh /opt/wildfly/bin/
# chmod +x /opt/wildfly/bin/launch.sh
# chown wildfly. /opt/wildfly/bin/launch.sh
Para configurar o servio do WildFly para usar o modo Domain ao invs do modo
Standalone (padro), edite o arquivo wildfly.service localizado em /etc/wildfly conforme o
exemplo abaixo:
Por padro o endereo de bind vem configurado c omo 0.0.0.0, no uma boa prtica
deix-lo com essa configurao, altere o endeo de bind para o endereo de IP do servidor
em que o WildFly ser executado. Para alterar o endereo de bind edite o mesmo arquivo
citado acima da seguinte maneira, como exemplo ser utilizado o ip 192.168.1.10:
27
Instalando como Servio no Windows
28
Estrutura - Cada coisa em seu lugar!
29
Diretrios
Diretrios
O WildFly manteve praticamente a mesma estrutura de diretrios do JBoss AS 7, enxuta e
centralizada. Para aqueles que ainda no esto familiarizados com essa nova estrutura, a
prxima seo descrever em detalhes abaixo.
$JBOSS_HOME
appclient
bin
client
docs
contrib
scripts
init.d
service
systemd
examples
licenses
schema
domain
configuration
domain_xml_history
current
snapshot
data
tmp
servers
modules
standalone
configuration
standalone_xml_history
current
snapshot
data
deployments
lib
log
tmp
welcome-content
30
Diretrios
<subsystem xmlns="urn:jboss:domain:logging:3.0">
Note que ele est utilizando a verso 3.0 do schema logging. Este mesmo
padro vlido para todos os outros subsystems.
domain - Abriga toda a configurao do modo domain bem como os arquivos dos
servidores gerenciados (veremos melhor sobre isso mais a frente) e arquivos de
deployments, arquivos temporrios e arquivos de logs.
configuration - Contm todos os arquivos de configurao do modo domnio.
domain_xml_history - Contm todo o histrico dos arquivos de configurao.
current - Armazena a configurao corrente com sufixos v1, v2, vX.
snapshot - Armazena os snapshots, obtidos atravs do comando CLI
/host=HOSTNAME:take-snapshot
31
Diretrios
32
Arquivos de configurao
Arquivos de configurao
Desde o JBoss AS 7, a configurao centralizada o que, de certa forma facilita muito o
gerenciamento do seu servidor ou parque de servidores.
O intuto deste tpico ser somente descrever os principais arquivos de configuraes e sua
aplicabilidade, ser tratado em tpicos posteriores como configurar o WildFly.
Configuraes em geral;
Configuraes do modo standalone;
Configuraes do modo domnio.
Configuraes Gerais
Iremos comear com as confiuguraes bem bsicas que so as configuraes realizadas
dentro do diterrio bin. Nele temos os seguintes arquivos de configurao:
Obs: O wildFly 10 j possui suporte ao PowerShell, note que j h vrios scripts com o
sufixo ps1 no diretrio bin.
33
Arquivos de configurao
34
Modo Standalone x Domain
Modo Standalone
O modo Standalone o modo tradicional das verses anteriores. Basicamente implica em
ter uma instalao diferente (ou um diretrio standalone diferente) para cada instncia1 de
Wildfly. Ou seja, para cada Wildfly rodando no seu ambiente necessrio alterar seus
prprios arquivo de configurao, suas prprias opes de execuo para JVM, etc.
Modo Domain
O modo Domain o modo que foi introduzido no JBoss AS 7 onde possvel gerenciar um
conjunto de instncias Wildfly, agrupando-os e assim permitindo compartilhar configuraes
comuns entre eles. Alm de compartilhar configuraes, possvel tambm atravs de um
nico console de gerenciamento iniciar ou parar instncias (ou grupos inteiros), verificar seu
status e estatsticas de cada subsystem (falaremos sobre isso mais adiante), etc.
Obviamente, ao analisar os dois modos de gerenciamento, vem aquela famosa pergunta: "E
agora? Qual deles melhor?". Com certeza a resposta sempre partir do "Depende", mas
para dar uma ajuda em escolher o melhor modo de gerenciamento necessrio ter em
mente as seguintea perguntas:
Com base nessas perguntas, voc consegue decidir com bastante clareza e segurana qual
o melhor modo a ser utilizado.
isoladamente.
36
Profiles e suas diferenas
Arquivo de
Perfil Utilizao
configurao*
Web standalone.xml Permite o uso do perfil Java EE Web
Full standalone-full.xml Permite o uso do perfil Java EE Full
Web c/ Permite o uso do perfil Java EE Web com
standalone-ha.xml
HA caractersticas de HA
$ ./standalone.sh -c standalone-full-ha.xml
37
Profiles e suas diferenas
Nome do
Perfil Utilizao
profile
Web default Permite o uso do perfil Java EE Web
Full full Permite o uso do perfil Java EE Full
Web c/ Permite o uso do perfil Java EE Web com
ha
HA caractersticas de HA
Full c/ Permite o uso do perfil Java EE Full com caractersticas
full-ha
HA de HA
<profiles>
<profile name="default">
<subsystem xmlns="urn:jboss:domain:logging:3.0">
...
<profile name="full">
...
</profiles>
A escolha do profile a ser utilizado por grupo de servidores feita no tambm no arquivo
domain.xml da seguinte maneira:
<server-groups>
<server-group name="main-server-group" profile="full">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="full-sockets"/>
</server-group>
<server-group name="other-server-group" profile="full-ha">
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="full-ha-sockets"/>
</server-group>
</server-groups>
O treco a acima encontrado no final do arquivo e note que em cada definio de grupo de
servidores temos o parmetro profile para cada um deles.
38
Profiles e suas diferenas
39
Classloader Modular
ClassLoader Modular
ClassLoaders so parte de qualquer aplicao Java, nela reserva a responsabilidade de
carregar dinamicamente as classes para a Mquina Virtual Java (JVM) para ento criar
objetos a partir daquela classe. Geralmente essas classes so carregadas sob demanda,
ou seja, medida que objetos so instanciados o ClassLoader carrega o bytecode da
classe em memria.
1. Bootstrap
2. Extension
3. System
40
Classloader Modular
41
O que e como funciona?
42
Adicionando um mdulo customizado
Nome do mdulo
main
module.xml
| biblioteca.jar
O mdulo precisa ter uma estrutura similar aos pacotes em java, ou seja, se voc possui um
pacote chamado br.com.empresa.aplicacao ento voc precisa ter um diretrio criado para
cada nome. Nesse exemplo, teria que haver um diretrio com dentro do diretrio br
contendo um subdiretrio empresa/aplicacao. Dentro dessa estrutura h um diretrio main,
onde espera-se que seja a ltima verso daquele mdulo (ou a verso padro, como quer
que queira chamar). Caso voc queira criar vrias verses do mesmo mdulo, basta criar
um subdiretrio dentro do diretrio do mdulo contendo o nome da verso. Por fim, todos os
arquivos .jar pertencentes a esse mdulo devem ser copiados dentro do caminho /main (ou
/versao, caso esteja criando uma nova verso do mdulo) e o arquivo module.xml. Esse
arquivo serve como um metadado dentro do mdulo, especificando os jars pertencentes a
esse mdulo bem como suas dependncias. Abaixo um exemplo:
com
myjars
jfreechart
main
| | jfreechart.jar
| | common.jar
| | module.xml
1.0.15
| | jfreechart.jar
| | common.jar
| | module.xml
O arquivo module.xml
43
Adicionando um mdulo customizado
Para descrever o mdulo, necessrio criar um arquivo xml para indicar os jars
pertencentes a este mdulo bem como suas dependncias.
44
Definindo dependncias explcitas de mdulos em sua aplicao
45
Configurando WildFly 10
Configurando WildFly 10
Nos prximos tpicos, iremos conhecer como configurar cada componente Java EE do
Wildfly e seus componentes de infraestrutura (como logging), mas antes de darmos incio
necessrio entendermos como eles foram desenvolvidos no Wildfly.
Extension
O Extension do Wildfly a forma como o Wildfly Core pode reconhecer novas
funcionalidades e assim agregar ao seu funcionamento principal. Basicamente, a funo do
extension registrar uma funcionalidade para o Wildfly Core carregar em memria e
tambm gerenciar o ciclo de vida dela. Por exemplo, as extensions listadas no perfil padro
(standalone.xml) so as seguintes:
org.jboss.as.clustering.infinispan
org.jboss.as.connector
org.jboss.as.deployment-scanner
org.jboss.as.ee
org.jboss.as.ejb3
org.jboss.as.jaxrs
org.jboss.as.jdr
org.jboss.as.jmx
org.jboss.as.jpa
org.jboss.as.jsf
org.jboss.as.logging
org.jboss.as.mail
org.jboss.as.naming
org.jboss.as.pojo
46
Configurando WildFly 10
org.jboss.as.remoting
org.jboss.as.sar
org.jboss.as.security
org.jboss.as.transactions
org.jboss.as.webservices
org.jboss.as.weld
org.wildfly.extension.batch.jberet
org.wildfly.extension.bean-validation
org.wildfly.extension.io
org.wildfly.extension.request-controller
org.wildfly.extension.security.manager
org.wildfly.extension.undertow
Subsystem
Subsystem nada mais que a funcionalidade em si implementada e que registrada no
Wildfly Core pela Extenstion. Nela, possvel extender a funcionalidade atravs da
configurao via xml. O Subsystem onde realmente voc ter o suporte a Servlets no
Wildfly, EJB, Transaes, Logging, etc. Como exemplo, abaixo temos a configurao do
subsystem Logging:
47
Configurando WildFly 10
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t)
%s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %
s%e%n"/>
</formatter>
</subsystem>
Interfaces
Interfaces so denominaes lgicas para interfaces de rede que iro se associar aos
sockets (ver prxima seo) para expor algum servio de rede para os Subsystems. As
Interfaces podem associar os sockets para um IP em especfico ou at mesmo para uma
48
Configurando WildFly 10
NIC2 da mquina fsica, permitindo ento dedicar o trfego de rede dos Subsystems do
Wildfly passar por uma interface especfica de rede. Abaixo temos um exemplo de
Interfaces:
<interfaces>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="internal">
<nic name="eth1"/>
</interface>
</interfaces>
Histrico de alteraes
Uma das maiores funcionalidades no Wildfly o registro histrico de configuraes. Dessa
forma, se houver qualquer alterao nos arquivos de configurao (seja ela editando
manualmente o arquivo, via JBoss CLI ou Console Web), o Wildfly ir criar um backup das
alteraes. Isso permite que no caso de alguma alterao afetar negativamente o ambiente
possvel reverter a alterao apenas copiando a ltima verso alterada.
A estrutura de histrio est descrita no captulo Diretrios. Para recuperar o arquivo, basta
sobreesrcrever o atual com um dos snapshots que ficam dentro do diretrio snapshots (o
snapshot o nome do arquivo de configurao seguido da data e hora de alterao).
2. NIC = Network Interface Card, ou simplesmente Interface de Rede
3. Definimos offset a soma a ser colocada no nmero da porta de cada Socket Binding
definido no grupo. Ex. Se definir um offset de 150 e a porta definida para o Socket
Binding http 8080, ento o nmero da porta 8230.
49
System properties
System properties
Voltando rapidamente ao tpico Interfaces, reparou em algo interessante na configurao?
Vou copiar o trecho aqui para deixar mais claro:
...
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
...
Perceba que o valor atribuido aqui foi escrito no formato de uma EL4, ou seja, possvel
definir dinmicamente um valor a ele ou apenas aceitar o valor padro (que no caso desse
exemplo 127.0.0.1 ). Essa funcionalidade permite que voc utilize placeholders dentro
dos arquivos de configurao permitindo que voc defina esses valores ao inicializar o
servidor sem precisar configurar os arquivos para cada instncia.
Para inicializar uma instncia de Wildfly alterando esse valor, basta que voc execute o
Wildfly dessa forma:
$ bin/standalone.sh -Djboss.bind.address=192.168.1.100
Esse comando ir iniciar uma instncia de Wildfly com todos os seus servios respondendo
ao IP 192.168.1.100 . A opo -D da linha de comando parte do java e conhecido
como System Property, onde qualquer aplicao Java pode receber valores dinmicamente
ao iniciar a JVM. O Wildfly fez uso dessa funcionalidade para tornar a configurao dos
seus subsystems mais fceis de alterar de instncia para instncia.
Acesse http://localhost:9990
50
System properties
51
System properties
Clique em View
Clique em Add . Preencha com o nome da System Property e seu valor e depois clique
em Save
52
System properties
/system-property=PROPERTY_NAME:add(value=PROPERTY_VALUE)
Exemplo:
/system-property=jboss.bind.address:add(value=192.168.1.2)
53
System properties
No caso de haver uma System Property em mais de um escopo, prevalece aquele que
mais especfico. Ou seja, havendo a mesma System Property Geral e no Server Group,
prevalece a do Server Group, da mesma forma que se houver a mesma System Property no
Server Group e no Server, prevalece a do Server.
4. Expression Language
54
Socket-bindings
Socket-bindings
Socket Bindings define o conjunto de Sockets a serem utilizados pelos Subsystems do
Wildfly. Nele, voc pode definir um nome lgico para esse socket, a porta a ser utilizada, a
qual Interface ir responder, se o trfego somente de sada, etc. Alm disso, com a tag
3
<socket-binding-group> , possvel definir um offset de portas para que instncias
diferentes rodando na mesma mquina fsica no tenham conflito de portas. Abaixo temos
uma configurao de Socket Binding para o perfil Web:
Como configurar
Alm da configurao manual no XML, possvel tambm alterar os Socket-Bindings de
outras maneiras a seguir:
Clique em Configuration
55
Socket-bindings
Clique em View
56
Socket-bindings
Via CLI
/socket-binding-group=new-sockets:add(default-interface=public)
/socket-binding-group=new-sockets/socket-binding=new-socket-binding:write-attribute(na
me=interface,value=unsecure)
57
Socket-bindings
58
Subsystem datasource
Subsystem datasources
<subsystem xmlns="urn:jboss:domain:datasources:4.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS">
<connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url>
<driver>h2</driver>
<pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
</pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</datasource>
<xa-datasource jndi-name="java:jboss/datasources/ExampleXADS" pool-name="Examp
leXADS">
<driver>h2</driver>
<xa-datasource-property name="URL">jdbc:h2:mem:test</xa-datasource-property>
<xa-pool>
<min-pool-size>10</min-pool-size>
<max-pool-size>20</max-pool-size>
<prefill>true</prefill>
</xa-pool>
<security>
<user-name>sa</user-name>
<password>sa</password>
</security>
</xa-datasource>
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
59
Subsystem datasource
$ EAP_HOME/bin/jboss-cli.sh
$ deploy driver-jdbc.jar
Caso o deploy tenha sido feito com sucesso, voc ver a seguinte mensagem no log do
servidor:
$ EAP_HOME/bin/jboss-cli.sh
60
Subsystem datasource
connect
/subsystem=datasources/jdbc-driver=DRIVER_NAME:add(driver-name=DRIVER_NAME,driver-modu
le-name=MODULE_NAME,driver-xa-datasource-class-name=XA_DATASOURCE_CLASS_NAME, driver-c
lass-name=DRIVER_CLASS_NAME)
/subsystem=datasources/jdbc-driver=mysql:add(driver-name=mysql,driver-module-name=com.
mysql,driver-xa-datasource-class-name=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource,
driver-class-name=com.mysql.jdbc.Driver)
com.mysql.jdbc.Driver
Utilize o comando jar do Java para incluir o novo arquivo no Driver JDBC:
61
Subsystem mail
Subsystem Mail
/socket-binding-group=standard-sockets/remote-destination-outbound-socket-binding=my-s
mtp:add(host=localhost, port=25)
/subsystem=mail/mail-session=mySession:add(jndi-name=java:jboss/mail/MySession)
/subsystem=mail/mail-session=mySession/server=smtp:add(outbound-socket-binding-ref=my-
smtp, username=user, password=pass, tls=true)
@Resource(lookup="java:jboss/mail/MySession")
private Session session;
62
Subsystem logging
Subsystem Logging
Em modo Standalone: WILDLFY_HOME/standalone/server/log
Em modo Domain: WILDFLY_HOME/domain/servers/SERVIDOR/log/server.log
Configurando Logging
Em modo Standalone: WILDFLY_HOME/standalone/configuration/logging.properties
Em modo Domain: WILDFLY_HOME/domain/servers/SERVIDOR/data/server.log
import org.jboss.logging.Logger;
LOGGER.debug("debug");
LOGGER.info("info");
LOGGER.error("error");
LOGGER.trace("trace");
LOGGER.fatal("fatal");
63
Subsystem logging
/subsystem=logging:write-attribute(name=use-deployment-logging-config,value=false)
64
Subsystem segurana
65
Subsystem servios Web
66
Subsystem Transaes
67
Subsystem Remoting
68
Subsystem IO
69
Subsystem Batch
Subsystem batch
<subsystem xmlns="urn:jboss:domain:batch-jberet:1.0">
<default-job-repository name="in-memory"/>
<default-thread-pool name="batch"/>
<job-repository name="in-memory">
<in-memory/>
</job-repository>
<thread-pool name="batch">
<max-threads count="10"/>
<keepalive-time time="30" unit="seconds"/>
</thread-pool>
</subsystem>
70
Subsystem Messaging
Subsystem Messaging
71
Alta disponibilidade (HA)
72
Subsystem jGroups
73
Subsystem Infinispan
74
Wildfly como loadbalancer
75
Configurando loadbalancer externos
76
Modo Domain passo a passo
77
Primeiros Passos
78