[RESOLVIDO]Problema de retornar EJB Nulo

Pessoal, estou tentando implementar uma nova rotina, e fazem duas semanas que nao consigo resolver esse problema
Minha pagina:

        <h:outputLabel value="#{messages['label.precoTotalEnsaiosContratados']}" />
                     <h:inputText styleClass="readOnly" readonly="true" id="totalAnalisesContratadas"
       	value="#{ManterItemOrcamentoMB.itemAtual1.totalPorAmostra}" />

ManterItemOrcamentoMB*

public class ManterItemOrcamentoMB implements PageMB, OperacaoConfirmavel,
		CallbackableMB {

	private static final long serialVersionUID = 4902643748803576282L;

	private static final Logger LOG = LoggerFactory
			.getLogger(ManterItemOrcamentoMB.class);

	@EJB(name = "OrcamentoServiceBean/local")
	private OrcamentoServiceLocal orcamentoService;

	@EJB(name = "EnsaioServiceBean/local")
	private EnsaioServiceLocal ensaioService;

	@EJB(name = "AnaliseServiceBean/local")
	private AnaliseServiceLocal analiseService;	
	
	@EJB(name = "PrecoPorMetodoServiceBean/local")
	private PrecoPorMetodoServiceLocal precopormetodoservice;


	private Orcamento orcamento;
	private ItemOrcamento itemAtual = new ItemOrcamentoColetavel();
	
	private ItemOrcamentoHelper itemAtual1 = new ItemOrcamentoHelper();
	
	public ItemOrcamentoHelper getItemAtual1() {			
	//		precopormetodoservice.selecionaprecopormetodo("1");	
			return itemAtual1;
	}	
	
	public void setItemAtual1(ItemOrcamentoHelper itemAtual1) {	
			this.itemAtual1 = itemAtual1;
	}

ItemOrcamentoHelper*

public class ItemOrcamentoHelper {
	
	@PersistenceContext
	EntityManager em;

	@EJB(name = "OrcamentoServiceBean/local")
	private OrcamentoServiceLocal orcamentoService;
	
	@EJB(name = "PrecoPorMetodoServiceBean/local")
	private PrecoPorMetodoServiceLocal precopormetodoservice;
	
	public Dinheiro getTotalPorAmostra() {	
	
	************* aqui preciso fazer o seguinte **********************PROBLEMA************************
	        List<PrecoPorMetodo> resultado1 = precopormetodoservice.selecionaprecopormetodo("1");
		return null;
	}	
@Stateless
@LocalBinding(jndiBinding = "PrecoPorMetodoServiceBean/local")
public class PrecoPorMetodoServiceBean implements PrecoPorMetodoServiceLocal {

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

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


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

O meu problema que esta me deixo louco…rs, desculpe o desabafo.

Quando eu chamo “precopormetodoservice.selecionaprecopormetodo(“1”)” através da classe ItemOrcamentoHelper. O “precopormetodoservice” esta nullo e nao
consigo acessar o metodo selecionaprecopormetodo

e quando eu acesso da classe ManterItemOrcamentoMB por exemplo :

	public ItemOrcamentoHelper getItemAtual1() {			
			precopormetodoservice.selecionaprecopormetodo("1");	
			return itemAtual1;
	}	

O “precopormetodoservice” esta diferente de nullo e consigo acessar o metodo selecionaprecopormetodo,
mas gostaria que fosse a chamada na classe ItemOrcamentoHelper.

Nao entendo pq isso acontece, alguem pode me dá uma luz ??

Veja, quando acessa de um MB, voce está em um contexto gerenciado pelo seu Server certo?, Ou seja a injeção funciona, agora quando você injeta dentro de uma classe
não gerenciada isso não funciona…

Se você precisa desse ejb em uma classe que não é gerenciada pelo container, pode então fazer o lookup manualmente, acredito que seria uma saída…
Ae então precisa ver qual server está usando, pois cada server tem uma forma de setar as propriedades do lookup para um EJB.

Mas como eu poderia fazer isso ??? teria algum exemplo ??

tentei fazer manualmente,

		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); 
		 } 

da erro :

javax.naming.NameNotFoundException: module not bound

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

Qual server está usando?

estou usando o Jboss 4.2.3.GA

Nossa cara, estou umas duas semanas neste problema, nao sei mais o que eu faço .rs

Veja, na documentação do jboss por exemplo tem o seguinte trecho

By default, when the application is deployed in a jar, session beans will bind to JNDI in the form ejbName/remote for remote interfaces and ejbName/local in the case of local interfaces. When the EJBs are deployed in an .ear file, the default jndi binding will be prepended by the name of the .ear file. So if the ear file name is foo.ear the default jndi names would be foo/EJB-NAME/remote and foo/EJB-NAME/local. You can override this behavior by defining your own @org.jboss.ejb3.annotation.LocalBinding and/or @org.jboss.ejb3.annotation.RemoteBinding. 

ou seja, o lookup é feito com o nome do ear seguido por barra seguido pelo nome do ejb seguido por barra seguido por local ou remote!

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

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

Este é o nome do seu data source, não é o nome do seu EJB… ja fiz lookup usando essa versão do jboss, é so passar os parâmetros certos e vai funcionar…

ribclauport, pode me dar uma força ??

aonde eu vejo no meu sistema, para passar o parametro certo no lookup ?? tenho que entrar no console do Jboss (http://localhost:8080/)??

Ou sera no log do Jboss ???

Agradeceria e muito se poder me ajudar nisso

obrigado .

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

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

Viche, voce ta tentando criar uma implementação sem implementar a interface?
Não entendi o que ta querendo fazer…

a interface esta aqui

public interface PrecoPorMetodoServiceLocal {

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

Põe esse como resolvido também, tem o mesmo conteúdo do tópico
http://www.guj.com.br/java/287229-como-eu-faco-para-saber-o-module-lookup-manualmente