[RESOLVIDO]Como eu faço para saber o MODULE (lookup manualmente)

tentei fazer manualmente,

[code]
InitialContext ini;
try {

    ini = new InitialContext();           
    PrecoPorMetodoServiceLocal clienteBean = (PrecoPorMetodoServiceLocal)ini.lookup("java:module/PrecoPorMetodoServiceLocal");  
         }   
    catch (Throwable ex)   
               {  
       System.err.println("ERROR**** " + ex);    
       throw new ExceptionInInitializerError(ex);   
}   

[code]

da erro :

javax.naming.NameNotFoundException: module not bound

Como eu faço para saber o module do meu sistema. ?

Tem que entrar na opcao http://localhost:8080 para descobrir o meu module ??

Obs: estou usando o Jboss 4.2.3.GA

Bom dia.

O que me parece no erro que você postou é que o nome passado como parâmetro não foi encontrado, eu só usei esse “lookup” para recuperar recurso JDBC, mas se não me engano qualquer recurso que esteja disponível no servidor pode ser recuperado como você postou.

O que eu uso é mais ou menos assim:

DataSource dataSource = (DataSource) contexto.lookup("nomeDoRecurso");

RMI ?

o que seria o nome do recurso

    DataSource dataSource = (DataSource) contexto.lookup("nomeDoRecurso");  

Oq vc quer fazer, aplicações Cliente/Servidor com RMI ?

Seria o nome de um recurso JDBC(no glassfish"jdbc/sample" no jbossAS “java:/sample”) ou o nome de qualquer recurso JNDI que tenha no seu servidor, é claro que você tem que fazer um cast para o tipo de objeto quando recuperar.

entao estava dando uma olhada no meu persistence.xml e encontrei a seguinte linha

		<jta-data-source>java:/LimsDS</jta-data-source>

mesma coisa que Cliente/Servidor com RMI,
mas se for a mesma coisa é pq nao sta encontrando o nome do serviço…
javax.naming.NameNotFoundException: module not bound

quando você sobe o servidor ele não imprime os endereços JNDI?

Entao estou dando uma olhada no log do servidor e a linha do meu BEAN

2012-11-14 09:41:07,734 DEBUG [org.jboss.ejb3.Ejb3AnnotationHandler] found EJB3: ejbName=PrecoPorMetodoServiceBean, class=br.com.cqa.lims.orcamento.PrecoPorMetodoServiceBean, type=STATELESS

é essa linha que preciso encontrar ???

você pode tentar fazer o lookup pelo ejbName, não sei se vai funcionar.

Aonde você configurou o JNDI?

Entao amigo, esse sistema estou dando manutenção e peguei este sistema pronto …e precisei criar novas classes …e esta dando MUITA dor de cabeça…

obrigado

então você tem 3 opções

1 - Ver a classe que você criou, pois você pode definir o endereço JNDI através de anotações.
2 - Se houver algum deployment descriptor (ejb-jar.xml), olhe lá também, pois lá também podem existir informações importantes.
3 - Olhe no application server, normalmente eles tem algum painel de controle onde você pode ver os EJBs e os endereços JNDI.

