onmessage无法在weblogic上运行

时间:2018-06-30 19:01:36

标签: java java-ee jms weblogic12c

下面的代码不起作用,我也不知道为什么。我正在使用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);
    }
}

0 个答案:

没有答案