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