INTRODUCAO Nosartigos anteriores(http://www.josepojr.com/2013/10/ordem-de-carregamento-de-classes-jars.htmlehttp://www.josepojr.com/2013/01/isolamento-de-classloaders-no-jboss-as-7.html)foi mostrada a configuracao do jboss 7 no arquivojboss-deployment-structure.xml e algumas regras depreferencia no carregamento de dependencias. Nesse artigo, vamosmostrar como evitar que um modulo padrao que ja vem instaladodentro do JBoss 7 (pasta $JBOSS_HOME/modules) seja carregado.E consequentemente, podemos usar os nossos arquivos .jar semproblemas de dependencias e lancamentos de excecoes do tipoNoSuchMethodException (metodo nao existente). Esse tipo deexcecao pode ocorrer se em tempo de projeto (usando uma IDE porexemplo), usamos os jars de uma biblioteca como por exemplo ApacheHttp Client na versao 4.5, mas no JBoss 7, ja temos por exemplo,uma versao dessa mesma biblioteca na versao 4.2, por exemplo. E aoinvocar metodos que so existam na versao 4.5, mas na versao 4.2,os mesmos nao existe, o erro NoSuchMethodException podeaparecer. Isso porque em tempo de compilacao foi usada a versao4.5, mas em tempo de execucao (projeto war ou ear implantado dentrodo JBoss 7), a versao 4.2 (dentro da pasta $JBOSS_HOME/modules)pode ser carregada primeiro em detrimento a versao 4.5 (que pode ounao estar na pasta EAR/lib).Porisso, precisamos configurar o arquivo .ear gerado para que naoocorra esses erros de dependencias que sera mostrado nesse artigo.DESENVOLVIMENTOComopor exemplo, vamos usar a biblioteca Apache Http Client que pode serbaixada do site:https://hc.apache.org/Essescomponentes permite qualquer programa acessar servidores web noprotocolo HTTP ou HTTPS. Para isso, fornece modelos para a construcaode clientes HTTP no seu programa Java. Sem esses componentes,teriamos que escrever do zero (projeto desde o inicio, novo)um cliente HTTP dentro do nosso programa Java. Isso e possivelusando as classes java.net.Socket, java.io.InputStream,java.io.OutputStream e outras semelhantes dentro do JRE (JavaRuntime, ambiente de execucao do Java mais a maquina virtual)fornecido em toda instalacao Java em qualquer dispositivo. Mas,teriamos que perder um tempo enorme para fazer todas essas chamadas,sendo que com o uso desses componentes e com poucas linhas de codigosja temos um cliente HTTP para usarmos no nosso codigo.Portanto,como esse projeto e tem uma licenca bem semelhante a um softwareOpen Source e e usado em diversos projetos, o JBoss 7 ja vem comessa biblioteca da Apache ja configurada como modulo dentro doservidor JBoss 7.Aomesmo tempo em que isso e bom, pois ja temos um modulo dessabiblioteca para usarmos em nosso projeto, ao mesmo tempo tambem eruim, pois queremos usar uma versao mais recente da biblioteca emnossos projetos, por exemplo.Paraisso, vamos configurar o arquivo jboss-deployment-structure.xmlpara nao usar o Apache Http Client existente como modulo dentro doJBoss:<?xmlversion="1.0" encoding="UTF-8"?><jboss-deployment-structurexmlns="urn:jboss:deployment-structure:1.1"> <ear-subdeployments-isolated>true</ear-subdeployments-isolated> <deployment> <exclusions> <modulename="org.apache.httpcomponents" slot="main" /> </exclusions> <dependencies> <modulename="javax.api"/> <modulename="org.jboss.resteasy.resteasy-jaxrs"/> <modulename="org.infinispan"/> <modulename="deployment.MeuProjeto.ear.MeuEJB.jar"/> <modulename="deployment.MeuProjeto.ear.MeuWAR.war"/> </dependencies> </deployment> <!--durante o deploy. --> <sub-deploymentname="MeuEJB.jar"> <exclusions> <modulename="org.apache.httpcomponents" slot="main" /> </exclusions> <local-lastvalue="true"/> </sub-deployment> <sub-deploymentname="MeuWAR.war"> <dependencies> <modulename="deployment.MeuProjeto.ear.MeuEJB.jar"/> </dependencies> <local-lastvalue="true"/> </sub-deployment> </jboss-deployment-structure>Socolocar os trechos marcados em VERMELHOno arquivo jboss-deployment-structure.xml do seuprojeto. Nesse exemplo, estamos dizendo que o projeto EJB chamadoMeuEJB.jar precisa usar a biblioteca Apache HttpClient propria e nao do JBoss 7. E tambem, estamos excluindo ouso no ear como um todo como mostra o trecho em VERMELHOdentro da tag <deployment>.Na pasta /libdentro do projeto EAR (ou conhecida como EAR/lib) devem estar os jarsdo Apache Http Client obtido no site:https://hc.apache.org/downloads.cgiCONCLUSAOMostramosque o uso de configuracoes dentro do arquivojboss-deployment-structure.xml permite refinar algumas configuracoesque terao impacto tanto no tempo de implantacao (deploy) ou