import java.util.*;
import javax.naming.*;
public class JNDIBind {
private final static String JNDI = "sams/book";
public static void main(String[] args) {
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
Context ic = new InitialContext();
ic.bind(JNDI, "Teach YourSelf J2EE in 21 Days");
System.out.println("Bound: " + JNDI);
}catch(NamingException ex) {
System.err.println(ex);
System.exit(1);
}
}
}
Galera, tá vendo esse código aí? Não tá funcionando… Ele remete um erro na execução:
javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory]
Pelo que eu tenho no livro, essa classe é a Default do JNDI para o contexto inicial.
Eu sei que tem que fazer alguma referência no ClassPath, mas não sei que referencia é essa…
O J2EE que eu to usando é o 1.4…
Alguém pode me ajudar?
Poxa, então eu vou ter que colocar todas as classes que eu uso no classpath? Acho que isso não é muito viável…visto que o meu classpath já está configurado perfeitamente (Eu acredito)
Tem outra soluçao? Alguma outra classe que eu possa usar?
Vc pode criar um jar com seus principais pacotes e colocar no classpath, mas lembra que se vc publicar esta aplicacao devera levar o jar junto com a aplicacao.
[quote=RamonSilva]…visto que o meu classpath já está configurado perfeitamente (Eu acredito)
[/quote]
Se você tem a variável de ambiente CLASSPATH configurada no seu computador então precisa rever seus conceitos. Eu realmente não entendo porque alguém que usa mais de um programa diferente escrito em Java teria alguma necessidade de configurar a variável CLASSPATH no seu computador. Desde a versão 1.2 do Java que isto não é mais necessário. O modo correto é fazer o que o Louds indicou, isto é, passar o classpath específico de cada aplicação na linha de comando que invoca a JVM dentro do arquivo de script (.bat ou .sh) que inicializa a aplicação, seja o classpath de que tamanho for.