Eclipse JSF项目中的错误注入EJB
大家好,我是JavaEE新手,我想用EJB和JSF开发一个应用程序,当我想在WebDynamicque项目中注入我的JAR时,我遇到了这个错误,我什么都不懂,请任何人都帮我Eclipse JSF项目中的错误注入EJB,eclipse,jsf,jpa,jakarta-ee,ejb,Eclipse,Jsf,Jpa,Jakarta Ee,Ejb,大家好,我是JavaEE新手,我想用EJB和JSF开发一个应用程序,当我想在WebDynamicque项目中注入我的JAR时,我遇到了这个错误,我什么都不懂,请任何人都帮我 17:54:06,324 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed to start service jboss.deployment.unit."PGestion.war".INSTALL: org.jboss
17:54:06,324 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-8) MSC000001: Failed to start service jboss.deployment.unit."PGestion.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."PGestion.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "PGestion.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEJB0406: No EJB found with interface of type 'com.bestofgeeks.gestion.dao.Implement.GestionDAOBean' for binding com.bestofgeeks.gestion.services.ImplService.ImplServiceProduct/product
at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:90)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.addJndiBinding(ModuleJndiBindingProcessor.java:211)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:182)
at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:186)
at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:143)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)
... 5 more
17:54:06,341 INFO [org.infinispan.factories.GlobalComponentRegistry] (MSC service thread 1-2) ISPN000128: Infinispan version: Infinispan 'Chakra' 8.2.8.Final
17:54:06,696 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 62) WFLYCLINF0002: Started client-mappings cache from ejb container
17:54:06,777 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "PGestion.war")]) - failure description: {
"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"PGestion.war\".INSTALL" => "WFLYSRV0153: Failed to process phase INSTALL of deployment \"PGestion.war\"
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEJB0406: No EJB found with interface of type 'com.bestofgeeks.gestion.dao.Implement.GestionDAOBean' for binding com.bestofgeeks.gestion.services.ImplService.ImplServiceProduct/product"},
"WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"PGestion.war\".beanmanager"],
"WFLYCTL0180: Services with missing/unavailable dependencies" => [
"jboss.deployment.unit.\"PGestion.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"PGestion.war\".beanmanager]",
"jboss.deployment.unit.\"PGestion.war\".batch.artifact.factory is missing [jboss.deployment.unit.\"PGestion.war\".beanmanager]"
]
}
这是DAO的接口:
package com.bestofgeeks.gestion.dao;
import java.util.List;
import javax.ejb.Local;
import com.bestofgeeks.gestion.entity.products;
@Local
public interface IGestion {
public void delete(products p);
public products persiste(products p);
public List<products> selectAll();
}
还有我的jsf项目
我创建了一个控制器
这是密码
package com.bestofgeeks.gestion.controllers;
import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import com.bestofgeeks.gestion.services.Iservices;
@RequestScoped @ManagedBean
public class myProduct {
@EJB
public String name = "noredine";
Iservices service;
}
必须注入本地接口,而不是bean:
@EJB
IGestion product;
正如@kukeltje在评论中所说:
阅读错误:(emphasis mine)“找不到类型为的接口的EJB
'com.bestofgeeks.gestion.dao.Implement.GestionDAOBean'以及它是什么
引用是一个impl,而不是
界面 你可以发布一些代码吗?请添加更多这还不足以帮助你。并请将其添加到不在评论中的问题中。请按其下方的“编辑”按钮编辑您的问题,而不是将其添加到评论中。这里没有与JSF相关的代码,jpa和JavaEE也不是太广泛。尝试创建一个读取错误:(emphasis mine)“找不到类型为'com.bestofgeeks.gestion.dao.Implement.GestionDAOBean'的接口的EJB”,它引用的是impl,而不是接口!正如错误中明确指出的(正如我所评论的)。也许在答案中加上这一点,让其他“学习”阅读错误,因为它们大多非常明确
package com.bestofgeeks.gestion.services;
import java.util.List;
import javax.ejb.Local;
import com.bestofgeeks.gestion.entity.products;
@Local
public interface Iservices {
public List<products> selectAll();
public void delete(products p);
public products persiste(products p);
}
package com.bestofgeeks.gestion.services.ImplService;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import com.bestofgeeks.gestion.dao.Implement.GestionDAOBean;
import com.bestofgeeks.gestion.entity.products;
import com.bestofgeeks.gestion.services.Iservices;
@Stateless
public class ImplServiceProduct implements Iservices{
@EJB
GestionDAOBean product;
@Override
public List<products> selectAll() {
return product.selectAll();
}
@Override
public void delete(products p) {
// TODO Auto-generated method stub
product.delete(p);
}
@Override
public products persiste(products p) {
// TODO Auto-generated method stub
return product.persiste(p);
}
}
package com.bestofgeeks.gestion.entity;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table
public class products {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@Column
private String nameproduct;
@Column
private String reference;
@Column
private Date dateposte;
public products(String nameproduct, String reference, Date dateposte) {
super();
this.nameproduct = nameproduct;
this.reference = reference;
this.dateposte = dateposte;
}
public products() {
super();
// TODO Auto-generated constructor stub
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNameproduct() {
return nameproduct;
}
public void setNameproduct(String nameproduct) {
this.nameproduct = nameproduct;
}
public String getRefence() {
return reference;
}
public void setRefences(String reference) {
this.reference = reference;
}
public Date getDateposte() {
return dateposte;
}
public void setDateposte(Date dateposte) {
this.dateposte = dateposte;
}
}
package com.bestofgeeks.gestion.controllers;
import javax.annotation.ManagedBean;
import javax.ejb.EJB;
import javax.enterprise.context.RequestScoped;
import com.bestofgeeks.gestion.services.Iservices;
@RequestScoped @ManagedBean
public class myProduct {
@EJB
public String name = "noredine";
Iservices service;
}
@EJB
IGestion product;