to precisando de registrar meu bean em um jndi. Alguém poderia me explicar como faco isso, é que sou novo em j2ee.
De q tipo de bean se trata? E qual o server q vc está utilizando?
é um bean @stateless comum que estou criando para uma aplicação client/servidor para Desktop. Sou novo em J2EE e estou com esse problema, não consigo encontrar o bean e nem inicializar o InitialContext() de nenhum dos containers(nenhum mesmo), JBoss,Weblogic, glassfish, openejb, já tentei qualquer tipo de inicialização do contexto.
Kra se vc estiver usando um container JEE6 (como o Glassfishv3) todos os EJBs tem um nome JNDI global q é apresentado no momento q vc implanta os EJBs no servidor. Basta dar uma olhada no log (é mais fácil se vc fizer pelo Netbeans). Mas p/ desenvolver uma aplicação cliente/servidor com um cliente Desktop eu acho q no final das contas REST vai te oferecer a menor dor de cabeça.
REST é um WebService? É que preciso de uma aplicação com controle de sessões. E outra só estou com problema na hora de instanciar o InitialContext. Tipo, eu procurei em tudo quanto é tipo de forum pesquisei ate cansar e nada disso funcionar, até copiei as bibliotecas do j2ee(appserv-rt.jar, javaee.jar,gf-client.jar) e nenhum conseguiu inicialisar o com.sun.enterprise.naming.SerialInitialContextFactory. Poderia me dizer por favor qual classe tenho que inicializar com o InitialContext? o meu codigo ta embaixo
prop.setProperty(Context.INITIAL_CONTEXT_FACTORY,"com.sun.enterprise.naming.SerialInitialContextFactory");
prop.setProperty(Context.PROVIDER_URL,iiop://ipaddress:port);
InitialContext ctx = new InitialContext(prop);
BeanRemote bean = (BeanRemote)ctx.doLookup("java:global/ProjetoBean/BeanPrincipal");
System.out.print(bean.soma(5,2));
Alguem me ajude por favor.
O seguinte código funcionou p/ mim.
package helloswing;
/**
* @author dev.rafael
*/
public interface HelloCarrier {
String getHello();
}
package helloswing;
import javax.ejb.Remote;
import javax.ejb.Stateless;
/**
* @author dev.rafael
*/
@Stateless
@Remote(HelloCarrier.class)
public class StaticHelloCarrier implements HelloCarrier {
@Override
public String getHello() {
return "Hello you!!";
}
}
package helloswing;
import javax.ejb.EJB;
/**
* @author dev.rafael
*/
public class Main {
@EJB static HelloCarrier helloCarrier;
public static void main(String[] args) {
System.out.println(helloCarrier.getHello());
}
}
Nesse caso eu empacotei a aplicação cliente dentro do EAR gerado. Eu usei o Netbeans q possui o recurso de criar aplicações enterprise com cliente desktop.
isso funciona qndo vc executa pelo netbeans. Mas qndo roda fora ele diz que não encontrar o local do doLookup(name).
Ele continuará a funcionar se vc distribuir a sua aplicação com JNLP.
Estou com o mesmo problema do colega… estou iniciando em EJB.
Criei um EJB de sessão (stateless) e o publiquei no Glassfish v2… Indo no localhost:4848 e entrando como admin vejo que o módulo EJB que criei está lá, implantado como “ejb/SimpleConverter”…
Mas quando tento acessar o EJB de uma aplicação desktop usando:
[code]Context initial = new InitialContext();
Context myEnv = (Context) initial.lookup(“java:comp/env”);
Object objref = myEnv.lookup(“ejb/SimpleConverter”);[/code]
ocorre uma exceção; não encontra nada!! (já na segunda linha ocorre o erro).
Não sei como configurar esse JNDI para que não ocorra erro… Por favor, uma ajuda!!
Grato a tds.
Depois de muito pesquisar eu acabei achando algo q pode solucionar o seu problema, ao menos é o q eu espero:
public class Main {
public static void main(String[] args) throws NamingException {
Properties props = new Properties();
props.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "9037");
Context ctx = new InitialContext(props);
Foo foo = (Foo) ctx.lookup("java:global/EJBs/EJBs-ejb/FooBean");
System.out.println(foo.hello());
}
}
Esse ai funciona certinho dentro e fora do Netbeans. Divirta-se.