Failed to convert ejbRef to ejb

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 bean) ... I do not know if I use it correctly

  @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; } } 

Error

 HTTP Status 500 - type Exception report message descriptionThe server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: WELD-000049 Unable to invoke [method] @PostConstruct public 

com.myapp.interfaces.QuestionController.initialize () on com.myapp.interfaces.QuestionController@29421836

 root cause org.jboss.weld.exceptions.WeldException: WELD-000049 Unable to invoke [method] @PostConstruct public 

com.myapp.interfaces.QuestionController.initialize () on com.myapp.interfaces.QuestionController@29421836

 root cause java.lang.reflect.InvocationTargetException root cause java.lang.IllegalStateException: Unable to convert ejbRef for ejb QuestionManagerEJB to a business object of type interface 

com.myapp.application.QuestionCommonBusiness

 note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.1 logs. 
+4
source share
2 answers

This issue is related to the welding issue of Glassfish 16186 . The wrong interface is selected for @Local , namely the smallest interface.

You have 2 options:

  • Just use @EJB .
  • Get rid of the QuestionCommonBusiness Super QuestionCommonBusiness .

Needless to say, option 1 is preferred.

+5
source

Or you can include QuestionCommonBusiness.class in your @Local annotation:

  @Stateless @Local({QuestionLocalBusiness.class, QuestionCommonBusiness.class) public class QuestionManagerEJB implements QuestionLocalBusiness { ... 
+1
source

All Articles