Ejb não é injetado (jsf1.2 + weblogic 11g) [RESOLVIDO]

Boa tarde!

Estou tentando utilizar um ejb local mas não obtive sucesso.
Quando vou utilizar no método testar() do MB recebo um nullpointer.

managed bean:

import interfaces.Teste;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;

public class TesteMB
{
	@EJB(name = "testeEJB", beanName = "testeEJB")
	private Teste	teste;
	
	private String	valorTeste;
	
	public String getValorTeste()
	{
		return valorTeste;
	}
	
	public void testar(ActionEvent event)
	{
		this.valorTeste = this.teste.teste();
	}
}

EJB:

package ejb;

import interfaces.Teste;

import javax.ejb.Local;
import javax.ejb.Stateless;

@Local(value = Teste.class)
@Stateless(name = "testeEJB", mappedName = "testeEJB")
public class TesteBean implements Teste
{
	@Override
	public String teste()
	{
		return "Funcionou";
	}
}

Interface local:

package interfaces;

public interface Teste
{
	String teste();
}

Acabei criando uma servlet de teste e funciona:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Teste extends HttpServlet
{
	@EJB(name = "testeEJB", beanName = "testeEJB")
	interfaces.Teste			teste;
	/****/
	private static final long	serialVersionUID	= 1L;
	
	@Override
	protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
	{
		PrintWriter pw = arg1.getWriter();
		pw.println("<HTML>");
		pw.println("<TITLE>Olá Mundo!</TITLE>");
		pw.println("<BODY>");
		pw.println("Olá Web!");
		pw.println("<B>" + this.teste.teste() + "</B>");
		pw.println("</BODY>");
		pw.println("</HTML>");
		pw.flush();
	}
}

Empacoto tudo num EAR e faço deploy no weblogic, se uso a servlet funciona mas se uso o projeto jsf não.

Não entendo o pq de não funciona, alguma idéia?

Obrigado.

Tente assim

Stateless(mappedName = "InterfaceLocal")

depois:

@EJB(name = "InterfaceLocal#br.com.yourapp.InterfaceLocal", beanName = "InterfaceLocal#br.com.yourapp.InterfaceLocal") 

Felipe,

Testei o que você passou e gerou a seguinte exception:

<21/02/2011 08h40min25s BRT> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application 'EARJSF'.
weblogic.application.ModuleException: Could not setup environment
	at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1499)
	at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:442)
	at weblogic.application.internal.flow.ModuleStateDriver$2.next(ModuleStateDriver.java:375)
	at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
	at weblogic.application.internal.flow.ModuleStateDriver.activate(ModuleStateDriver.java:95)
	Truncated. see log file for complete stacktrace

Caused By: weblogic.deployment.EnvironmentException: [J2EE:160101]Error: The ejb-link 'testeEJB#interfaces.Teste' declared in the ejb-ref or ejb-local-ref 'testeEJB#interfaces.Teste' in the application module 'WJSF.war' could not be resolved. The target EJB for the ejb-ref could not be found. Please ensure the link is correct.
	at weblogic.deployment.BaseEnvironmentBuilder.addEJBLinkRef(BaseEnvironmentBuilder.java:464)
	at weblogic.deployment.EnvironmentBuilder.addEJBReferences(EnvironmentBuilder.java:485)
	at weblogic.servlet.internal.CompEnv.activate(CompEnv.java:157)
	at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:3117)
	at weblogic.servlet.internal.WebAppModule.activateContexts(WebAppModule.java:1497)
	Truncated. see log file for complete stacktrace
> 

Obrigado pela ajuda.

Camarada, esquece esse ‘testeEJB’ e coloca o nome da interface mais # mais a package e o nome da interface novamente.

http://www.guj.com.br/java/132452-lookup-de-ejb-local-no-weblogic-103

Se eu fizer um lookup do ejb local funciona.

Alterei como você indicou e continua não funcionando, não gera a exception anterior mas gera um nullpointer quando vou utilizar. Acho que o problema é outro e não a forma como estou fazendo, pois quando estava subindo o weblogic notei a seguinte mensagem:

21/02/2011 11:43:39 com.sun.faces.spi.InjectionProviderFactory getProviderInstance
SEVERE: JSF1030: The specified InjectionProvider implementation 'com.bea.faces.WeblogicInjectionProvider' cannot be loaded.
21/02/2011 11:43:39 com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: PostConstruct/PreDestroy annotations present.  ManagedBeans methods marked with these annotations will have said annotations processed.

Vou pesquisar.

Obrigado.

Felipe, consegui resolver.

Achei esse link e segundo um dos posts é recomendavel usar as bibliotecas compartilhadas (jsf) do Weblogic pra funcionar a injeção.

Não sei se você precisou fazer isso, mas assim funcionou corretamente.

Muito obrigado pela ajuda!

ainda não utilizei JSF nas minhas apps.

o Weblogic possui as shared libraries, sempre que vou utilizar algo que ele mesmo usa, é só referenciar na IDE.

valeu!