我在编写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;接口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;
}
}发布于 2018-01-23 17:00:42
您可以在servlet中使用@Inject来注入bean。而且您不需要定义beanName。只需这样做:
@Inject
private ModuleServiceLocal moduleServiceLocal;
@Inject
private TeacherServiceLocal teacherServiceLocal;
[...]您将在bean ModuleServiceImpl中实现接口ModuleServiceLocal,以便CDI能够通过该接口找到类。
https://stackoverflow.com/questions/48387789
复制相似问题