Configurando APR (JBoss Web Native) no JBoss AS 7.1.3
Autor: josepojr | Publicado: 2013-04-10T21:56:00-03:00


INTRODUÇÃO



Habilitando
 o uso do APR (Apache Portable Runtime), permite que o subsistema web do
 servidor JBoss AS 7 possa usar essa API que por sua vez, chama métodos 
nativos (JNI) da plataforma atual. Ou seja, se estamos usando linux, 
configuramos o servidor JBoss para "enxergar", "reconhecer" os arquivos 
binários ".so" que executará de maneira nativa no micro o que dará maior
 desempenho ao invés de usar o subsistema web no JBoss AS 7 totalmente 
em Java.

O Jboss fornece pacotes com binários para diversas 
plataformas, assim, podemos aumentar o desempenho do subsistema web para
 cada plataforma.





CONFIGURAÇÃO



Download do arquivo jbossweb-native-2.0.10.jar



Contêm todos binários de todas plataformas.



Descompacte esse arquivo.



Entre dentro da pasta que contêm o jbossweb-native descompactado e depois disso, entre na pasta "bin"



Copiar tudo o que contêm a pasta "bin" para dentro da pasta "bin" do servidor JBoss AS 7.1.



Exemplo:



// Supondo que essa pasta contêm

// os diretórios / arquivos do arquivo compactado jar.



cd jbossweb-native-2.0.10&nbsp;



// Entra no diretório bin.

cd bin



// Copia de modo recursos todos os subdiretórios

cp -R META-INF $JBOSS_HOME/bin



// Entre no diretório $JBOSS_HOME/bin

cd $JBOSS_HOME/bin



// Veja se o diretório META-INF foi copiado dentro do diretório $JBOSS_HOME/bin

ls $JBOSS_HOME/bin.


// Execute o seguinte comando no diretório META-INF para
// que os arquivos binários (dll, so, etc, dependendo da plataforma) possam
// ser executados. Esse comando dará permissão de escrita.
chmod -R a+x META-INF

// Esse comando tem o argumento "-R" que indica recursividade, ou seja, o diretório META-INF
// e seus subdiretórios e arquivos, terão suas permissões alteradas de maneira recursiva, até achar diretórios folhas (sem filhos).
// Se não executar esse comando, os binários podem não ser carregados, pois o sistema operacional
// rejeitará o carregamento dos binários pela JVM.



Ajustar standalone-full-ha.xml:





Mude o valor do atributo "native" de "false" para "true".



&lt;subsystem xmlns="urn:jboss:domain:web:1.2" default-virtual-server="default-host" instance-id="${jboss.node.name}" native="true"&gt;






Inicie o servidor JBoss AS 7.1.3.



Verifique no log ($JBOSS_HOME/standalone/log/server.log) se o APR está ativo.

Para isso, execute o seguinte comando:



cat server.log | grep "coyote"





O servidor deverá mostrar essas linhas:




09:41:37,492 INFO &nbsp;[org.apache.coyote.ajp.AjpAprProtocol] (MSC service thread 1-1) Starting Coyote AJP/1.3 on ajp-/127.0.0.1:8009

09:41:37,519 INFO &nbsp;[org.apache.coyote.http11.Http11AprProtocol] (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http-/127.0.0.1:8080





Se não aparecer essas linhas, isso indica que as bibliotecas nativas do jboss-web native não foram instaladas com sucesso.





CONCLUSÃO



Com o uso do jboss web nativo, aumentamos o
 desempenho do servidor na parte web. E também, é importante lembrar que
 o uso dessas bibliotecas nativas (binários) é de uso opcional, não 
impactando no funcionamento correto do servidor e a única coisa que 
agrega, é mais desempenho, por usar componentes que são executados 
diretamente na máquina e não via JVM.

Lógico que o servidor JBoss AS 7 roda em cima de uma JVM, 
mas com o jboss web nativo ativado, o processamento passa da JVM pela 
interface JNI (interface para acesso de métodos nativos no Java) que 
invoca as implementações de métodos nativos nos binários da plataforma.





REFERÊNCIAS



http://en.wikipedia.org/wiki/Apache_Portable_Runtime



http://en.wikipedia.org/wiki/Java_Native_Interface



http://www.jboss.org/jbossweb/downloads/jboss-native-2-0-10



https://community.jboss.org/wiki/JBossAS7ConfiguringSSLOnJBossWeb



https://community.jboss.org/wiki/UsingNativeLibrariesaprWithJBoss702



http://www.jvmhost.com/articles/using_native_apr_ajp_with_jboss_7



http://stackoverflow.com/questions/10227993/jboss-7-1-1-and-jboss-web-native



https://community.jboss.org/thread/212044