Jakarta ee 未找到接口类型为';CommonService';用于绑定BaseEntityServiceBean/commonService

Jakarta ee 未找到接口类型为';CommonService';用于绑定BaseEntityServiceBean/commonService,jakarta-ee,dependency-injection,jboss,annotations,ejb,Jakarta Ee,Dependency Injection,Jboss,Annotations,Ejb,我有一个公共服务接口: @Local public interface CommonService { public <T> T create(T entity) throws CreateException; public <T> T update(T entity) throws UpdateException; public <T> void delete(T entity) throws DeleteException;

我有一个公共服务接口:

@Local
public interface CommonService {

    public <T> T create(T entity) throws CreateException;
    public <T> T update(T entity) throws UpdateException;
    public <T> void delete(T entity) throws DeleteException;

    ...
}
所有实体服务都有一个接口(基本上只是一个添加泛型等的接口):

具体的服务bean是:

@Stateless
@Interceptors({LoggingInterceptor.class, ExceptionInterceptor.class})
public class BarwertberechnungVerwaltungBean extends BaseEntityServiceBean<Integer, Barwertberechnung> implements BarwertberechnungVerwaltung {

    @Override
    public List<Barwertberechnung> findBarwertberechnungen(Integer partnerId, List<Integer> barwertberechnungArtIds) {
        ... // load stuff
    }
}
显然,容器找不到要注入抽象基类的公共服务
BaseEntityServiceBean

Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014544: No EJB found with interface of type 'de.bla.cld.service.CommonService' for binding de.bla.cld.service.BaseEntityServiceBean/commonService

我的注解怎么了?我什么也没看见。。。如何解决这个问题?

EJB客户端应该使用@EJB注入EJB接口,而不是EJB类本身。可以注入无接口EJB,但前提是EJB没有实现EJB接口。首先感谢您的回复。Hmmm.“EJB客户端应该使用@EJB来注入EJB接口,而不是EJB类本身。”:这不是我通过
@EJB private CommonService CommonService所做的吗CommonServiceBean的实现在哪里?EAR部署是否与此有关?我们为应用程序部署了3个EAR。。。
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public class BaseEntityServiceBean<K, T extends Entity<K>> implements EntityService<K, T> {

    // also tried protected without getter and setter, same problem        
    @EJB
    private CommonService commonService;

    public CommonService getCommonService() {
        return this.commonService;
    }

    public void setCommonService(CommonService commonService) {
//      this.commonService = commonService;
    }

    @Override
    public T create(T entity) throws CreateException {
        return this.commonService.create(entity);
    }

    @Override
    public T update(T entity) throws UpdateException {
        return this.commonService.update(entity);
    }

    @Override
    public void delete(T entity) throws DeleteException {
        this.commonService.delete(entity);
    }

    ...
}
@Stateless
@Interceptors({LoggingInterceptor.class, ExceptionInterceptor.class})
public class BarwertberechnungVerwaltungBean extends BaseEntityServiceBean<Integer, Barwertberechnung> implements BarwertberechnungVerwaltung {

    @Override
    public List<Barwertberechnung> findBarwertberechnungen(Integer partnerId, List<Integer> barwertberechnungArtIds) {
        ... // load stuff
    }
}
18:52:00,136 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-11) MSC00001: Failed to start service jboss.deployment.subunit."CLD-EAR.ear"."CLD-EJB3.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.subunit."CLD-EAR.ear"."CLD-EJB3.jar".INSTALL: Failed to process phase INSTALL of subdeployment "CLD-EJB3.jar" of deployment "CLD-EAR.ear"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) [rt.jar:1.6.0_45]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) [rt.jar:1.6.0_45]
    at java.lang.Thread.run(Thread.java:662) [rt.jar:1.6.0_45]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011058: Failed to install component BarwertberechnungVerwaltungBean
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:100)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014544: No EJB found with interface of type 'de.bla.cld.service.CommonService' for binding de.bla.cld.service.BaseEntityServiceBean/commonService
    at org.jboss.as.ejb3.deployment.processors.EjbInjectionSource.getResourceValue(EjbInjectionSource.java:88)
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.processBindings(ComponentInstallProcessor.java:245)
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.access$000(ComponentInstallProcessor.java:74)
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor$1.handle(ComponentInstallProcessor.java:199)
    at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54)
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deployComponent(ComponentInstallProcessor.java:195)
    at org.jboss.as.ee.component.deployers.ComponentInstallProcessor.deploy(ComponentInstallProcessor.java:93)
    ... 6 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS014544: No EJB found with interface of type 'de.bla.cld.service.CommonService' for binding de.bla.cld.service.BaseEntityServiceBean/commonService