JBoss AS 7

Eliminando Caracteres Não Alpha Numéricos da Session ID no JBoss AS 7.1.1

Postado em

Olá,

Existem algumas situações em que a session id gerada pelo JBoss Web não pode conter caracteres não alpha numéricos ou seja caracteres de A a Z, incluindo maiúsculas e minúsculas. Números também estão incluso nesse conjunto.

Existe uma propriedade chamada SESSION_ID_ALPHABET que permite restringir apenas alpha numérico no session id.

Vamos aos testes!  Vou utilizar uma instância standalone e JAAS Properties based configuration.

O primeiro passo é adicionar um usuário com que utilize a realm de nome ApplicationRealm. Para isso basta executar o script em JBOSS_HOME/bin/standalone.bat ou JBOSS_HOME/bin/standalone.sh

users

Perceba que eu adicionei um usuário chamado magnani com a role ADMINISTRATOR para a realm ApplicationRealm.

Eu vou deixar aqui uma aplicação web já configurada bastando apenas realizar deploy para realizar os testes.

No meu primeiro teste a session id foi gerada no seguinte formato: JSESSIONID=uJn14dUJSU1BUF+QGZNVI3tQ.undefined. Observe que o caractere + foi utilizado na string da session.

SessionOne

Para limitar a geração da session id somente a alpha numéricos adicione a propriedade SESSION_ID_ALPHABET no standalone.xml.

Utilizando o JBoss CLI execute:


./system-property=org.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET:add(value="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789")

Realize o login novamente e perceba que agora  a session id foi gerada no seguinte formato: JSESSIONID=qoEaQs9nbziCF1K4p2KsVMsm.undefined.

 

SessionTwo

O objetivo foi atingindo 🙂

Essa entrada no JBoss CLI gerou uma system propertie como abaixo:


<system-properties>
<property name="org.apache.catalina.session.ManagerBase.SESSION_ID_ALPHABET" value="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"/>
</system-properties>

 

Espero que isso seja útil!

Abraços

Fonte: https://community.jboss.org/thread/202387

Utilizando IPv6 e Desabilitando IPv4 no JBoss AS 7.1.1

Postado em Atualizado em

ipv6-ipv4

E ai Galera blz?

A dica de hoje é bem simples.

Para que o JBoss passe a utilizar IPv6 em vez de IPv4 basta adicionar as propriedades abaixo no arquivo JBOSS_HOME/bin/standalone.conf ( Modo Standalone ) ou  JBOSS_HOME/bin/domain.conf ( Modo Domain ):

  JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=false -Djava.net.preferIPv6Addresses=true"

Uma outra alternativa seria adicionar essa propriedade utilizando system-properties no domain.xml ou standalone.xml:

<system-properties>
   <property name="java.net.preferIPv4Stack" value="false"/>
   <property name="java.net.preferIPv6Addresses" value="true"/>
</system-properties>

Basta reiniciar o JBoss para que as alterações comecem a funcionar.

Abraços

BUG na Inicialização do JBoss AS 7 em Modo Domain no Fedora 18

Postado em

E ai galera blz?

Atualmente estou escrevendo um artigo para uma revista e como base estou utilizando o Fedora 18.  Realizei a instalação com o comando:


$ sudo yum install jboss-as –y

Para iniciar o JBoss em modo Domain eu editei o arquivo  /etc/jboss-as/jboss-as.conf e alterei o atributo JBOSS_CONFIG:


# The configuration you want to run

JBOSS_CONFIG=domain.xml

# The address to bind to

JBOSS_BIND=0.0.0.0

Depois editei o arquivo serviço /usr/lib/systemd/system/jboss-as.service alterando o atributo ExecStart para utilizar o script domain.sh


ExecStart=/usr/share/jboss-as/bin/domain.sh -c $JBOSS_CONFIG -b $JBOSS_BIND

Executei o comando para recarregar as configurações de serviço:


$ sudo systemctl --system daemon-reload

Reiniciei o JBoss com o commando:


$ sudo systemctl restart jboss-as.service

O serviço iniciava o host controller e o process controller e morria!


jboss-as.service - The JBoss Application Server
Loaded: loaded (/usr/lib/systemd/system/jboss-as.service; disabled)
Active: inactive (dead)
CGroup: name=systemd:/system/jboss-as.service

