下面的代码不起作用,我也不知道为什么。我正在使用WebLogic
12c。
但是我转向jms
接收方法,它的工作原理很好。
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.eni.dvtejb.client;
import java.util.logging.Level;
import javax.jms.Connection;
import javax.jms.ExceptionListener;
import javax.jms.JMSException;
import javax.jms.Message;import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.naming.NamingException;
import org.apache.log4j.Logger;
public class MailConfirmationConsommateur
extends JmsJndi
implements ExceptionListener, MessageListener {
private static final Logger mailConfirmationConsommateurLogger = Logger.getLogger(MailConfirmationConsommateur.class);
private MessageConsumer messageVenteEnLigneReception = null;
public static void main(String[] args) {
try {
MailConfirmationConsommateur messageJms = new MailConfirmationConsommateur();
MailConfirmationConsommateur(VENTE_EN_LIGNE_CONNECTION_FACTORY_PATH, VENTE_EN_LIGNE_TOPIC_PATH);
messageJms.lanceConfirmationConsommateur(VENTE_EN_LIGNE_CONNECTION_FACTORY_PATH, VENTE_EN_LIGNE_TOPIC_PATH);
} catch (JMSException | NamingException ex) {
mailConfirmationConsommateurLogger.debug("Err"
+ "eur lors du chargement du consommateur JMS ", ex);
} catch (InterruptedException ex) {
java.util.logging.Logger.getLogger(MailConfirmationConsommateur.class.getName()).log(Level.SEVERE, null, ex);
}
}
public void lanceConfirmationConsommateur(String cheminJndiConnexionFactory, String cheminJndiTopic) throws JMSException, NamingException, InterruptedException {
Connection connectionJms = getConnection(connectionFactoryLookUp(cheminJndiConnexionFactory));
Session venteEnLigneJMSSession = getSession(connectionJms);
Topic topicVenteEnLigne = getJMSTopic(cheminJndiTopic);
// messageVenteEnLigneReception = venteEnLigneJMSSession.createConsumer(topicVenteEnLigne, cheminJndiTopic);//.createConsumer(topicVenteEnLigne)
messageVenteEnLigneReception = venteEnLigneJMSSession.createDurableSubscriber(topicVenteEnLigne, VENTE_EN_LIGNE_TOPIC_PATH);
messageVenteEnLigneReception.setMessageListener(this);
connectionJms.start();
// mailConfirmationConsommateurLogger.debug("message ??? "+ litMessageSynchroneJms((TextMessage) messageVenteEnLigneReception.receive()) );
mailConfirmationConsommateurLogger.debug("Message listener : " + messageVenteEnLigneReception.getMessageListener());
}
public Session getSession(Connection connectionJms) throws JMSException {
return connectionJms.createSession(false, Session.AUTO_ACKNOWLEDGE);
}
private String getMailMessageJms(TextMessage messageVenteEnLigneJms) throws JMSException {
String textMessageVenteEnLigne = "";
if (messageVenteEnLigneJms != null) {
textMessageVenteEnLigne = messageVenteEnLigneJms.getText();
} else {
mailConfirmationConsommateurLogger.debug("messageVenteEnLigne valant null ");
}
return textMessageVenteEnLigne;
}
public String litMessageSynchroneJms(TextMessage textMessageJMS) throws JMSException {
String messageLu = "";
if (textMessageJMS != null) {
messageLu = textMessageJMS.getText();
}
return messageLu;
}
@Override
public void onMessage(Message message) {
if (message instanceof TextMessage) {
try {
mailConfirmationConsommateurLogger.debug("Message JMS Recu " + getMailMessageJms((TextMessage) message));
} catch (JMSException ex) {
mailConfirmationConsommateurLogger.debug("Erreur lors de la lecture du message JMS", ex);
}
}
}
@Override
public void onException(JMSException exception) {
mailConfirmationConsommateurLogger.debug("Erreur lors de la lecture du message JMS", exception);
}
}