2 Stimmen

Schließen der MQ-Verbindung

Guten Tag, ich habe ein Projekt geschrieben, um Park Queue Info von der IBM MQ zu erhalten, es hat jedoch einen Fehler beim Versuch, die Verbindung zu schließen, produziert. Es ist in java geschrieben. Unter Anwendung in der Ereignisanzeige auf dem MQ-Rechner werden zwei Fehler angezeigt. Sie lauten:

"Das Programm wurde abnormal beendet. Das Kanalprogramm 'system.def.surconn' wurde abnormal beendet. Schauen Sie sich frühere Fehlermeldungen für das Kanalprogramm 'system.def.surconn' in den Fehlerdateien an, um die Ursache des Fehlers zu ermitteln.

In der anderen Nachricht heißt es: "Fehler beim Empfang vom Host rnanaj (10.10.12.34) Es ist ein Fehler beim Empfang von Daten von rnanaj (10.10.12.34) über tcp/ip aufgetreten. Dies kann auf einen Kommunikationsfehler zurückzuführen sein. Der Rückgabewert des tcp/ip recv()-Aufrufs war 10054 (X'2746'). Notieren Sie diese Werte."

Dies muss etwas sein, wie ich versuche, zu verbinden oder die Verbindung zu schließen, unten habe ich meinen Code zu verbinden und zu schließen, irgendwelche Ideen?

Verbinden:

_logger.info("Start");

        File outputFile = new File(System.getProperty("PROJECT_HOME"), "run/" + this.getClass().getSimpleName() + "." + System.getProperty("qmgr") + ".txt");
        FileUtils.mkdirs(outputFile.getParentFile());

        Connection jmsConn = null;
        Session jmsSession = null;
        QueueBrowser queueBrowser = null;
        BufferedWriter commandsBw = null;
        try {
            // get queue connection
            MQConnectionFactory MQConn = new MQConnectionFactory();
            MQConn.setHostName(System.getProperty("host"));
            MQConn.setPort(Integer.valueOf(System.getProperty("port")));
            MQConn.setQueueManager(System.getProperty("qmgr"));
            MQConn.setChannel("SYSTEM.DEF.SVRCONN");
            MQConn.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);

            jmsConn = (Connection) MQConn.createConnection();
            jmsSession = jmsConn.createSession(false, Session.AUTO_ACKNOWLEDGE);
            Queue jmsQueue = jmsSession.createQueue("PARK");

            // browse thru messages
            queueBrowser = jmsSession.createBrowser(jmsQueue);
            Enumeration msgEnum = queueBrowser.getEnumeration();

            commandsBw = new BufferedWriter(new FileWriter(outputFile));
            //
            String line = "DateTime\tMsgID\tOrigMsgID\tCorrelationID\tComputerName\tSubsystem\tDispatcherName\tProcessor\tJobID\tErrorMsg";
            commandsBw.write(line);
            commandsBw.newLine();

            while (msgEnum.hasMoreElements()) {
                Message message = (Message) msgEnum.nextElement();
                line = dateFormatter.format(new Date(message.getJMSTimestamp()))
                        + "\t" + message.getJMSMessageID()
                        + "\t" + message.getStringProperty("pkd_orig_jms_msg_id")
                        + "\t" + message.getJMSCorrelationID()
                        + "\t" + message.getStringProperty("pkd_computer_name")
                        + "\t" + message.getStringProperty("pkd_subsystem")
                        + "\t" + message.getStringProperty("pkd_dispatcher_name")
                        + "\t" + message.getStringProperty("pkd_processor")
                        + "\t" + message.getStringProperty("pkd_job_id")
                        + "\t" + message.getStringProperty("pkd_sysex_msg");
                _logger.info(line);
                commandsBw.write(line);
                commandsBw.newLine();
            }

        }

Schließen:

finally {
            IO.close(commandsBw);
            if (queueBrowser != null) { try { queueBrowser.close();} catch (Exception ignore) {}}
            if (jmsSession != null) { try { jmsSession.close();} catch (Exception ignore) {}}
            if (jmsConn != null) { try { jmsConn.stop();} catch (Exception ignore) {}}
        }

1voto

T.Rob Punkte 31064

Gemäß die Javadoc für das Verbindungsobjekt die Funktion der stop() Methode ist...

Vorübergehend hält die Verbindung die Zustellung von eingehenden Nachrichten.

stop() trennt also nicht wirklich die Verbindung. Sie wollen die close() método.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X