주석을 통해 JAX-RS 웹 서비스에 상태 비저장 EJB를 삽입하려고 하면 null EJB 참조로 인해 사용 시 NullPointerException이 발생합니다.
JAX-RS 웹 서비스에 @Stateless로 주석을 추가하는 것이 직접적인 솔루션처럼 보일 수 있지만 JAX-RS에서는 실현 가능하지 않습니다. 홀로. 다음 대체 접근 방식을 고려하십시오.
옵션 1: 주입 공급자 SPI
EJB의 조회 및 주입을 수행하는 주입 공급자를 구현합니다. 이에 따라 공급자를 등록합니다.
옵션 2: BookResource를 EJB로 포함
BookResource 클래스에 @Stateless로 주석을 달고 EJB 내에서 해당 수명 주기를 관리합니다. 그러나 이 접근 방식은 단위 테스트를 더욱 어렵게 만듭니다.
옵션 3: CDI 활용
제공된 예와 같이 종속성 주입을 위해 CDI를 사용합니다. 이 접근 방식은 특히 테스트 환경에서 단순성과 유연성을 제공합니다.
@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 중국어 웹사이트의 기타 관련 기사를 참조하세요!