A Seguinte exception estava sendo lançada:


01:36:38,071 INFO  [org.jboss.modules] (main) JBoss Modules version 1.1.1.GA
01:36:38,453 ERROR [stderr] (main) java.lang.IllegalStateException: JBAS015859: Could not create servers directory: /usr/share/jboss-as/domain/servers
01:36:38,456 ERROR [stderr] (main)      at org.jboss.as.host.controller.HostControllerEnvironment.<init>(HostControllerEnvironment.java:397)
01:36:38,459 ERROR [stderr] (main)      at org.jboss.as.host.controller.Main.determineEnvironment(Main.java:392)

Olhando o código fonte da classe org.jboss.as.host.controller.HostControllerEnvironment.java percebi que o problema estava na hora de pegar a propriedade public static final String DOMAIN_SERVERS_DIR = “jboss.domain.servers.dir”;

Então como medida paliativa editei o arquivo /usr/share/jboss-as/bin/domain.conf e adicionei o diretório de criação dos servers por exemplo para testes utilizei o tmp mesmo:


JAVA_OPTS="$JAVA_OPTS -Djboss.domain.default.config=domain.xml -Djboss.host.default.config=host.xml -Djboss.domain.servers.dir=/tmp"

Pronto problema resolvido 🙂


jboss-as.service - The JBoss Application Server
Loaded: loaded (/usr/lib/systemd/system/jboss-as.service; disabled)
Active: active (running) since Sat, 2013-05-18 01:40:11 EDT; 36s ago
Main PID: 3279 (domain.sh)
CGroup: name=systemd:/system/jboss-as.service
â 3279 /bin/sh /usr/share/jboss-as/bin/domain.sh -c domain.xml -b 0.0.0.0
â 3317 java -D[Process Controller] -server -Xms64m -Xmx512m -XX:MaxPermSize=256m -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=tru...
â 3329 java -D[Host Controller] -Dorg.jboss.boot.log.file=/usr/share/jboss-as/domain/log/host-controller.log -Dlogging.configuration=file:/usr/sh...
â 3377 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-one] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m...
â 3392 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.19.x86_64/jre/bin/java -D[Server:server-two] -XX:PermSize=256m -XX:MaxPermSize=256m -Xms64m -Xmx512m...

Vou abrir uma issue no Fedora para eles verificarem isso!

Abraços

Threads Interessantes na Comunidade JBoss Brasil

Postado em Atualizado em

E ai galera blz?

Como todos sabem nós estamos iniciando novamente o projeto JBUG Brasil.

Nos últimos dias rolaram umas threads bem legais para quem quer aprender um pouco sobre balanceamento de carga com JBoss 7, Mod Cluster e Apache.

Grande Abraço
— Mauricio Magnani

Automatizando Deploy com Apache Ant no JBoss AS 7.1.3 ( JBoss EAP 6.0.1 )

Postado em Atualizado em

Olá amigos,

Acredito que todos nós que trabalhamos com desenvolvimento precisamos em algum momento deployar a aplicação em algum servidor para que outras pessoas tenham acesso e possam realizar os devidos testes. Hoje a tarde passei por uma dessas situações: Eu precisava pegar um pacote .war e realizar o deploy nas minhas instâncias na Amazon EC2. Então estava com o seguinte cenário:

cli remote

Eu estava fazendo algo bem manual mesmo.  Copiava o arquivo .war para o servidor remoto na Amazon e depois me conectava ao CLI remotamente utilizando o comando:

jboss-cli.bat  --connect --controller=201.66.21.20:9999 --user=jboss--password=123456

Isso se tornou uma tarefa bem repetitiva pois toda as vezes eu não me lembrava do IP do JBoss e tinha também que entrar em um Path especifico para executar o JBoss CLI.

Então para facilitar um pouco o processo de deploys, undeploys e outras tarefas, eu decidi utilizar o Apache Ant.  A instação do Ant é bem simples. Basta descompactar, criar a variável ANT_HOME  apontando para o arquivo descompactado do ant e coloca-la no path.

Para verificar se está funcionado basta abrir o cmd e executar: ant. Se obtiver uma resposta similar a abaixo é por que está funcionando.

ant-01

