EJB 空点异常
EJB Null point exception
我有一个带接口的 class 和一个新的 class,我称之为新的 ojbClass(params) - 其中包含一个 ejb 调用(下面的代码)。当它从那个 class 调用 ejb 时,我得到空点异常。
Class在内部调用EJB方法
public class ProfileDTO {
private Profile profileEntity;
@EJB
private ProfileRemoteBean profileBean; //remote bean is interface name
public ProfileDTO(String firstName, String lastName, Date birthDate, String gender, String country, String district, String city, String identificationNo, String idCardNo, String phone) {
createProfile();
}
public void createProfileEntity() {
Profile profileEntity = new Profile();
//deleted code for Whosebug
//...................................
this.profileEntity = profileEntity;
}
public Profile getProfileEntity(){
return this.profileEntity;
}
private void createProfile() {
createProfileEntity();
profileBean.addProfile(getProfileEntity()); // profile bean null point here
}
}
EJB 接口
@Remote
public interface ProfileRemoteBean {
public List<Profile> getProfile();
}
EJBClass
@Stateless
public class ProfileBean implements ProfileRemoteBean,Serializable{
@PersistenceContext(unitName = "com.ulbs.admission.core_AdmissionCoreDBEJB_ejb_1.0-SNAPSHOTPU", type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;
@Override
public List<Profile> getProfile() {
TypedQuery<Profile> query = entityManager.createNamedQuery("Profile.findAll", Profile.class);
return query.getResultList();
}
}
你能给我一些提示或解决方案吗?
谢谢!
您的代码看起来没问题,NPE 不是来自您的方法 ProfileRemoteBean.addProfile(Profile profile)
而是?
能不能贴一下?
您尝试的操作不应该起作用:您不能在 DTO 中注入 EJB,因为它不是托管的 class。
要么重构你的依赖注入,要么通过构造函数将 ProfileRemoteBean
传递给 ProfileDTO
。
我有一个带接口的 class 和一个新的 class,我称之为新的 ojbClass(params) - 其中包含一个 ejb 调用(下面的代码)。当它从那个 class 调用 ejb 时,我得到空点异常。
Class在内部调用EJB方法
public class ProfileDTO {
private Profile profileEntity;
@EJB
private ProfileRemoteBean profileBean; //remote bean is interface name
public ProfileDTO(String firstName, String lastName, Date birthDate, String gender, String country, String district, String city, String identificationNo, String idCardNo, String phone) {
createProfile();
}
public void createProfileEntity() {
Profile profileEntity = new Profile();
//deleted code for Whosebug
//...................................
this.profileEntity = profileEntity;
}
public Profile getProfileEntity(){
return this.profileEntity;
}
private void createProfile() {
createProfileEntity();
profileBean.addProfile(getProfileEntity()); // profile bean null point here
}
}
EJB 接口
@Remote
public interface ProfileRemoteBean {
public List<Profile> getProfile();
}
EJBClass
@Stateless
public class ProfileBean implements ProfileRemoteBean,Serializable{
@PersistenceContext(unitName = "com.ulbs.admission.core_AdmissionCoreDBEJB_ejb_1.0-SNAPSHOTPU", type = PersistenceContextType.TRANSACTION)
private EntityManager entityManager;
@Override
public List<Profile> getProfile() {
TypedQuery<Profile> query = entityManager.createNamedQuery("Profile.findAll", Profile.class);
return query.getResultList();
}
}
你能给我一些提示或解决方案吗?
谢谢!
您的代码看起来没问题,NPE 不是来自您的方法 ProfileRemoteBean.addProfile(Profile profile)
而是?
能不能贴一下?
您尝试的操作不应该起作用:您不能在 DTO 中注入 EJB,因为它不是托管的 class。
要么重构你的依赖注入,要么通过构造函数将 ProfileRemoteBean
传递给 ProfileDTO
。