2013-07-04 3 views
0

EJB에 대해 잘 알지 못합니다. 기본적으로는 REST 서비스 클래스, 내가 AffableBeanService라는 클래스가'java : comp/env/ejb/CategoryFacade'에 대한 EJB 찾기가 실패했습니다.

@Stateless 
public class CategoryFacade extends AbstractFacade<Category> { 
    @PersistenceContext(unitName = "AffableBeanPU") 
    private EntityManager em; 

    protected EntityManager getEntityManager() { 
     return em; 
    } 

    public CategoryFacade() { 
     super(Category.class); 
    } 
} 

: 이것은 내 EJB이다. 이에서 나는 다음과 같이 EJB를 호출하는 것을 시도하고있다 :

@GET 
@Path("/categories/{categoryId}") 
public String getInfo(@PathParam("categoryId") String categoryId) { 
    //Note I have removed try, catch etc to save the space 
    CategoryFacade categoryFacade; //This is a class, not a interface 

    InitialContext ic = new InitialContext(); 
    categoryFacade = (CategoryFacade)ic.lookup("java:comp/env/ejb/CategoryFacade"); 
} 

을 런타임 내가 javax.naming.NamingException: Lookup failed for 'java:/env/ejb/CategoryFacade' in SerialContext[myEnv으로 예외를 받고 오전. 나는 여기에서 놓치고있는 것이 확실하지 않다. 아무도 나를 도울 수 있습니까?

@EJB 
CategoryFacade categoryFacade; 

을 그러나 다시 EJB 주입은 발생하지 내가 NullPointerException가 점점 오전 :

또한이 같은 시도했다. 어떤 구성이 누락되었다고 가정합니다. 또는 EJB를 올바른 방법으로 호출하는지 확신 할 수 없습니다. 누군가 나를 안내 할 수 있습니까?

답변

0

마지막으로, 직접 해결할 수 있습니다. 내가 액세스하려는 것은 Rest Service의 EJB입니다. 그것이 작동되도록하기 위해서, 나는 다음과 같은 EJB로 나머지 서비스 클래스 자체를 만들어 :

@Stateless //This made trick 
@Path("/service") 
public class AffableBeanService { 
    //EJB Injection 
    @EJB 
    CategoryFacade categoryFacade; 

    @GET 
    @Path("/categories/{categoryId}") 
    public String categories(@PathParam("categoryId") String categoryId) { 
     selectedCategory = categoryFacade.find(Short.parseShort(categoryId)); 
    } 
} 

을 그래서 지금은 JNDI하지 않고 EJB를 호출 할 수 있어요 찾아보고 주입이 잘 작동된다.