>  기사  >  Java  >  JAX-RS 서비스에 EJB를 삽입하는 방법은 무엇입니까?

JAX-RS 서비스에 EJB를 삽입하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-07 07:20:02313검색

How to Inject EJBs into JAX-RS Services?

JAX-RS 서비스에 EJB 삽입

문제 설명

주석을 통해 JAX-RS 웹 서비스에 상태 비저장 EJB를 삽입하려고 하면 null EJB 참조로 인해 사용 시 NullPointerException이 발생합니다.

솔루션

JAX-RS 웹 서비스에 @Stateless로 주석을 추가하는 것이 직접적인 솔루션처럼 보일 수 있지만 JAX-RS에서는 실현 가능하지 않습니다. 홀로. 다음 대체 접근 방식을 고려하십시오.

옵션 1: 주입 공급자 SPI

EJB의 조회 및 주입을 수행하는 주입 공급자를 구현합니다. 이에 따라 공급자를 등록합니다.

옵션 2: BookResource를 EJB로 포함

BookResource 클래스에 @Stateless로 주석을 달고 EJB 내에서 해당 수명 주기를 관리합니다. 그러나 이 접근 방식은 단위 테스트를 더욱 어렵게 만듭니다.

옵션 3: CDI 활용

제공된 예와 같이 종속성 주입을 위해 CDI를 사용합니다. 이 접근 방식은 특히 테스트 환경에서 단순성과 유연성을 제공합니다.

작업 예제(옵션 1)

@Path("book")
public class BookResource {

    @Inject
    private BookEJB bookEJB;

    //...
}
// EJBProvider.java

@Provider
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // ... (Implementation as provided in the answer)
}

결론

주사 공급자를 구현하거나 채택하여 CDI를 사용하면 JAX-RS 서비스에 EJB를 주입하여 두 프레임워크 간의 통합 옵션을 확장할 수 있습니다.

위 내용은 JAX-RS 서비스에 EJB를 삽입하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.