QuestionCommonBusiness
public interface QuestionCommonBusiness {
void create(Question question);
void update (Question question);
void delete(Question question);
Question read(Integer id);
List<Question> all();
}QuestionLocalBusiness
public interface QuestionLocalBusiness extends QuestionCommonBusiness {
}QuestionManagerEJB
@Stateless
@Local(QuestionLocalBusiness.class)
public class QuestionManagerEJB implements QuestionLocalBusiness {
@PersistenceContext(unitName = "MyPU")
private EntityManager entityManager;
@Override
public void create(Question question) {
entityManager.persist(question);
}
@Override
public void update(Question question) {
entityManager.merge(question);
}
@Override
public void delete(Question question) {
entityManager.remove(question);
}
@Override
public Question read(Integer id) {
return entityManager.find(Question.class, id);
}
@Override
public List<Question> all() {
TypedQuery<Question> query = entityManager.createNamedQuery(
"allQuestions", Question.class);
return query.getResultList();
}
}QuestionController (JSF )...I不知道我是否正确地使用了
@Named
@RequestScoped
public class QuestionController {
@Inject
private QuestionLocalBusiness questionManager;
private List<Question> questions;
@PostConstruct
public void initialize() {
questions = questionManager.all();
}
public List<Question> getQuestions() {
return questions;
}
}误差
HTTP 500 -类型的异常报告消息descriptionThe服务器遇到内部错误(),无法满足此请求。异常javax.servlet.ServletException:焊缝-000049无法调用方法@PostConstruct
com.myapp.interfaces.QuestionController.initialize() on com.myapp.interfaces.QuestionController@29421836
根本原因org.jboss.weld.exceptions.WeldException:焊缝-000049无法调用方法@PostConstruct
com.myapp.interfaces.QuestionController.initialize() on com.myapp.interfaces.QuestionController@29421836
根原因java.lang.reflect.InvocationTargetException根原因java.lang.IllegalStateException:无法将ejb QuestionManagerEJB的ejbRef转换为接口类型的业务对象
com.myapp.application.QuestionCommonBusiness
注意,异常的完整堆栈跟踪及其根源可在GlassFish服务器开放源码版3.1.1日志中找到。
发布于 2011-10-17 20:06:16
这个问题与Glassfish Weld issue 16186有关。为@Local选择了错误的接口,即最高级的接口。
你有两个选择:
@EJB代替。QuestionCommonBusiness 不用说,备选案文1是可取的。
发布于 2014-04-15 07:10:16
或者,您可以在@Local注释中包括QuestionCommonBusiness.class:
@Stateless
@Local({QuestionLocalBusiness.class, QuestionCommonBusiness.class)
public class QuestionManagerEJB implements QuestionLocalBusiness {
...https://stackoverflow.com/questions/7798595
复制相似问题