私はこの問題をテストするために簡単なアプリケーションを作成しました。私は、ejb持っている:マネージドBeanにejbを注入すると、BeanInstantiationExceptionが発生します。
@Local
public interface PersonaDAO {
public void sayHello(Persona persona);
}
@Stateless
public class PersonaDAOImpl implements PersonaDAO {
private PersonaDAOImpl() {
}
public void sayHello(String nombre) {
System.out.println("HELLO " + nombre + " welcome to EJB 3!");
}
}
を、私はJSF管理Beanになった:私は実行する場合
DEPLOYMENTS IN ERROR:
Deployment "vfs:///home/shapacko/ambiente/jboss-6.0.0.Final/server/default/deploy/Prueba.war" is in error due to the following reason(s): java.lang.RuntimeException: Could not resolve @EJB reference: [EJB Reference: beanInterface 'com.application.business.ServicioPersonasImpl', beanName 'null', mappedName 'null', lookupName 'null', owning unit '[email protected]{vfs:///home/shapacko/ambiente/jboss-6.0.0.Final/server/default/deploy/Prueba.war}'] for environment entry: env/com.application.presentation.seguridad.LoginBean/sp in unit [email protected]{vfs:///home/shapacko/ambiente/jboss-6.0.0.Final/server/default/deploy/Prueba.war}
そして:私はこの展開のエラーを取得しています
@ManagedBean(name="loginBean")
@ViewScoped
public class LoginBean extends PageBean {
private String nombre;
@EJB
private PersonaDAO dao;
public String confirmar()
{
String outcome = null;
Persona persona = new Persona();
persona.setNombre(nombre);
dao.sayHello(persona);
return outcome;
}
.....
}
をアプリは私が得る:
javax.servlet.ServletException: javax.ejb.EJBException: java.lang.RuntimeException: org.jboss.ejb3.instantiator.spi.BeanInstantiationException: Could not create new instance with no arguments of: class com.application.persistence.PersonaDAOImpl
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
私はwhを理解していないそれは問題です。この注射は可能ですか?または、私はejbを注入する代わりにjndiルックアップを行う必要がありますか?