Gastaldi's Blog

Mais um blog sobre Java …

Registrar uma String no JNDI

Em muitas aplicações, existem parâmetros que variam de acordo com o ambiente (pools de conexão, roles, etc) e que são publicadas na árvore JNDI da aplicação. Para parametrizarmos uma string qualquer (seja ela uma URL, uma informação qualquer) muitos desenvolvedores preferem criar um arquivo de propriedades ou deixar fixo no código (bleargh !). Minha sugestão é utilizar o contexto JNDI. Para isso faça o seguinte:

Registre o serviço abaixo em um arquivo com sufixo -service.xml (pode ser no jboss-service.xml dentro do conf):

<mbean code="org.jboss.naming.JNDIBindingServiceMgr"
         name="jboss.tests:service=JNDIBindingServiceMgr">
      <attribute name="BindingsConfig" serialDataType="jbxb">
         <jndi:bindings
            xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:jndi="urn:jboss:jndi-binding-service:1.0"
            xs:schemaLocation="urn:jboss:jndi-binding-service:1.0 resource:jndi-binding-service_1_0.xsd">
            <jndi:binding name="urls/MinhaURL">
               <jndi:value type="java.lang.String">http://www.meuserver.com/service</jndi:value>
            </jndi:binding>
         </jndi:bindings>
      </attribute>
      <depends>jboss:service=Naming</depends>
   </mbean>

Na nossa aplicação web, devemos alterar o web.xml para incluir o seguinte resource-ref:

<resource-ref>
        <res-ref-name>QualquerCoisa</res-ref-name>
        <res-type>java.lang.String</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>	

e no jboss-web.xml :

<jboss-web>
	<resource-ref>
		<res-ref-name>QualquerCoisa</res-ref-name>
		<res-type>java.lang.String</res-type>
		<jndi-name>urls/MinhaURL</jndi-name>
	</resource-ref>
</jboss-web>

Pronto ! Agora é só fazer:

InitialContext ctx = new InitialContext();
String strNoJNDI = (String) ctx.lookup("java:comp/env/QualquerCoisa");

e você terá o valor publicado no seu servidor de aplicação (totalmente desacoplado da aplicação).

Anúncios

Uma resposta para “Registrar uma String no JNDI

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: