SCBCD del Día: Message Driven Beans

(Imagen: Henri Matisse - Ventana Abierta)

A developer wants to create a JMS message-driven bean that responds to javax.jms.TextMessage messages. Which two statements are true? (Choose two)

  • The developer must implement ejbCreate method
  • The developer does NOT need to create a business inferface for the bean.
  • The developer must implement a method that declares javax.jms.TextMessage as an argument
  • The message-driven bean class must implement methods of the javax.jms.MessageListener interface
  • The message-driven class must implement methods of the javax.ejb.MessageDrivenBean interface.

Un MDB (message driven bean) es un EJB completo, como un bean entity o de sesión, pero guarda ciertas diferencias importantes. Un MDB posee una clase, pero no requiere una interfaz local ni remota. Estas interfaces no son necesarias dado que un MDB sólo responde a mensajes asíncronos. Por eso, nos quedamos con la segunda.

La clase de un MDB debe implementar directa o inderectamente la interfaz message listener requerida para el tipo de mensajes que soporta. Para el caso de JMS,como en la pregunta, esta interfaz es javax.jms.MessageListener. Entonces, la cuarta también va y ya tenemos nuestra respuesta: la segunda y la cuarta.

Pero dado que nuestro interés es académico y de aprendizaje (sí..claro), procederemos a revisar el resto de alternativas. La clase del MDB puede, de ser necesario pero no es imperativo, realizar lo siguiente:

  • Implementar la interfaz javax.ejb.MessaegeDrivenBean
  • Implementar la interfaz TimedObject
  • Implementar el método ejbCreate

Por eso mismo, la primera y quinta alternativa son incorrectas. Para finalizar, la tercera es incorrecta dado que la intefaz MessageListener define el método onMessage(), que toma como parámetro una instancia de Message y no de TextMessage . Dentro del método , ya es posible castear Message a TextMessage y otros tipos de mensaje definidos en JMS.

Pregunta tomada de ExamWorx

Publicar un comentario