您的位置:首页 > 移动开发 > 微信开发

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

2017-12-05 10:40 459 查看
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);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