Um script de build do Ant consiste em um documento no formato XML e deve se chamar build.xml.

Vou supor que o ambiente JBoss já está funcionando com o usuário de gerenciamento criado e liberado para acesso remoto. Caso não esteja siga o tutorial Acessando o JBoss AS 7.1.2 (EAP 6) Remotamente Utilizando CLI.

Crie um scritpt build.xml e deixe-o como abaixo:

<?xml version="1.0"?>
<project name="jboss" basedir=".">

<presetdef name="jboss-cli">
   <java jar="D:\Desenvolvimento\jboss-eap\jboss-eap-6.0.1\jboss-eap-6.0\jboss-modules.jar" fork="true" >
      <arg line="-mp D:\Desenvolvimento\jboss-eap\jboss-eap-6.0.1\jboss-eap-6.0\modules org.jboss.as.cli --connect --controller=192.168.0.127:9999 --user=jboss --password=123456" />
  </java>
</presetdef>

 <target name="deploy-project">
  <jboss-cli failonerror="true">
     <arg line="'deploy test.war'" />
  </jboss-cli>
 </target>

 <target name="undeploy-project">
  <jboss-cli failonerror="true">
     <arg line="'undeploy test'" />
   </jboss-cli>
 </target>
</project>

Perceba que está meio bagunçado mas funciona perfeitamente. Para organizar um pouco, voçê pode criar alguns properties como o JBOSS_HOME e o nome da aplicação .war. Veja que é possível também executar qualquer comando CLI que seja necessário.

Veja nos meus testes o resultado:

Deploy

deploy-ant-remoto

Undeploy

undeploy-ant-remoto

Esse é um dos jeitos mais simples de melhorar as práticas de deploy mas o ideal é utilizar um servidor de integração contínua como o Jenkins do qual vou falar nos proxímos posts. Eu vou mostrar como integrar Jenkins, GitHub e o  JBoss AS 7 com toda a estrutura de desenvolvimento.

Por hoje é isso ai!

Grande Abraço

Mauricio Magnani Jr

Deployando Apache Solr 4.2.1 no JBoss AS 7.1.3 ( JBoss EAP 6.0.1 )

Postado em Atualizado em

Olá amigos,

O Apache Solr  é um servidor ( open source ) de buscas de alta performance que utiliza o conhecido Apache Lucene em seu motor de busca. Além da integração com a plataforma Java o Solr possui uma API Rest  que permite a integração com praticamente todas as plataformas.

Mais informações sobre features e APIs pode ser vistas diretamente no site do projeto: http://lucene.apache.org/solr/

solr

Baixe o pacote solr-4.2.1.zip.

Descompacte  em um diretório de sua preferência por exemplo:

[jboss@localhost solr]$ pwd
/usr/local/jboss/solr
[jboss@localhost solr]$ unzip /tmp/solr-4.2.1.zip

O diretório solr-4.2.1 será criado.  Esse diretório com contém o a aplicação solr-4.2.1.war que será deployada no JBoss 7.

Antes de realizar o deploy do Solr defina as propriedades solr.solr.home e solr.data.dir e também a URI encondig para UTF-8.

Edite o arquivo JBOSS_HOME/standalone/configuration/standalone.xml e adicione as propriedades de sistema abaixo de </extensions>:

<system-properties>
  <property name="solr.solr.home" value="/usr/local/jboss/solr/solr-4.2.1"/>
  <property name="solr.data.dir" value="/usr/local/jboss/solr/data"/>
  <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
  <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
</system-properties>

Inicie o JBoss e faça o deploy copiando a aplicação solr-4.2.1.war para o diretório JBOSS_HOME/standalone/deployments/.

Acesse o Solr pelo navegador http://localhost:8080/solr-4.2.1/ e perceba que a exception collection1: org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: Could not load config for solrconfig.xml foi lançada.

exception-solrPara corrigir, basta copiar um dos arquivos de configuração de exemplo. Supondo que você está em /usr/local/jboss/solr/solr-4.2.1  execute o seguinte comando:

  [jboss@localhost solr-4.2.1]$ cp -Rap example/solr/collection1/ .

Acesse novamente a aplicação http://localhost:8080/solr-4.2.1/ e veja que o erro foi corrigido!

