参考几个JavaBeans Enterprise

时间:2018-01-22 18:11:42

标签: java-ee glassfish ejb

我在编写EJB应用程序时遇到了问题。我搜索一个解决方案,但我仍然遇到与glassfish相同的问题:

cannot Deploy EducationPortal
deploy is failing=Error occurred during deployment: Exception while deploying the app [EducationPortal] : 
Warning : Unable to determine local  business vs. remote business designation for  EJB 3.0 ref Local ejb-ref     
name=com.portal.education.servlet.ModuleController/moduleServiceLocal,Local 3.x
interface =com.portal.education.service.Module.ModuleServiceLocal,ejb-
link=ModuleServiceImpl,lookup=,mappedName=,jndi-name=,refType=Session. 
Please see server.log for more details.

我必须在同一个servlet中引用几个EJB才能使用某些方法 我该怎么做才能得到正确的结果

@EJB (beanName = "ModuleServiceImpl") 

private ModuleServiceLocal moduleServiceLocal;
@EJB(beanName = "TeacherServiceImpl") 
private TeacherServiceLocal teacherServiceLocal;
@EJB(beanName = "LevelServiceImpl") 
private LevelServiceLocal levelServiceLocal;
@EJB(beanName = "SubjectServiceImpl") 
private SubjectServiceLocal subjectServiceLocal;

interface ModuleServiceLocal

import java.util.List;

import javax.ejb.Local;

import com.issatso.portal.education.domain.*;
import com.issatso.portal.education.domain.Module.Id;

@Local
 public interface ModuleServiceLocal {



    Module find(Id idModule);
    List<Module> findAll();

    void delete(Id idModule);

    Module save(Module object);

}

类ModuleServiceImpl

import java.util.List;

import javax.ejb.Singleton;
import javax.inject.Inject;

import com.issatso.portal.education.dao.module.ModuleDao;
import com.issatso.portal.education.domain.Module.Id;
import com.issatso.portal.education.domain.Module;

@Singleton
  public class ModuleServiceImpl   implements ModuleServiceLocal  {


    @Inject
    private ModuleDao dao;

    public Module find(Id idModule) {
        return (Module) this.dao.find(idModule);
    }

    public List<Module> findAll() {
        return this.dao.findAll();
    }

    public void delete(Id idModule) {
        this.dao.delete(idModule);

    }

    public Module save(Module object) {
        String action = (object.getIdModule()!= null) ? "UPDATED" : "CREATED";
        Module Module = (com.issatso.portal.education.domain.Module) this.dao.save(object);
        return Module;
    }


    }

1 个答案:

答案 0 :(得分:1)

您可以在servlet中使用@Inject来注入bean。而且您不需要定义beanName。只是做:

@Inject
private ModuleServiceLocal moduleServiceLocal;
@Inject
private TeacherServiceLocal teacherServiceLocal;
[...]

您正在bean ModuleServiceLocal中实现接口ModuleServiceImpl,因此CDI能够找到该类。