tentei colocar dessa forma :


    @Stateless  
    public class ItemOrcamentoHelper {  
          
          
        @EJB(name = "PrecoPorMetodoServiceBean/local")  
        private PrecoPorMetodoServiceLocal precopormetodoservice;  
      
        public Dinheiro getTotalPorAmostra() {  
            try {  
      
                List<PrecoPorMetodo> resultado1 = precopormetodoservice.selecionaprecopormetodo("1");  
    ....................  

só que o precopormetodoservice esta nullo

vi em alguns forum…falando que esta fora do meu contexto, que contexto seria isso ??

só esta faltando este detalhe para proceguir com a minha rotina.

e como está configurado o nome dele dentro do PrecoPorMetodoServiceLocal?

Você não consegue através de um console de adm ou do log ver o nome real do objeto, pois quando eu uso anotação @EJB eu não coloco o atributo name pois geralmente o nome é o mesmo da classe com a primeira letra minuscula, e não uso duas classes @Stateless com o mesmo nome.

Meu local esta assim :

public interface PrecoPorMetodoServiceLocal {

    public List<PrecoPorMetodo> selecionaprecopormetodo(String vMetodo_id);     	
    
}

e

@Stateless
@LocalBinding(jndiBinding = "PrecoPorMetodoServiceBean/local")
public class PrecoPorMetodoServiceBean implements PrecoPorMetodoServiceLocal {

	@PersistenceContext(unitName = "lims-pu")
	private EntityManager em;	

    public List<PrecoPorMetodo> selecionaprecopormetodo(String vMetodo_id) {
        try {
        	
        	System.err.println("okkkkkk----" );

        	return null;
        	
        }
        catch (Throwable ex) {             
            System.err.println("failed.----" + ex);  
            throw new ExceptionInInitializerError(ex);  
        }     	   	
    
    }    	
    
}
        	


Estou analisando o log e observei um detalhe :

2012-11-14 11:03:29,006 INFO [org.jboss.ejb3.EJBContainer] STARTED EJB: br.com.cqa.lims.orcamento.PrecoPorMetodoServiceBean ejbName: PrecoPorMetodoServiceBean
2012-11-14 11:03:29,007 DEBUG [org.jboss.ejb3.stateless.BaseStatelessProxyFactory] Binding proxy for PrecoPorMetodoServiceBean in JNDI at PrecoPorMetodoServiceBean/local
2012-11-14 11:03:29,010 DEBUG [org.jboss.ejb.txtimer.EJBTimerServiceImpl] createTimerService: org.jboss.ejb.txtimer.TimerServiceImpl@107d9e4
2012-11-14 11:03:29,012 DEBUG [org.jboss.ejb3.stateless.StatelessDelegateWrapper] Started jboss.j2ee:ear=lims.ear,jar=orcamento-ejb-1.0-SNAPSHOT.jar,name=PrecoPorMetodoServiceBean,service=EJB3
2012-11-14 11:03:29,012 DEBUG [org.jboss.system.ServiceController] Starting dependent components for: jboss.j2ee:ear=lims.ear,jar=orcamento-ejb-1.0-SNAPSHOT.jar,name=PrecoPorMetodoServiceBean,service=EJB3 dependent components: [ObjectName: jboss.j2ee:ear=lims.ear,jar=orcamento-ejb-1.0-SNAPSHOT.jar,name=ItemOrcamentoServiceBean,service=EJB3
State: CREATED
I Depend On:
jboss.j2ee:ear=lims.ear,jar=orcamento-ejb-1.0-SNAPSHOT.jar,name=PrecoPorMetodoServiceBean,service=EJB3
persistence.units:ear=lims.ear,unitName=lims-pu
]

Criei uma classe nova :

@Stateless
public class ItemOrcamentoHelper {
	
	
	@EJB
	private PrecoPorMetodoServiceLocal precopormetodoservicelocal;

Dei um Search no log e não acha a CLASSE: ItemOrcamentoHelper

era para aparecer no log do Jboss a classe : ItemOrcamentoHelper?

Pessoal , Fiz da seguinte forma

@Stateless
public class ItemOrcamentoHelper {
	
	public Dinheiro getTotalPorAmostra() {
		InitialContext ini;
		try {

			ini = new InitialContext();	

			PrecoPorMetodoServiceLocal clienteBean = (PrecoPorMetodoServiceLocal)ini.lookup("PrecoPorMetodoServiceBean/local");
			List<PrecoPorMetodo> resultado1 = clienteBean.selecionaprecopormetodo("1");

	    {
	        System.err.println("ERROR**** " + ex);  
	        throw new ExceptionInInitializerError(ex); 
		 } 



ele da erro nesta linha

   List<PrecoPorMetodo> resultado1 = clienteBean.selecionaprecopormetodo("1");

11:33:07,935 ERROR [JDBCExceptionReporter] ERROR: column precoporme0_.valor does not exist

Obs. Agora ele esta entrando normalmente no PrecoPorMetodoServiceBean

[code]
@Stateless
@LocalBinding(jndiBinding = “PrecoPorMetodoServiceBean/local”)
public class PrecoPorMetodoServiceBean implements PrecoPorMetodoServiceLocal {

@PersistenceContext(unitName = "lims-pu")
private EntityManager em;

public List<PrecoPorMetodo> selecionaprecopormetodo(String vMetodo_id) {
    try {
   	
    	StringBuffer sbQuery = new StringBuffer();		
		sbQuery.append("select p from PrecoPorMetodo p ");
	
		Query query = em.createQuery(sbQuery.toString());
		return query.getResultList();
    	
    	
    }
    catch (Throwable ex) {             
        System.err.println("failed.----" + ex);  
        throw new ExceptionInInitializerError(ex);  
    }  
	
	

}

[code]

abaixo minha entidade

@Entity(name="PrecoPorMetodo") 
@Table(name="preco_por_metodo")

public class PrecoPorMetodo extends Entidade{
	private static final long serialVersionUID = -4715774435380827257L;
	
	private int grupo;
	@ManyToOne
	@JoinColumn(name="metodo_id", nullable=false)
	private Metodo metodo;
	@ManyToOne
	@JoinColumn(name="especificacao_id", nullable=false)
	private Especificacao especificacao;
	@Embedded
	private Dinheiro preco = new Dinheiro();

////getters e setters