solr-final

No proximo post sobre Solr vou mostrar como adicionar um security domain para que o painél de administraçao não fique aberto dessa forma e também pretendo criar algumas aplicações com RestEasy para interagir com o Solr.

Fonte: http://wiki.apache.org/solr/SolrJBoss

Grande Abraço.

Mauricio Magnani Jr

Utilizando Múltiplas Versões de Drivers JDBC no JBoss AS 7.1.3 (JBoss EAP 6.0.1)

Postado em

E ai galera blz?

Em algumas situações precisamos utilizar várias versões de drivers JDBC do mesmo fabricante. Imagine uma empresa em que existem por exemplo 3 versões do Sistema de Gestao de Contratos que estão sendo executadas no JBoss AS 7 e cada uma delas utilize uma versão específica do Driver JDBC do MySQL:

  • Sistema de Gestao de Contratos Versão 1.0 – mysql-connector-java-5.1.19
  • Sistema de Gestao de Contratos Versão 2.0 – mysql-connector-java-5.1.23
  • Sistema de Gestao de Contratos Versão 3.0 – mysql-connector-java-5.1.24

A melhor abordagem na minha opnião é criar módulos globais (global module) e adicionar slots com diferentes versões de drivers.

Baixe os pacotes mysql-connector-java-5.1.19.zipmysql-connector-java-5.1.23.zip  e mysql-connector-java-5.1.24.zip no site do fabricante.

drivers-pack

Crie a estrutura de diretório para armazenar os arquivos dos módulos:

 mkdir -p jboss-eap-6.0/modules/com/mysql/main
 mkdir -p jboss-eap-6.0/modules/com/mysql/5.1.19
 mkdir -p jboss-eap-6.0/modules/com/mysql/5.1.23

Copie os arquivos .JAR para os diretórios dos módulos conforme abaixo:

 cp /tmp/mysql-connector-java-5.1.24-bin.jar jboss-eap-6.0/modules/com/mysql/main/
 cp /tmp/mysql-connector-java-5.1.19-bin.jar jboss-eap-6.0/modules/com/mysql/5.1.19/
 cp /tmp/mysql-connector-java-5.1.23-bin.jar jboss-eap-6.0/modules/com/mysql/5.1.23/

Perceba que o arquivo mysql-connector-java-5.1.24-bin.jar foi copiado para o “main” pois ele será a nossa versão principal. O próximo passo é cria o arquivo module.xml para cada versão:

Versão 5.1.19

Crie o arquivo jboss-eap-6.0/modules/com/mysql/5.1.19/module.xml e adicione o seguinte conteúdo:

<?xml version="1.0" ?>

<module xmlns="urn:jboss:module:1.1" name="com.mysql" slot="5.1.19">

 <dependencies>
   <module name="javax.api"/>
   <module name="javax.transaction.api"/>
 </dependencies>

 <resources>
   <resource-root path="mysql-connector-java-5.1.19-bin.jar"/>
 </resources>

</module>

Versão 5.1.23

Crie o arquivo jboss-eap-6.0/modules/com/mysql/5.1.23/module.xml e adicione o seguinte conteúdo:

<?xml version="1.0" ?>

<module xmlns="urn:jboss:module:1.1" name="com.mysql" slot="5.1.23">

 <dependencies>
   <module name="javax.api"/>
   <module name="javax.transaction.api"/>
 </dependencies>

 <resources>
   <resource-root path="mysql-connector-java-5.1.23-bin.jar"/>
 </resources>

</module>

Versão 5.1.24 “main”

Crie o arquivo jboss-eap-6.0/modules/com/mysql/main/module.xml e adicione o seguinte conteúdo:

<?xml version="1.0" ?>

<module xmlns="urn:jboss:module:1.1" name="com.mysql" slot="main">

 <dependencies>
   <module name="javax.api"/>
   <module name="javax.transaction.api"/>
 </dependencies>

 <resources>
   <resource-root path="mysql-connector-java-5.1.24-bin.jar"/>
 </resources>

</module>

No arquivo standalone.xml ou domain.xml (profile) adicone as seguintes propriedades no  <subsystem xmlns=”urn:jboss:domain:ee:1.1″>:

