2014-09-16 3 views
0

jms에는 메시지를 수신하는 MessageLister, onMesssage가 있습니다. 그럼 MessageDrivenBean이 필요한 이유는 무엇입니까? 이것은 쓸모 없게 된 것입니까? javaee6 MDB api에서 그들은 ejb 3.0에서 사용하지 않는다고 말합니다. mdb와 jms의 차이점은 무엇입니까?은 ejb3.0에서 더 이상 사용되지 않는 MessageDrivenBean입니까?

Jms에서 sychronous 호출이란 무엇입니까? 응답이 발신자에게 즉시 반환되는 것입니까? Jms에서는 동기 호출이 보장됩니까? 모든

+0

@Gord 링크는 다음과 같습니다. http://docs.oracle.com/javaee/6/api/javax/ejb/MessageDrivenBean.html – user3791049

답변

1

우선의 휴식하는 오해를 넣어주지 다음 EE6 Javadoc for the MessageDrivenBean interface는 상태가 더 이상 메시지 구동 Bean 클래스 이 인터페이스를 구현하는 것이 필요합니다

EJB 3.0를 사용합니다. EJB 3.0의 당신이 일반적으로 MDB, 그 MDC를 얻을 수있는 @Resource 주석을 선언 할 @MessageDriven 주석을 사용하기 때문에

이다. 자주 함께 사용하지만 이처럼 from the official tutorial

@MessageDriven(activationConfig = { 
    @ActivationConfigProperty(propertyName = "destinationLookup", 
      propertyValue = "jms/MyQueue"), 
    @ActivationConfigProperty(propertyName = "destinationType", 
      propertyValue = "javax.jms.Queue") 
}) 
public class SimpleMessageBean implements MessageListener { 

    @Resource 
    private MessageDrivenContext mdc; 
    static final Logger logger = Logger.getLogger("SimpleMessageBean"); 

는 MDB를하고 JMS는 완전히 다른 사항은 다음과 같습니다

  • MDB에는 JavaEE 어플 프로그래밍 풍경에 잘 맞는 비동기 메시지 수신기를위한 프로그래밍 모델이며, 트랜잭션 인식과 같은 다른 EJB 유형과 중요한 특성을 공유합니다.
  • JMS는 메시징 기술 사양, 즉 메시지 지향 미들웨어의 청사진입니다.

MDB는 다른 메시징 기술과 함께 사용될 수 있으며 JMS는 분명히 MDB 외부에서 사용될 수 있습니다. Java EE 애플리케이션에서 MDB를 사용하는 요점은 트랜잭션 인식이 가능한 메시지 엔드 포인트를 쉽게 구현할 수 있다는 것입니다.

동기식 메시징 시스템 시스템에서 송신 측은 메시지 전달을 기다립니다. 그러나 비동기 시스템에서는 실제 전송이 이루어지기를 기다리지 않고 즉시 보낸 사람이 반환합니다. 결과적으로 시스템의 두 끝 사이에 훨씬 느슨한 커플 링이 발생하고 수신 측 장애 또는 과부하로 인해 송신 측이 잠기거나 감속 할 위험이 없습니다.

관련 문제