JMS客户端发送小程序,服务端是WEBLOGIC配置的

来源:互联网 发布:怎样利用淘宝赚钱 编辑:程序博客网 时间:2024/05/16 13:07
package com.crc.swing;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Hashtable;

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.crc.jmsSend.JmeSend;

public class JmsClient {
    private static int PANEL_WIDTH = 450;
    private static int JFrame_WIDTH = 900;
    private static int JFrame_HIGHT = 500;

    private static JTextArea jmsMessageTextArea;
    private static JTextField jmsInitServerurlText;
    private static JTextField jmsInitJndiText;
    private static JTextField jmsFactoryText;
    private static JTextField jmsQueueText;
    private static JButton resetButton;
    private static JButton submitButton;

    /**
     * { 创建并显示GUI。出于线程安全的考虑, 这个方法在事件调用线程中调用。
     */
    public static void main(String[] args) {
        // 创建 JFrame 实例
        JFrame jFrame = new JFrame("JMS客户端测试界面");
        // Setting the width and height of frame
        jFrame.setSize(JFrame_WIDTH, JFrame_HIGHT);
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container contentPane = jFrame.getContentPane();
        // contentPane.setLayout(new BorderLayout());
        // frame.setLayout(new BoxLayout(frame, 0));
        /*
         * 创建面板,这个类似于 HTML 的 div 标签 我们可以创建多个面板并在 JFrame 中指定位置 面板中我们可以添加文本字段,按钮及其他组件。
         */
        // 消息面板
        JPanel panelMessage = new JPanel();
        // 属性面板
        JPanel panelAttribute = new JPanel();

        panelMessage.setSize(PANEL_WIDTH, JFrame_HIGHT);
        panelAttribute.setSize(PANEL_WIDTH, JFrame_HIGHT);
        // 添加面板
        contentPane.add(panelAttribute);
        contentPane.add(panelMessage);
        /*
         * 调用用户定义的方法并添加组件到面板
         */
        placeAttribute(panelAttribute);
        placeMessage(panelMessage);

        // 设置界面可见
        jFrame.setVisible(true);
    }

    /**
     *
     * placeAttribute:属性面板内容设置 <br/>
     *
     * @param panel
     * @since JDK 1.7
     */
    private static void placeAttribute(JPanel panel) {

        /*
         * 布局部分我们这边不多做介绍 这边设置布局为 null
         */
        // panel.setBackground(Color);
        panel.setLayout(null);

        // 创建 JMS_INIT_SERVERURL
        JLabel jmsInitServerurlLabel = new JLabel("JMS_INIT_SERVERURL:");
        jmsInitServerurlLabel.setBounds(10, 20, 150, 25);
        panel.add(jmsInitServerurlLabel);

        jmsInitServerurlText = new JTextField(250);
        jmsInitServerurlText.setBounds(150, 20, 250, 25);
        panel.add(jmsInitServerurlText);

        // 创建 JMS_INIT_JNDI
        JLabel jmsInitJndiLabel = new JLabel("JMS_INIT_JNDI:");
        jmsInitJndiLabel.setBounds(10, 55, 150, 25);
        panel.add(jmsInitJndiLabel);

        jmsInitJndiText = new JTextField(250);
        jmsInitJndiText.setBounds(150, 55, 250, 25);
        panel.add(jmsInitJndiText);

        // 创建 JMS_FACTORY
        JLabel jmsFactoryLabel = new JLabel("JMS_FACTORY:");
        jmsFactoryLabel.setBounds(10, 90, 150, 25);
        panel.add(jmsFactoryLabel);

        jmsFactoryText = new JTextField(250);
        jmsFactoryText.setBounds(150, 90, 250, 25);
        panel.add(jmsFactoryText);

        // 创建 BANK_JMS_QUEUE
        JLabel jmsQueueLabel = new JLabel("JMS_QUEUE:");
        jmsQueueLabel.setBounds(10, 125, 150, 25);
        panel.add(jmsQueueLabel);

        jmsQueueText = new JTextField(50);
        jmsQueueText.setBounds(150, 125, 250, 25);
        panel.add(jmsQueueText);


        // 全部重置
        resetButton = new JButton("全部重置");
        resetButton.setBounds(10, 160, 80, 25);
        panel.add(resetButton);

        // 连接并发送
        submitButton = new JButton("连接并发送");
        submitButton.setBounds(150, 160, 80, 25);
        panel.add(submitButton);

        // 连接并发送事件
        submitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 进行逻辑处理即可
                System.out.println("触发连接并发送");
                connAndSend();
            }
        });
        // 全部重置
        resetButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // 进行逻辑处理即可
                System.out.println("resetButton");
                reset();
            }
        });
    }

    /**
     *
     * connAndSend:连接并发送 <br/>
     *
     * @since JDK 1.7
     */
    private static void connAndSend() {
        System.out.println("您发送的报文是:" + jmsMessageTextArea.getText());
        QueueSession session = null;
        QueueSender queueSender = null;
        QueueConnection conn = null;
        TextMessage textMessage = null;
        try {
            Hashtable env = new Hashtable();
            env.put(InitialContext.INITIAL_CONTEXT_FACTORY, jmsInitJndiText.getText());
            env.put(InitialContext.PROVIDER_URL, jmsInitServerurlText.getText());
            InitialContext iniCtx = new InitialContext(env);

            // 创建连接工厂
            Object factory = iniCtx.lookup(jmsFactoryText.getText());
            QueueConnectionFactory qcf = (QueueConnectionFactory) factory;

            // 创建连接
            conn = qcf.createQueueConnection();
            if (null != conn) {
                conn.start();
            } else {
                System.out.println("QueueConnection实例化失败");
                return;
            }

            // 获取队列
            Queue queue = (Queue) iniCtx.lookup(jmsQueueText.getText());

            // 创建会话
            session = conn.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
            if (null != session) {
                textMessage = session.createTextMessage();
                textMessage.clearBody();
                textMessage.setText(jmsMessageTextArea.getText());
            } else {
                System.out.println("QueueSession实例化失败");
                return;
            }

            // 发送消息
            queueSender = session.createSender(queue);
            if (null != queueSender) {
                queueSender.send(textMessage);
            } else {
                System.out.println("QueueSender实例化失败");
                return;
            }



        } catch (Exception e) {
            System.out.println("往JMS队列插入消息失败:" + jmsMessageTextArea.getText());
            e.printStackTrace();
        } finally {
            try {
                if (queueSender != null) {
                    queueSender.close();
                }
                if (session != null) {
                    session.close();
                }
                if (conn != null) {
                    conn.close();
                }
            } catch (JMSException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     *
     * reset:全部重置 <br/>
     *
     * @since JDK 1.7
     */
    private static void reset() {
        System.out.println("1111");
    }

    /**
     *
     * placeMessage:消息面板内容设置 <br/>
     *
     * @param panel
     * @since JDK 1.7
     */
    private static void placeMessage(JPanel panel) {


        panel.setLayout(null);

        // 创建 JMS_MESSAGE
        JLabel jmsMessageLabel = new JLabel("JMS_MESSAGE:");
        jmsMessageLabel.setBounds(10 + PANEL_WIDTH, 20, 400, 25);
        panel.add(jmsMessageLabel);

        jmsMessageTextArea = new JTextArea(250, 300);
        jmsMessageTextArea.setBounds(10 + PANEL_WIDTH, 55, 400, 300);
        panel.add(jmsMessageTextArea);
    }

}


阅读全文
0 0
原创粉丝点击