Pessoal, to tendo algumas dificuldades para utilizar EJB no Seam.
Antes de postar meu código, adianto que:
1 - Utilizo Seam 2.2 e JBoss AS 5.1
2 - Meu projeto é EAR
3 - Minhas classes estão todas no EJB.JAR (no ejbModule)
4 - Meus testes sem usar o EJB que criei funcionam (salva no banco)
O que acontece é que crio um EJB e no MB (que é um componente Seam) não consigo injetá-lo com @EJB e nem com @In
Segue o código:
@Local
public interface SaveModelTypeInterface {
String saveModelType(ModelType m);
}
@Stateless
@Name("saveModelTypeEJB")
public class SaveModelTypeEJB implements SaveModelTypeInterface {
@In
EntityManager entityManager;
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public String saveModelType(ModelType m) {
entityManager.persist(m);
return "Sucesso";
}
}
@Name("modelTypeAction")
@Scope(ScopeType.CONVERSATION)
public class ModelTypeAction {
@In
private EntityManager entityManager;
@In(create = true)
//ou @EJB
SaveModelTypeEJB saveModelTypeEJB;
public String saveModelType() {
ModelType modelType = new ModelType();
modelType.setName("Teste");
saveModelTypeEJB.saveModelType(modelType);
return "saveModelType";
}
}
<core:init debug="true" jndi-pattern="@jndiPattern@"/>
<component name="org.jboss.seam.core.init">
<!-- JNDI name pattern for JBoss EJB 3.0 -->
<property name="jndiPattern">#{ejbName}/local</property>
</component>
Quando utilizo o @EJB, dá NullPointerException, e o @In dá erro também.
Alguém tem ideia do que estou fazendo de errado?
Abraços!!