JMS通用测试程序
前段时间,由于工作需要,写了一个JMS的测试程序(B/S),对于指定的Destination,可以完成发生和接受消息,并手动设置message属性.
现备份如下,同时也供大家参考:
包括两个servlet:一个发送,一个接收。
两个设置页面:分别设置发送条件和接收条件。
发送消息的设置页面:sendMessage.jsp
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<script type="text/javascript">
<!--
var textNumber = 1;
function addTextBox(form, afterElement) {
// Increment the textbox number
textNumber++;
// Create the label
var label = document.createElement("label");
// Create the textbox
var textField = document.createElement("input");
textField.setAttribute("type","text");
textField.setAttribute("name","txt"+textNumber);
textField.setAttribute("id","txt"+textNumber);
// Add the label's text
label.appendChild(document.createTextNode("Text Box #"+textNumber+": "));
// Put the textbox inside
label.appendChild(textField);
// Add it all to the form
form.insertBefore(label,afterElement);
return false;
}
function removeTextBox(form) {
if (textNumber > 1) { // If there's more than one text box
// Remove the last one added
form.removeChild(document.getElementById("txt"+textNumber).parentNode);
textNumber--;
}
}
function insertRow(isTable){
index = isTable.rows.length;
nextRow = isTable.insertRow(index);
isText = nextRow.insertCell(0);
txtArea = nextRow.insertCell(1);
isText2 = nextRow.insertCell(2);
txtArea2 = nextRow.insertCell(3);
index++;
index = index.toString();
txtStrName = "property name "+index;
txtStrValue = "property value "+index;
txtNameStrPname = "pname";
txtNameStrPvalue = "pvalue";
isText.innerHTML = txtStrName;
txtArea.innerHTML = "<input type=text name="+txtNameStrPname+">";
isText2.innerHTML = txtStrValue;
txtArea2.innerHTML = "<input type=text name="+txtNameStrPvalue+">";
}
//-->
</script>
<form name="form1" method="post" action="../MessageSenderServlet">
<table width="93%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="18%">content</td>
<td width="82%"><textarea name="message" cols="100" rows="11">
</textarea></td>
</tr>
<tr>
<td>queueConnectionFactory</td>
<td width="756"><input name=qcf type="text"
value="jms/Ntelagent/RequestQCF" size="38">jms/Ntelagent/RequestQCF
</td>
</tr>
<tr>
<td>destination</td>
<td width="756"><input name=queue type="text" value="jms/Ntelagent/RequestQ"
size="38">jms/Ntelagent/RequestQ</td>
</tr>
<tr>
<td>set property<input type=button value="Insert row"
οnclick="insertRow(dynTable)"></td>
<td width="756">
<table id='dynTable' width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname1" value="clientid"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue1" value="my pvalue1">
</td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname2" value="requestid"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue2"
value="my pvalue8888"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname3" value="trx"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue3" value="lookup"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname4" value="region"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue4" value="$region"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname5" value="state"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue5" value="$state"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname6" value="center"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue6" value="$center"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><input name="send" type="submit" value="Send"></td>
</tr>
</table>
</form>
</body>
</html>
发送message的servlet: MessageSenderServlet.jsp
package co.servlet;
import java.io.IOException;
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.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @version 1.0
* @author
*/
public class MessageSenderServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletOutputStream out = resp.getOutputStream();
try {
String qcfJndiName = req.getParameter("qcf"); //queueConnectionFactory
String qJndiName = req.getParameter("queue"); //queueJndiName
if (qcfJndiName == null || qcfJndiName.trim().length() == 0)
{
qcfJndiName = "jms/MyMDBConnectionFactory";
}
if (qJndiName == null || qJndiName.trim().length() == 0)
{
qJndiName = "jms/MyMDBQueue";
}
InitialContext context = new InitialContext();
QueueConnectionFactory qConnectionFactory = (QueueConnectionFactory) context.lookup(qcfJndiName);
Queue queue = (Queue) context.lookup(qJndiName);
QueueConnection qConnection =
qConnectionFactory.createQueueConnection();
QueueSession qSession =
qConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = qSession.createSender(queue);
TextMessage message = qSession.createTextMessage();
String msg = req.getParameter("message");
String msgid = "msg" + System.currentTimeMillis();
String messageToSend = msg;
String[] names = req.getParameterValues("pname");
String[] values = req.getParameterValues("pvalue");
if (messageToSend == null) {
messageToSend = "Default Message";
}
message.setText(messageToSend);
for (int i = 0; i < names.length; i++)
{
message.setStringProperty(names[i],values[i]);
}
if (msgid != null && !msgid.equals(""))
{
message.setStringProperty("BIS_MSG_ID", msgid);
message.setJMSMessageID(msgid);
message.setJMSCorrelationID(msgid);
}
out.println("<P>Sending message</P>");
out.println("<P><textarea cols=100 rows=30>" + messageToSend + "</textarea></P>");
sender.send(message);
out.println("<hr>");
out.println("<br>"+ "selector: BIS_MSG_ID='" + msgid + "'<br>");
out.println("<hr>");
sender.close();
qSession.close();
qConnection.close();
} catch (NamingException ne) {
out.println(ne.toString());
ne.printStackTrace(System.out);
} catch (JMSException e) {
out.println(e.toString());
e.printStackTrace(System.out);
Exception linked = e.getLinkedException();
linked.printStackTrace(System.out);
}
catch (Exception e)
{
out.println(e.toString());
}
}
}
接收消息用的设置页面: setReceiver.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="../MessageReceiverServlet">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>receive message</td>
</tr>
<tr>
<td>queueConnectionFactory:<input name="qcf" type="text" value="jms/Ntelagent/RequestQCF" size="20" >jms/Ntelagent/ResponseQCF</td>
</tr>
</tr>
<tr>
<td>distination:<input name="distination" type="text" value="jms/Ntelagent/RequestQ" size="20" >jms/Ntelagent/ResponseQ</td>
</tr>
<tr>
<td>selector:<input name="selector" type="text" value="trx='lookup'" size="20" ></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Submit">
</td>
</tr>
</table>
</form>
</body>
</html>
用于接收消息的servlet: MessageReceiverServlet.jsp
package co.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @version 1.0
* @author
*/
public class MessageReceiverServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req,resp);
}
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
ServletOutputStream out = resp.getOutputStream();
InitialContext context = new InitialContext();
String qcfJndiName = req.getParameter("qcf");
String distinationjndi = req.getParameter("distination");
String selector = req.getParameter("selector");
String tempInfo = "qcfJndiName = " + qcfJndiName + ", distination = " + distinationjndi + ", selector = " + selector;
out.println(tempInfo + "<br>");
QueueConnectionFactory qConnectionFactory =
(QueueConnectionFactory) context.lookup(qcfJndiName);
Queue queue = (Queue) context.lookup(distinationjndi);
QueueConnection qConnection =
qConnectionFactory.createQueueConnection();
QueueSession qSession =
qConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueReceiver receiver;
if (selector != null && selector.trim().length() > 0)
{
receiver = qSession.createReceiver(queue,selector);
}
else
{
receiver = qSession.createReceiver(queue);
}
qConnection.start();
TextMessage message = (TextMessage) receiver.receive(1);
if (message != null)
{
System.out.println("receive message: " +message.getText());
out.println("<br>" + "message is <br><textarea cols=100 rows=30>" + message.getText());
out.println("</textarea><hr>");
Enumeration names = message.getPropertyNames();
while (names.hasMoreElements())
{
String name = (String)names.nextElement();
String value = (String)message.getStringProperty(name);
out.println("<br>protertyName:" + name + "value:" + value);
}
}
else
{
out.println("<br> There is no message in the queue");
}
qSession.close();
qConnection.close();
} catch (NamingException ne) {
System.out.println("--in NameingException!");
ne.printStackTrace(System.out);
} catch (JMSException e) {
System.out.println("--in JMSException!");
e.printStackTrace(System.out);
Exception linked = e.getLinkedException();
linked.printStackTrace(System.out);
}
catch (Exception e)
{
System.out.println("--in Exception!");
e.printStackTrace();
}
}
}
要运新该测试程序,需要在J2ee容器中配置好
1: JMS Connection factories:
2: JMS Distination
以上程序在WSAD5.1调试通过.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1247771
前段时间,由于工作需要,写了一个JMS的测试程序(B/S),对于指定的Destination,可以完成发生和接受消息,并手动设置message属性.
现备份如下,同时也供大家参考:
包括两个servlet:一个发送,一个接收。
两个设置页面:分别设置发送条件和接收条件。
发送消息的设置页面:sendMessage.jsp
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<script type="text/javascript">
<!--
var textNumber = 1;
function addTextBox(form, afterElement) {
// Increment the textbox number
textNumber++;
// Create the label
var label = document.createElement("label");
// Create the textbox
var textField = document.createElement("input");
textField.setAttribute("type","text");
textField.setAttribute("name","txt"+textNumber);
textField.setAttribute("id","txt"+textNumber);
// Add the label's text
label.appendChild(document.createTextNode("Text Box #"+textNumber+": "));
// Put the textbox inside
label.appendChild(textField);
// Add it all to the form
form.insertBefore(label,afterElement);
return false;
}
function removeTextBox(form) {
if (textNumber > 1) { // If there's more than one text box
// Remove the last one added
form.removeChild(document.getElementById("txt"+textNumber).parentNode);
textNumber--;
}
}
function insertRow(isTable){
index = isTable.rows.length;
nextRow = isTable.insertRow(index);
isText = nextRow.insertCell(0);
txtArea = nextRow.insertCell(1);
isText2 = nextRow.insertCell(2);
txtArea2 = nextRow.insertCell(3);
index++;
index = index.toString();
txtStrName = "property name "+index;
txtStrValue = "property value "+index;
txtNameStrPname = "pname";
txtNameStrPvalue = "pvalue";
isText.innerHTML = txtStrName;
txtArea.innerHTML = "<input type=text name="+txtNameStrPname+">";
isText2.innerHTML = txtStrValue;
txtArea2.innerHTML = "<input type=text name="+txtNameStrPvalue+">";
}
//-->
</script>
<form name="form1" method="post" action="../MessageSenderServlet">
<table width="93%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td width="18%">content</td>
<td width="82%"><textarea name="message" cols="100" rows="11">
</textarea></td>
</tr>
<tr>
<td>queueConnectionFactory</td>
<td width="756"><input name=qcf type="text"
value="jms/Ntelagent/RequestQCF" size="38">jms/Ntelagent/RequestQCF
</td>
</tr>
<tr>
<td>destination</td>
<td width="756"><input name=queue type="text" value="jms/Ntelagent/RequestQ"
size="38">jms/Ntelagent/RequestQ</td>
</tr>
<tr>
<td>set property<input type=button value="Insert row"
οnclick="insertRow(dynTable)"></td>
<td width="756">
<table id='dynTable' width="100%" border="0" cellspacing="0"
cellpadding="0">
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname1" value="clientid"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue1" value="my pvalue1">
</td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname2" value="requestid"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue2"
value="my pvalue8888"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname3" value="trx"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue3" value="lookup"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname4" value="region"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue4" value="$region"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname5" value="state"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue5" value="$state"></td>
</tr>
<tr>
<td>property name</td>
<td><input name="pname" type="text" id="pname6" value="center"></td>
<td>property value</td>
<td><input name="pvalue" type="text" id="pvalue6" value="$center"></td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan="2"><input name="send" type="submit" value="Send"></td>
</tr>
</table>
</form>
</body>
</html>
发送message的servlet: MessageSenderServlet.jsp
package co.servlet;
import java.io.IOException;
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.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @version 1.0
* @author
*/
public class MessageSenderServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
ServletOutputStream out = resp.getOutputStream();
try {
String qcfJndiName = req.getParameter("qcf"); //queueConnectionFactory
String qJndiName = req.getParameter("queue"); //queueJndiName
if (qcfJndiName == null || qcfJndiName.trim().length() == 0)
{
qcfJndiName = "jms/MyMDBConnectionFactory";
}
if (qJndiName == null || qJndiName.trim().length() == 0)
{
qJndiName = "jms/MyMDBQueue";
}
InitialContext context = new InitialContext();
QueueConnectionFactory qConnectionFactory = (QueueConnectionFactory) context.lookup(qcfJndiName);
Queue queue = (Queue) context.lookup(qJndiName);
QueueConnection qConnection =
qConnectionFactory.createQueueConnection();
QueueSession qSession =
qConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueSender sender = qSession.createSender(queue);
TextMessage message = qSession.createTextMessage();
String msg = req.getParameter("message");
String msgid = "msg" + System.currentTimeMillis();
String messageToSend = msg;
String[] names = req.getParameterValues("pname");
String[] values = req.getParameterValues("pvalue");
if (messageToSend == null) {
messageToSend = "Default Message";
}
message.setText(messageToSend);
for (int i = 0; i < names.length; i++)
{
message.setStringProperty(names[i],values[i]);
}
if (msgid != null && !msgid.equals(""))
{
message.setStringProperty("BIS_MSG_ID", msgid);
message.setJMSMessageID(msgid);
message.setJMSCorrelationID(msgid);
}
out.println("<P>Sending message</P>");
out.println("<P><textarea cols=100 rows=30>" + messageToSend + "</textarea></P>");
sender.send(message);
out.println("<hr>");
out.println("<br>"+ "selector: BIS_MSG_ID='" + msgid + "'<br>");
out.println("<hr>");
sender.close();
qSession.close();
qConnection.close();
} catch (NamingException ne) {
out.println(ne.toString());
ne.printStackTrace(System.out);
} catch (JMSException e) {
out.println(e.toString());
e.printStackTrace(System.out);
Exception linked = e.getLinkedException();
linked.printStackTrace(System.out);
}
catch (Exception e)
{
out.println(e.toString());
}
}
}
接收消息用的设置页面: setReceiver.jsp
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form name="form1" method="post" action="../MessageReceiverServlet">
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>receive message</td>
</tr>
<tr>
<td>queueConnectionFactory:<input name="qcf" type="text" value="jms/Ntelagent/RequestQCF" size="20" >jms/Ntelagent/ResponseQCF</td>
</tr>
</tr>
<tr>
<td>distination:<input name="distination" type="text" value="jms/Ntelagent/RequestQ" size="20" >jms/Ntelagent/ResponseQ</td>
</tr>
<tr>
<td>selector:<input name="selector" type="text" value="trx='lookup'" size="20" ></td>
</tr>
<tr>
<td><input type="submit" name="Submit" value="Submit">
</td>
</tr>
</table>
</form>
</body>
</html>
用于接收消息的servlet: MessageReceiverServlet.jsp
package co.servlet;
import java.io.IOException;
import java.util.Enumeration;
import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @version 1.0
* @author
*/
public class MessageReceiverServlet extends HttpServlet {
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req,resp);
}
/**
* @see javax.servlet.http.HttpServlet#void (javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
ServletOutputStream out = resp.getOutputStream();
InitialContext context = new InitialContext();
String qcfJndiName = req.getParameter("qcf");
String distinationjndi = req.getParameter("distination");
String selector = req.getParameter("selector");
String tempInfo = "qcfJndiName = " + qcfJndiName + ", distination = " + distinationjndi + ", selector = " + selector;
out.println(tempInfo + "<br>");
QueueConnectionFactory qConnectionFactory =
(QueueConnectionFactory) context.lookup(qcfJndiName);
Queue queue = (Queue) context.lookup(distinationjndi);
QueueConnection qConnection =
qConnectionFactory.createQueueConnection();
QueueSession qSession =
qConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
QueueReceiver receiver;
if (selector != null && selector.trim().length() > 0)
{
receiver = qSession.createReceiver(queue,selector);
}
else
{
receiver = qSession.createReceiver(queue);
}
qConnection.start();
TextMessage message = (TextMessage) receiver.receive(1);
if (message != null)
{
System.out.println("receive message: " +message.getText());
out.println("<br>" + "message is <br><textarea cols=100 rows=30>" + message.getText());
out.println("</textarea><hr>");
Enumeration names = message.getPropertyNames();
while (names.hasMoreElements())
{
String name = (String)names.nextElement();
String value = (String)message.getStringProperty(name);
out.println("<br>protertyName:" + name + "value:" + value);
}
}
else
{
out.println("<br> There is no message in the queue");
}
qSession.close();
qConnection.close();
} catch (NamingException ne) {
System.out.println("--in NameingException!");
ne.printStackTrace(System.out);
} catch (JMSException e) {
System.out.println("--in JMSException!");
e.printStackTrace(System.out);
Exception linked = e.getLinkedException();
linked.printStackTrace(System.out);
}
catch (Exception e)
{
System.out.println("--in Exception!");
e.printStackTrace();
}
}
}
要运新该测试程序,需要在J2ee容器中配置好
1: JMS Connection factories:
2: JMS Distination
以上程序在WSAD5.1调试通过.
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1247771