首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法将ejbRef转换为ejb

无法将ejbRef转换为ejb
EN

Stack Overflow用户
提问于 2011-10-17 19:33:05
回答 2查看 2.9K关注 0票数 4

QuestionCommonBusiness

代码语言:javascript
运行
复制
public interface QuestionCommonBusiness {

    void create(Question question);
    void update (Question question);
    void delete(Question question);
    Question read(Integer id);

    List<Question> all();
}

QuestionLocalBusiness

代码语言:javascript
运行
复制
public interface QuestionLocalBusiness extends QuestionCommonBusiness {

}

QuestionManagerEJB

代码语言:javascript
运行
复制
@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不知道我是否正确地使用了

代码语言:javascript
运行
复制
 @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日志中找到。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-17 20:06:16

这个问题与Glassfish Weld issue 16186有关。为@Local选择了错误的接口,即最高级的接口。

你有两个选择:

  1. 只是使用@EJB代替。
  2. 处理掉QuestionCommonBusiness

不用说,备选案文1是可取的。

票数 5
EN

Stack Overflow用户

发布于 2014-04-15 07:10:16

或者,您可以在@Local注释中包括QuestionCommonBusiness.class:

代码语言:javascript
运行
复制
   @Stateless
   @Local({QuestionLocalBusiness.class, QuestionCommonBusiness.class)
   public class QuestionManagerEJB implements QuestionLocalBusiness {
      ...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7798595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档