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

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

Susan Sarandon
Susan Sarandon원래의
2024-11-07 11:48:03433검색

How to Inject Stateless EJBs into JAX-RS Web Services?

JAX-RS 웹 서비스에 EJB 삽입

문제 설명:

상태 비저장 EJB를 JAX-RS 웹 서비스에 삽입하려는 시도에서 주석을 사용하는 JAX-RS 웹 서비스의 경우 EJB 인스턴스는 서비스 클래스에서 null로 유지되어 사용 시 NullPointerException이 발생합니다.

환경 세부 정보:

  • Glassfish 3.1
  • Netbeans 6.9 RC 2
  • Java EE 6

솔루션 옵션:

옵션 1 : 주입 공급자 SPI를 사용하여 주입

  • EJB 조회 및 주입을 수행하는 사용자 지정 주입 공급자를 구현합니다.
  • 예를 들어 Jersey 1.17에서는 다음과 같습니다.
import com.sun.jersey.core.spi.component.ComponentContext;
import ...
public class EJBProvider implements InjectableProvider<EJB, Type> {
    // Implementation details...
}

옵션 2: 리소스 클래스를 EJB로 변환

  • JAX-RS 리소스 클래스를 Stateless EJB 자체로 만들어 자체적으로 관리할 수 있도록 합니다. dependency.

옵션 3: CDI 활용

  • CDI(컨텍스트 및 종속성 주입)를 사용하여 EJB를 JAX-RS 리소스 클래스에 주입합니다. .

예:

@Path("book")
@RequestScoped
public class BookResource {
    @Inject
    private BookEJB bookEJB;
    // Implementation details...
}

추가 리소스:

  • [EJB 주입]( https://docs.oracle.com/javaee/7/api/javax/ejb/EJB.html)
  • [@EJB 주입](https://stackoverflow.com/questions/1130846/ejb- 주입)
  • [REST 서비스를 EJB 3.1과 결합](https://dzone.com/articles/combining-rest-services-with-ejb-31)
  • [EJB 3.1 및 REST - 경량 하이브리드](https://weblogs.java.net/blog/emcfarlane/archive/2009/12/10/ejb-31-and-rest-lightweight-hybrid)
  • [EJB 주입 전쟁 중 jar에서 jax-rs 클래스로](https://stackoverflow.com/questions/6474811/injecting-an-ejb-from-a-jar-into-a-jax-rs-class-in- 전쟁)

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

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