0

일부 @Aynchronous 메소드를 제공하기 위해 EJB를 만들어야합니다.상태 비 저장 로직에 EJB @Aynchronous 메소드를 제공하는 가장 효율적인 방법

일부 EJB는 상태를 전혀 갖지 않습니다.

일부 사용자는 @ApplicationScoped 인 스레드 안전 인스턴스 변수 (@Inject 사용)를 CDI에 주입했을 수 있습니다. 대신 @Singleton & @ConcurrencyManagement(BEAN) 쌍의 @Stateless을 :

는이

@Singleton 
@ConcurrencyManagement(BEAN) 
public class EjbClass { 
    @Asynchronous 
    public void asyncMethod() { 
     //some code 
    } 
} 

내 두 번째 추측은 사용하는 것? : 할 수있는 다음 가장 효율적인 방법입니다.

그러나 이러한 EJB 중 둘 이상의 인스턴스가 필요하지 않아야합니다. 따라서 @Singleton에 대한 몇 가지 문제가 없으면 가장 효율적이라고 생각합니다.

GlassFish 4.1에서 EJB 3.2를 사용하고 있습니다.

답변

1

귀하의 평가에 동의합니다. @Singleton + @ConcurrencyManagement(BEAN)은 문제 설명에 적합합니다. 강조 표시 한대로 @Stateless에는 동시 호출이있을 경우 여러 인스턴스가 생성 될 수 있다는 단점이 있습니다. 그 오버 헤드는 아마 그렇지만 그렇게하는 것이 쉽기 때문에 오버 헤드는 피할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 다른 사람들이 더 나은 대안을 알고있는 경우에 대비하여 질문을 공개하겠습니다.하지만 아무도 다른 해결책을 제안하지 않으면 곧 답변을 수락하겠습니다. – XDR

관련 문제