Configuração programática JNDI

Pessoal,
seguinte, tenho um servidor instalado aqui que gerencia filas de mensagem. Preciso configurar, de forma programática, minha aplicação para que a aplicação se comunique através do JNDI, alguém sabe como eu faço isso?
Li em alguns artigos que posso configurar assim:

Hashtable props = new Hashtable();
props.put(Context.INITIAL_CONTEXT_FACTORY, “org.jnp.interfaces.NamingContextFactory”);
props.put(Context.URL_PKG_PREFIXES, “org.jboss.naming:org.jnp.interfaces”);
props.put(Context.PROVIDER_URL, “jnp://10.144.3.40:1414”);

não sei para onde mais ir depois disso e também não sei se preciso configurar mais alguma coisa.

Na verdade, o truque todo está na classe InitialContext (que possui dois construtores, um sem argumentos e outro passando um Hashtable que nem esse que você criou). Você vai criar o InitialContext e fazer o lookup usando essa classe.

Aliás, pergunta… esse lookup vai ficar dentro ou fora do servidor de aplicação? Se ficar dentro, você nem precisa passar os parâmetros, porque o construtor default já recupera de dentro do próprio servidor.

[]´s

Minha dúvida é esse InitialContext é uma classe, é um xml é o que?
o que vai conter nele?

Fiz uma configuração antes usando o mqConectionFactory que é uma classe de uma biblioteca da IBM. A minha ideia é não utilizar essa biblioteca por isso quero configurar o JNDI. Tem um aplicativo da IBM rodando no servidor, que gerencia as filas. Lá estão criadas as filas que vão ser utilizadas. O que preciso é fazer a minha aplicação se conectar com cada uma das filas, só que através do JNDI. Dai estou me batendo nessa configuração.

o lookup vai ficar fora do servidor.

Então, você vai configurar o InitialContext (que é uma classe) usando um Hashtable. Só tome cuidado, porque a configuração que você passou antes eh pra JBoss. É esse AS mesmo que você vai usar?

[]´s

A classe InitialContext já existe ou eu preciso criá-la?
coloco somente aquelas informações que eu coloquei no primeiro post nessa classe?
É realmente necessário criar essa classe ou eu posso fazer na minha classe cliente e colocar isso:

Hashtable props = new Hashtable();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        props.put(Context.PROVIDER_URL, "jnp://10.144.3.40:1414");

        Context jndiContext = new InitialContext(props);

O servidor de aplicação vai ser o jBoss sim, só que para teste uso o tomcat, tem algum problema?

[quote=malbarbosa]A classe InitialContext já existe ou eu preciso criá-la? -> Sim, já existe. javax.naming.InitialContext
coloco somente aquelas informações que eu coloquei no primeiro post nessa classe? -> Sim, elas estão completas.
É realmente necessário criar essa classe ou eu posso fazer na minha classe cliente e colocar isso: -> Você corre o risco de deixar seu código sem coesão alguma e difícil de dar manutenção. Dê uma olhada no Design Pattern Service Locator .

Hashtable props = new Hashtable();
        props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
        props.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
        props.put(Context.PROVIDER_URL, "jnp://10.144.3.40:1414");

        Context jndiContext = new InitialContext(props);

O servidor de aplicação vai ser o jBoss sim, só que para teste uso o tomcat, tem algum problema? -> O Tomcat não é um contêiner J2EE completo. Isso quer dizer que ele não tem JNDI , e você não vai conseguir testar nele.

[/quote]

Respostas acima.

[]´s

Asaudate,

uma dúvida, tenho um servidor instalado o jboss, necessito instalar ele na minha máquina?
outra coisa tem nenhum arquivo xml que eu preciso configurar para fazer a conexão com o servidor de aplicação não?

Sua aplicação é stand-alone que roda fora do servidor de aplicação? Se sim, você não vai precisar instalar o JBoss para isso, mas vai precisar usar o esquema do Hashtable que você já postou (ou então coloque o conteudo dentro de um arquivo .properties que fica mais flexivel) e também, dependendo do seu servidor de aplicação, vai precisar colocar alguns JARs no classpath da sua aplicação StandAlone.
Caso tudo rode dentro do AS, ai você não precisa se preocupar com esses detalhes.

Dê um olhada na documentação do seu AS que certamente voc6e irá encontrar exemplos do qu você precisa fazer

valeu jair, vou ver isso!