<global-modules>
  <module name="com.mysql" slot="5.1.19"/>
  <module name="com.mysql" slot="5.1.23" />
</global-modules>

No datasource faça a referência do slot desejado como por exemplo:

<drivers>
  <driver name="mysql" module="com.mysql:5.1.23"/>
</drivers>
<datasource jndi-name="java:/MySQLDS" pool-name="MySQLDS-Pool" enabled="true" use-java-context="true">
  <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
  <driver>mysql</driver>
  ....

Faça o deploy da aplicação testdriver e verifique o driver que está sendo utilizado no momento pela aplicação:

1drivers-pack12drivers-pack2Eu não consegui alterar o módulo on-the-fly  utilizando o CLI ( talvez tenha esqueçido algo =/ ):

/subsystem=datasources/jdbc-driver=mysql:write-attribute(name=driver-module-name,value=com.mysql:5.1.19)
 {
  "outcome" => "failed",
  "failure-description" => "JBAS014639: Attribute driver-module-name is not writable",
  "rolled-back" => true
 }

Então editei manualmente e testei:

<drivers>
  <driver name="mysql" module="com.mysql:5.1.19"/>
</drivers>

drivers-pack3

Para utilizar o módulo principal deixe o driver configurado da seguinte maneira:

<drivers>
   <driver name="mysql" module="com.mysql"/>
</drivers>

drivers-pack4

Por hoje é só!

Grande Abraço

Mauricio Magnani Jr

Instalando JBoss AS 7.1.1 Como Serviço no Windows Server 2008 x64

Postado em Atualizado em

native08

E ai galera blz?

Apesar de eu não gostar de utilizar Windows como servidor, existem muitas pessoas que usam ou precisam seja por obrigatoriedade de contrato ou cultura da empresa.  Então no post de hoje vamos aprender a instalar o JBoss AS 7.1.1 como serviço no Windows.

O primeiro passso depois de baixar o JBoss AS 7.1.1 é realizar o download do JBoss Web Native Connectors especifico para a plataforma em questão que no nosso caso é Windows x64: binaries 2.0.10-windows x64.

1native012native02

Vou supor  que JBoss está descompactado no seguinte caminho:

C:\jboss-as-7.1.1.Final

Descompacte o arquivo jboss-native-2.0.10-windows-x64-ssl.zip  e copie os seguintes arquivos para o diretório C:\jboss-as-7.1.1.Final\bin:

native03

O próximo passo é editar o arquivo  C:\jboss-as-7.1.1.Final\bin\service.bat e alterar os valores das propriedades SVCNAME, SVCDISP e SVCDESC deixando como abaixo:

set SVCNAME=JBoss7server
set SVCDISP=JBoss Server
set SVCDESC=JBoss AS 7.1.1.Final - Windows x64

Comente a propriedade JAVA_OPTS=-Xrs utilizando “REM” na linha:

REM set JAVA_OPTS=-Xrs

Ainda no arquivo service.bat altere toda ocorrência de run.bat ( duas ocorrências) para standalone.bat  e run.log (seis ocorrências)para standalone.log.

Siga o mesmo procedimento para call shutdown -S < .s.lock >> shutdown.log 2>&1 ( duas ocorrências ) altere para call jboss-cli.bat –connect –command=:shutdown >> shutdown.log 2>&1  e salve o arquivo service.bat.

Abra o cmd, navegue até o diretório C:\jboss-as-7.1.1.Final\bin\ e execute o comando abaixo para que o serviço seja registrado:

 service.bat install

native04

No utilitário executar do Windows digite services.msc para que lista do serviços seja aberta. Verifique se o serviço do JBoss foi registrado.

1

native052native06

Lembre-se de alterar o Startup Type para Automatic para que toda vez que o Windows for iniciado o serviço do JBoss também será iniciado de forma automática.

native07

Reinicie o Windows e observe o arquivo C:\jboss-as-7.1.1.Final\bin\standalone.log para verificar se o JBoss foi iniciado corretamente!

Starting JBoss Server [2013-04-03 22:23:31]
Calling "C:\jboss-as-7.1.1.Final\bin\standalone.conf.bat"
===============================================================================

JBoss Bootstrap Environment

JBOSS_HOME: C:\jboss-as-7.1.1.Final

