【Java开源代码栏目提醒】:本文主要为网学会员提供TransQueueReceiverTest.java,希望对需要TransQueueReceiverTest.java网友有所帮助,学习一下!
import javax.jms.*;
import javax.naming.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TransQueueReceiverTest extends JPanel
implements ActionListener,MessageListener
{
JTextField queueField;
JList messageList;
DefaultListModel messages;
QueueSession session;
QueueReceiver receiver;
QueueConnection conn;
QueueConnectionFactory factory;
Context context;
public static final String queue_action="queue";
public static final String commit_action="commit";
public static final String rollback_action="rollback";
public static final String recover_action="recover";
public TransQueueReceiverTest(String user)
{
JLabel label;
JButton button;
JPanel tmp;
Font f = new Font("Serif",Font.PLAIN,16);
setFont(f);
try
{
context = new InitialContext();
factory
= (QueueConnectionFactory) context.lookup("QueueConnectionFactory");
conn
= factory.createQueueConnection(user,null);
session
= conn.createQueueSession(true,Session.AUTO_ACKNOWLEDGE);
if(session == null) throw new Exception();
}
catch(Exception exp)
{
exp.printStackTrace();
System.exit(0);
}
setLayout(new BorderLayout(6,6));
messages = new DefaultListModel();
messageList = new JList();
messageList.setModel(messages);
add(new JScrollPane(messageList),"Center");
queueField = new JTextField(20);
queueField.addActionListener(this);
queueField.setActionCommand(queue_action);
label = new JLabel("Queue:");
button = new JButton("Change");
button.addActionListener(this);
button.setActionCommand(queue_action);
tmp = new JPanel();
tmp.setLayout(new FlowLayout(FlowLayout.LEFT,6,0));
label.setFont(f);
queueField.setFont(f);
button.setFont(f);
tmp.add(label);
tmp.add(queueField);
tmp.add(button);
add(tmp,"North");
tmp = new JPanel();
tmp.setLayout(new FlowLayout(FlowLayout.CENTER,6,6));
button = new JButton("Commit");
button.addActionListener(this);
button.setActionCommand(commit_action);
tmp.add(button);
button = new JButton("Rollback");
button.addActionListener(this);
button.setActionCommand(rollback_action);
tmp.add(button);
button = new JButton("Recover");
button.addActionListener(this);
button.setActionCommand(recover_action);
tmp.add(button);
add(tmp,"South");
}
public void setQueue(String name)
{
Queue queue=null;
try
{
conn.stop();
messages.removeAllElements();
if(receiver != null) receiver.close();
queue
= (Queue) context.lookup(name);
receiver = session.createReceiver(queue);
conn.start();
if((queue == null)
||(receiver==null)) throw new Exception();
receiver.setMessageListener(this);
}
catch(Exception exp)
{
exp.printStackTrace();
System.exit(0);
}
}
public void onMessage(Message msg)
{
try
{
messages.addElement(((TextMessage)msg).getText());
}
catch(Exception exp)
{
JOptionPane.showMessageDialog(this
,exp.toString()
,"Receive Error"
,JOptionPane.ERROR_MESSAGE);
}
}
public void actionPerformed(ActionEvent evt)
{
String cmd = evt.getActionCommand();
if(queue_action.equals(cmd))
{
setQueue(queueField.getText());
}
else if(commit_action.equals(cmd))
{
try
{
session.commit();
}
catch(Exception exp)
{
System.out.println(exp);
}
}
else if(rollback_action.equals(cmd))
{
try
{
session.rollback();
}
catch(Exception exp)
{
System.out.println(exp);
}
}
else if(recover_action.equals(cmd))
{
try
{
session.recover();
}
catch(Exception exp)
{
System.out.println(exp);
}
}
}
public void close()
{
try
{
receiver.close();
session.close();
conn.close();
}
catch(Exception exp)
{
exp.printStackTrace();
}
}
public static void main(String s[])
{
JFrame frame;
TransQueueReceiverTest panel;
String user="TransQueueReceiverTest";
if(s.length>0) user = s[0];
frame = new JFrame(user);
panel = new TransQueueReceiverTest(user);
//So we can catch errors in a log file
System.setErr(System.out);
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
frame.setForeground(Color.black);
frame.setBackground(Color.lightGray);
frame.getContentPane().add(panel,"Center");
frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowCloser(panel));
}
}
class WindowCloser extends WindowAdapter
{
TransQueueReceiverTest test;
public WindowCloser(TransQueueReceiverTes