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);
}
}
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);
}
}
相关文章推荐
- windows 服务器 服务端程序发送RST给客户端
- Java写的TCP聊天程序,服务端收不到客户端发送的数据
- WCF----双工模式服务端回调客户端方法时无响应,“发送到 http://***/User.svc 的请求操作在配置的超时内未收到回复”
- 使用客户端软件向服务端php程序发送post数据,php接受三种方法
- linux下一个简单的TCP通信程序——客户端向服务端发送任意字符串
- Android客户端发送Post/Get请求到Asp.Net服务端一般处理程序Asp.Net进行参数解析
- 用socaket编写客户端与服务端程序相互发送消息
- Silverlight程序中实现客户端截图发送到服务端
- 一个简单的socket服务端和客户端程序:客户端发送数据给服务端,服务端接收到数据后再给客户端发送数据
- 配置oracle instance client。不需要安装oracle客户端实现程序以及plsql连接oracle服务端
- TCP与UDP的异同(服务端接收数据,客户端发送数据)
- 【Android笔记-9】如果服务端是用的IIS,则需要配置mime类型,安卓客户端才能正常下载apk安装包。
- Windows下WebStorm配置使用SVN详细过程(客户端和服务端完整版)
- 通过配置PIX防火墙实现FTP客户端对服务端的访问
- centos 6.5环境利用iscsi搭建SAN网络存储服务及服务端target和客户端initiator配置详解
- android 客户端与服务端的通信 发送get和post请求并获取数据
- 使用Thrift RPC编写程序(服务端和客户端)
- windows下配置VisualSVN Server服务器(服务端和客户端)
- netTcpBinding 客户端和服务端配置文件
- 使用SOCKET API写的客户端与服务端测试程序(C语言)