JAVA: C:\Program Files (x86)\Java\jdk1.7.0_06\bin\java

JAVA_OPTS: -XX:+TieredCompilation -Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MaxPermSize=256M -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true -Djboss.modules.system.pkgs=org.jboss.byteman -Djboss.server.default.config=standalone.xml

===============================================================================

22:24:01,409 INFO  [org.jboss.modules] JBoss Modules version 1.1.1.GA
22:24:05,434 INFO  [org.jboss.msc] JBoss MSC version 1.0.2.GA
22:24:05,871 INFO  [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final "Brontes" starting
22:24:14,903 INFO  [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
22:24:14,950 INFO  [org.xnio] XNIO Version 3.0.3.GA
22:24:15,215 INFO  [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA
22:24:15,371 INFO  [org.jboss.as.configadmin] JBAS016200: Activating ConfigAdmin Subsystem
22:24:15,402 INFO  [org.jboss.remoting] JBoss Remoting version 3.2.3.GA
22:24:15,418 INFO  [org.jboss.as.webservices] JBAS015537: Activating WebServices Extension
22:24:15,449 INFO  [org.jboss.as.security] JBAS013101: Activating Security Subsystem
22:24:15,465 INFO  [org.jboss.as.naming] JBAS011800: Activating Naming Subsystem
22:24:15,465 INFO  [org.jboss.as.osgi] JBAS011940: Activating OSGi Subsystem
22:24:15,480 INFO  [org.jboss.as.clustering.infinispan] JBAS010280: Activating Infinispan subsystem.
22:24:15,496 INFO  [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers
22:24:18,959 INFO  [org.jboss.as.security] (MSC service thread 1-1) JBAS013100: Current PicketBox version=4.0.7.Final
22:24:18,975 INFO  [org.jboss.as.connector] (MSC service thread 1-2) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.9.Final)
22:24:19,333 INFO  [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
22:24:20,207 INFO  [org.jboss.as.mail.extension] (MSC service thread 1-2) JBAS015400: Bound mail session [java:jboss/mail/Default]
22:24:20,503 INFO  [org.jboss.ws.common.management.AbstractServerConfig] (MSC service thread 1-1) JBoss Web Services - Stack CXF Server 4.0.2.GA
22:24:20,784 INFO  [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http--127.0.0.1-8080
22:24:21,767 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) JBAS015012: Started FileSystemDeploymentService for directory C:\jboss-as-7.1.1.Final\standalone\deployments
22:24:22,095 INFO  [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on /127.0.0.1:4447
22:24:22,095 INFO  [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on /127.0.0.1:9999
22:24:22,157 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) JBAS010400: Bound data source [java:jboss/datasources/ExampleDS]
22:24:22,407 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
22:24:22,407 INFO  [org.jboss.as] (Controller Boot Thread) JBAS015874: JBoss AS 7.1.1.Final "Brontes" started in 28999ms - Started 133 of 208 services (74 services are passive or on-demand)

Por hoje é só 🙂

Qualquer dúvida ou sugestão estamos ai!

Aquele Abraço

Links:

Criptografando Senhas e Informações Sensíveis no JBoss AS 7.1.3 ( JBoss EAP 6.0.1 )

Postado em Atualizado em

increase-internet-security

Olá amigos,

O JBoss AS 7 possui um utilitário JBOSS_HOME/bin/vault.sh que permite criptografar informações sensíveis como senhas e amazenar em encrypted keystores.

Por exemplo, atualmente temos  o datasource do MySQL com a senha configurada em plaintext:

<datasource jndi-name="java:/MySQLDS" pool-name="MySQLDS-Pool" enabled="true" use-java-context="true">
  <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
  <driver>mysql-connector-java-5.1.22-bin.jar</driver>
  <security>
     <user-name>root</user-name>
     <password>123456</password>
  </security>
</datasource>

Para realização dos testes de lookup no Datasource java:/MySQLDS  estou utilizando a aplicação dstest.war Perceba que fiz o lookup e realizei um select com sucesso!

1

testds2testds-select

Objteivo é criptografar o atributo passsword utilizando o JBOSS_HOME/bin/vault.sh  e realizar novamente os testes.

Como pré-requisito precisamos de uma Java Keystore e consequentemente que um JDK esteja configurado corretamente pois vamos utilizar o Keytool  para gerar a keystore.

O primeiro passo é criar um diretório para armazenar a keystore.

Crie um diretório chamado vault:

  mkdir  /home/jboss/vault

Navegue até o diretório criado e execute os comandos para gerar a keystore:

  keytool -genkey -alias vault -keystore vault.keystore -keyalg RSA -keysize 1024 -storepass 123456 -keypass 123456 -dname "CN=Mauricio Magnani,OU=JBossDivers,O=JBoss,L=Sao Paulo,ST=SP,C=BR"

Execute o script JBOSS_HOME/bin/vault.sh e siga os procedimentos informados:

[jboss@localhost /]$ ./usr/local/jboss/7.1.3/jboss-eap-6.0/bin/vault.sh
=========================================================================

JBoss Vault

JBOSS_HOME: /usr/local/jboss/7.1.3/jboss-eap-6.0

JAVA: java

VAULT Classpath: /usr/local/jboss/7.1.3/jboss-eap-6.0/modules/org/picketbox/main/*:/usr/local/jboss/7.1.3/jboss-eap-6.0/modules/org/jboss/logging/main/*:/usr/local/jboss/7.1.3/jboss-eap-6.0/modules/org/jboss/common-core/main/*:/usr/local/jboss/7.1.3/jboss-eap-6.0/modules/org/jboss/as/security/main/*
=========================================================================

**********************************
****  JBoss Vault ********
**********************************
Please enter a Digit::   0: Start Interactive Session  1: Remove Interactive Session  2: Exit
0
Starting an interactive session
Enter directory to store encrypted files (end with either / or \ based on Unix or Windows:/home/jboss/vault/
Enter Keystore URL:/home/jboss/vault/vault.keystore
Enter Keystore password:
Enter Keystore password again:
Values match
Enter 8 character salt:12345678
Enter iteration count as a number (Eg: 44):40

Please make note of the following:
********************************************
Masked Password:MASK-EjBzy4a2hjd
salt:12345678
Iteration Count:40
********************************************

Enter Keystore Alias:vault
Obtained Vault
Initializing Vault
Apr 2, 2013 11:29:38 PM org.picketbox.plugins.vault.PicketBoxSecurityVault init
INFO: PBOX000361: Default Security Vault Implementation Initialized and Ready
Vault is initialized and ready for use
Handshake with Vault complete
Please enter a Digit::   0: Store a password  1: Check whether password exists  2: Exit
0
Task:  Store a password
Please enter attribute value: jboss
Please enter attribute value again: jboss
Values match
Enter Vault Block:MySQLDS
Enter Attribute Name:password
Attribute Value for (MySQLDS, password) saved

Please make note of the following:
********************************************
Vault Block:MySQLDS
Attribute Name:password
Shared Key:YjVmN2RjMTgtOTIxNi00MDA4LWI5NmEtMThjYTRhOTc4NzY2TElORV9CUkVBS3ZhdWx0
Configuration should be done as follows:
VAULT::MySQLDS::password::YjVmN2RjMTgtOTIxNi00MDA4LWI5NmEtMThjYTRhOTc4NzY2TElORV9CUkVBS3ZhdWx0
********************************************

Please enter a Digit::   0: Store a password  1: Check whether password exists  2: Exit

Abaixo de <extensions> adicione os atributos da keytore para o vault:

<vault>
  <vault-option name="KEYSTORE_URL" value="/home/jboss/vault/vault.keystore"/>
  <vault-option name="KEYSTORE_PASSWORD" value="MASK-EjBzy4a2hjd"/>
  <vault-option name="KEYSTORE_ALIAS" value="vault"/>
  <vault-option name="SALT" value="12345678"/>
  <vault-option name="ITERATION_COUNT" value="40"/>
  <vault-option name="ENC_FILE_DIR" value="${user.home}/vault/"/>
</vault>

Perceba que os valores utilizados na configuração do vault são os mesmos gerados pelo JBOSS_HOME/bin/vault.sh.

Agore adicione a senha criptografada no Datasource, deixando-o como abaixo:

<datasource jndi-name="java:/MySQLDS" pool-name="MySQLDS-Pool" enabled="true" use-java-context="true">
   <connection-url>jdbc:mysql://localhost:3306/jbossdb</connection-url>
   <driver>mysql-connector-java-5.1.22-bin.jar</driver>
   <security>
      <user-name>root</user-name>
      <password>${VAULT::MySQLDS::password::YjVmN2RjMTgtOTIxNi00MDA4LWI5NmEtMThjYTRhOTc4NzY2TElORV9CUkVBS3ZhdWx0}</password>
   </security>
</datasource>

Inicie o JBoss e faça os testes novamente com a aplicação dstest.war.

1

testds2dstest-final


Perceba que conseguimos realizar o lookup e o select com sucesso utilizando o password criptografado com o utilitário  JBOSS_HOME/bin/vault.sh.

O objetivo do post foi mais prático mesmo mas se desejar informações detalhadas aconselho a documentação oficial do produto:

Espero que tenha ajudado 🙂

Aquele Abraço

Configurando um Proxy Reverso com IIS7 e JBoss AS 7.1.2 ( JBoss EAP 6 )

Postado em Atualizado em

Olá amigos,

Em cenários reais é uma boa prática fornecer o acesso à aplicação utilizando um servidor web como proxy em vez de diretamente no servidor de aplicação. Portanto, hoje vamos aprender a configurar o JBoss AS 7 com o servidor web IIS7 da microsoft.

O primeiro passo é realizar o downlaod do pacote tomcat-connectors-1.2.37-windows-x86_64-iis.zip. Esse pacote contém o arquivo isapi_redirect.dll que é  uma versão do mod_jk compilado com um filtro ISAPI para o IIS.

Verifique se o IIS 7 está configurando e ativo. Abra o navegado e digite: http://localhost , caso visualize a imagem abaixo o IIS7 está funcionando.

Agora descompacte o arquivo em um diretório de sua preferência. Nesse post vou utilizar o seguinte diretório: C:\tomcat-connectors-iis . Criei três sub-diretórios bin, conf e logs.

Copie a DLL isapi_redirect.dll para o diretório C:\tomcat-connectors-iis\bin. 

No diretório C:\tomcat-connectors-iis\conf crie três arquivos: uriworkermap.properties, workers.properties e isapi_redirect.reg.

No arquivo isapi_redirect.reg, insira o seguinte conteúdo:

REGEDIT4
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation]
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector]
[HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_file"="C:\\tomcat-connectors-iis\\log\\jakarta.log"
"log_level"="debug"
"worker_file"="C:\\tomcat-connectors-iis\\conf\\workers.properties"
"worker_mount_file"="C:\\tomcat-connectors-iis\\conf\\uriworkermap.properties"

Configure o arquivo  workers.properties como abaixo:

worker.list=local
worker.local.port=8009
worker.local.host=localhost
worker.local.type=ajp13
worker.local.lbfactor=1

No arquivo uriworkermap.properties devem ser mapeadas as URLs da aplicação. Como exemplo vamos mapear a welcome page do JBoss AS 7.

/*=local

Agora clique duas vezes sobre o arquivo C:\tomcat-connectors-iis\conf\isapi_redirect.reg para que as entradas dos registros sejam criadas.

Na funcionalidade executar digite inetmgr e aperte enter. O console de gerenciamento do IIS7 será aberto:

Ainda no console de gerenciamento do IIS7 clique em ISAPI and CGI Restrictions.

Clique em add para adicionar um novo filtro e configure o caminho ate a C:\tomcat-connectors-iis\bin\isapi_redirect.dll .

Navegue até default website e ainda no console de gerenciamento selecione ISAPI Filters.

Clique em add para adicionar um novo filtro e configure o caminho ate a C:\tomcat-connectors-iis\bin\isapi_redirect.dll .

Clique com o botao direito em default website e em Add virtual directory.

Coloque o nome de Jakarta e configure o caminho ate o diretorio C:\tomcat-connectors-iis\bin.

Clique em Jakarta e depois em Handler Mappings.

Habilite ISAPI-dll se estiver desabilitado.

Inicie o JBoss executando o Script JBOSS_HOME\bin\standalone.bat e acesse a url http://localhost/. Se o acesso for redirecionado para a página inicial do JBoss a configuração foi realizada com sucesso!

iis-final

Espero que isso seja útil 🙂

Abraços