문제

새로운 EJB 3.1 사양을 사용하면 EJB를 POJO에 주입 할 수 있습니까? EJB 3.0에서 @EJB 주석은 EJB를 주입하는 데 사용될 수 있지만 간단한 pojos에서는 작동하지 않았습니다.

그렇지 않은 경우 새 키워드를 간단하게 사용할 수 없다는 것을 알고 있으므로 JNDI에서 Bean을 봐야합니다.

도움이 되었습니까?

해결책

예, JNDI 조회를 사용하십시오.

Pojo가 귀하에 의해 만들어지기 때문에 (나는 가정), 컨테이너는 종속성을 주입 할 책임이 없습니다.

다른 팁

새로운 EJB 3.1 사양을 사용하면 EJB를 POJO에 주입 할 수 있습니까? EJB 3.0에서 @EJB 주석은 EJB를 주입하는 데 사용될 수 있지만 간단한 pojos에서는 작동하지 않았습니다.

Pojo에 EJB를 주입 할 수 있습니다 만약에 JSR-299 (Java ontexts 및 ependency nejection) 즉, 당신의 pojo가 CDI 관리 콩이라면. 이 경우 다음을 수행 할 수 있습니다.

@Inject MyEJB service

그러나 이것은 EJB 3.1 기능이 아니며 CDI에서 제공됩니다. CDI를 사용하지 않으면 조회해야합니다.

새로운 EJB 사양 (3.1)은 EJBS의 글로벌 JNDI 이름을 지정하는 기능을 추가합니다. 이것은 어디서나 콩에 사용할 수 있음을 의미합니다.

그러나 EJB 3.1 컨테이너가 POJO에 대해 알지 못하므로 명시적인 JNDI 조회를 수행해야합니다.

내가 추측하지 않는 유일한 예외는 Pojo가 실제로 응용 프로그램 클라이언트 인 경우 EJB를 포함하는 필드가 정적 인 경우 @EJB 주석을 적용 할 수 있습니다. 이것이 귀하의 상황이라면 전체 Java EE 5 사양에서 응용 프로그램 클라이언트 규칙을 확인해야합니다.

마지막으로, JSR-299를 포함 시키면 Java EE 6은 어떤 식 으로든 묘사하는 일을 허용 할 수 있습니다. 나는 사양을 모르지만 그것에 대해서는 언급 할 수 없습니다.

이 모든 것이 도움이되기를 바랍니다.

나도 할 수 있는지 궁금합니다 ejbs를 관리되지 않는 물체에 주입하십시오. 참조 용접 (JSR 299 참조 구현) 자세한 내용은 문서입니다.

그러나 이와 같은 저장소 또는 공장 내에서 손으로 의존성 주입을 수행 할 수 있습니다.

@Stateless
public PojoRespository {

  @Inject
  ResourceForPojos resource;
  @PersistenceContext
  private EntityManager em;

  public Pojo findById(Object id) {
    Pojo p = (Pojo) em.find(Pojo.class, id);
    p.setResource(resource); // injects resource
    return p;
  }

}

주입을 수행 해야하는 방법이 많으면 인터셉터를 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top