Witam.
Próbuję skonfigurować i oprogramować komunikację za pomocą MDB. Używam WebLogica, ustawiłem w nim JMSServer, ConnectionFactory i Queue. W ramach testów utworzyłem stronę JSF z commandButtonem podpiętym pod funkcję ziarenka o zakresie aplikacji.
@ManagedBean(name="message")
@ApplicationScoped
public class MessageClient {
private String message;
@Resource(mappedName="jms/ConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(mappedName="jms/Queue")
private static Queue queue;
public MessageClient() {
this.setMessage("Test message");
}
public void sendMessage()
{
this.setMessage("New test message");
try
{
Connection conn = connectionFactory.createConnection();
Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer producer = session.createProducer(queue);
TextMessage msg = session.createTextMessage();
msg.setText(message);
producer.send(msg);
}catch(JMSException e){};
message = "Done";
}
Chciałem odebrać tę wiadomość poprzez MDB
@MessageDriven(mappedName = "jms/Queue")
public class MessageDrivenEJBBean implements MessageListener {
public MessageDrivenEJBBean(){}
public void onMessage(Message message) {
TextMessage txtMsg = null;
try{
if(message instanceof TextMessage) {
txtMsg= (TextMessage) message;
String txt = txtMsg.getText();
}
} catch(JMSException e) {}
}
}
Niestety przy próbie odpalenia buttona aplikacja wywala się krzycząc, że obiekt message nie istnieje.
action="#{message.sendMessage}": Target Unreachable, identifier 'message' resolved to null
Gdy usunę adnotację @MessageDriven(mappedName = "jms/Queue" problem znika tylko, że nie mam jak odebrać komunikatu.
Czy ktoś z Was miał podobny problem i mógłby dać jakąś wskazówkę ?
Z góry dziękuję.