Boa tarde,
Estou tentando utilizar EJB confome fornecido no tutorial da k19 de EJB3.1 (apostila k22), mas estou com uma dificuldade para rodar clientes remotos diretamente, conforme feito no código deles:
package br. com . k19 . testes ;
import javax . naming . InitialContext ;
import br. com . k19 . sessionbeans . LancadorDeDado ;
public class TesteDeAcesso {
public static void main ( String [] args ) throws Exception {
InitialContext ic = new InitialContext ();
LancadorDeDado lancadorDeDado = ( LancadorDeDado ) ic. lookup ("java:global/dadoWeb/LancadorDeDadoBean ");
System . out . println ( lancadorDeDado . lanca ());
}
}
Tenho o EJB deployed em JBoss 7.1.1 e inclusive verificando a JNDI Tree do servidor de aplicação ele informa a existência de “java:global/TesteEJB/CalculadoraBean”, mas quando tento a execução de um main qualquer com o código abaixo, recebo “javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial”.
public static void main(final String[] args) throws Exception {
final InitialContext ic = new InitialContext();
final Calculadora calculadora = (Calculadora) ic.lookup("java:global/TesteEJB/CalculadoraBean!br.com.imagetec.ejb.sessionbeans.Calculadora");
System.out.println(calculadora.soma(10, 20));
}
Já adicionei as dependências do Jboss 7 no meu POM, da seguinte forma:
<dependency>
<groupId>xxx</groupId>
<artifactId>TesteEJB</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-ejb-client-bom</artifactId>
<version>7.1.1.Final</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>org.jboss.as</groupId>
<artifactId>jboss-as-jms-client-bom</artifactId>
<version>7.1.1.Final</version>
<type>pom</type>
</dependency>
A única forma que consigo rodar é declarando as propriedades do JNDI em um arquivo properties ou hardcoding numa Hashtable, mas pelo tutorial deveria ser possível acessar diretamente. Assim, gostaria de saber o que está faltando para que seja possível acessar conforme o exemplo inicial (primeiro código).
Obrigado.