Index: src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java =================================================================== --- src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java (revision 836276) +++ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/PublisherSampler.java (working copy) @@ -127,6 +127,7 @@ @Override public SampleResult sample() { SampleResult result = new SampleResult(); + result.setDataType(SampleResult.TEXT); result.setSampleLabel(getName()); if (this.PUB == null) { this.initClient(); @@ -146,7 +147,8 @@ result.setResponseCode("message published successfully"); result.setResponseMessage(loop + " messages published"); result.setSuccessful(true); - result.setResponseData(content.getBytes()); + result.setResponseData("Not Applicable".getBytes()); + result.setSamplerData(content); result.setSampleCount(loop); } return result; Index: src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java =================================================================== --- src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java (revision 836276) +++ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/SubscriberSampler.java (working copy) @@ -147,6 +147,7 @@ */ private SampleResult sampleWithListener() { SampleResult result = new SampleResult(); + result.setDataType(SampleResult.TEXT); result.setSampleLabel(getName()); initListenerClient(); @@ -188,6 +189,7 @@ */ private SampleResult sampleWithReceive() { SampleResult result = new SampleResult(); + result.setDataType(SampleResult.TEXT); result.setSampleLabel(getName()); if (this.SUBSCRIBER == null) { this.initReceiveClient(); @@ -230,6 +232,8 @@ TextMessage msg = (TextMessage) message; String content = msg.getText(); if (content != null) { + this.BUFFER.append(getMessageHeaders(message)); + this.BUFFER.append("JMS Message Text:\n\n"); this.BUFFER.append(content); count(1); } Index: src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java =================================================================== --- src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java (revision 836276) +++ src/protocol/jms/org/apache/jmeter/protocol/jms/sampler/BaseJMSSampler.java (working copy) @@ -17,6 +17,13 @@ package org.apache.jmeter.protocol.jms.sampler; +import java.util.Date; + +import javax.jms.DeliveryMode; +import javax.jms.Destination; +import javax.jms.JMSException; +import javax.jms.Message; + import org.apache.jmeter.testelement.TestListener; import org.apache.jmeter.samplers.AbstractSampler; import org.apache.jmeter.samplers.Entry; @@ -280,4 +287,62 @@ public boolean getUseJNDIPropertiesAsBoolean() { return getPropertyAsBoolean(USE_PROPERTIES_FILE); } + + + /** + * Returns a String with the JMS Message Header values. + * + * @param message JMS Message + * @return String with message header values. + */ + public static String getMessageHeaders(Message message) { + final StringBuffer response = new StringBuffer(256); + try { + response.append("JMS Message Header Attributes:"); + response.append("\n Correlation ID: "); + response.append(message.getJMSCorrelationID()); + + response.append("\n Delivery Mode: "); + if (message.getJMSDeliveryMode() == DeliveryMode.PERSISTENT) { + response.append("PERSISTANT"); + } else { + response.append("NON-PERSISTANT"); + } + + final Destination destination = message.getJMSDestination(); + + response.append("\n Destination: "); + response.append((destination == null ? null : destination + .toString())); + + response.append("\n Expiration: "); + response.append(new Date(message.getJMSExpiration())); + + response.append("\n Message ID: "); + response.append(message.getJMSMessageID()); + + response.append("\n Priority: "); + response.append(message.getJMSPriority()); + + response.append("\n Redelivered: "); + response.append(message.getJMSRedelivered()); + + final Destination replyTo = message.getJMSReplyTo(); + response.append("\n Reply to: "); + response.append((replyTo == null ? null : replyTo.toString())); + + response.append("\n Timestamp: "); + response.append(new Date(message.getJMSTimestamp())); + + response.append("\n Type: "); + response.append(message.getJMSType()); + + response.append("\n\n"); + + } catch (JMSException e) { + e.printStackTrace(); + } + + return new String(response); + } } Index: src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java =================================================================== --- src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java (revision 836276) +++ src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java (working copy) @@ -29,6 +29,7 @@ import javax.naming.InitialContext; import javax.naming.NamingException; +import org.apache.jmeter.protocol.jms.sampler.BaseJMSSampler; import org.apache.jorphan.logging.LoggingManager; import org.apache.log.Logger; @@ -49,12 +50,14 @@ private static final Logger log = LoggingManager.getLoggerForClass(); - private final TopicConnection CONN; + private TopicConnection CONN = null; - private final TopicSession SESSION; + private TopicSession SESSION = null; - private final TopicSubscriber SUBSCRIBER; + private Topic TOPIC = null; + private TopicSubscriber SUBSCRIBER = null; + //@GuardedBy("this") private int counter; @@ -73,17 +76,25 @@ public ReceiveSubscriber(boolean useProps, String jndi, String url, String connfactory, String topic, boolean useAuth, String user, String pwd) { Context ctx = initJNDI(useProps, jndi, url, useAuth, user, pwd); - TopicConnection _conn = null; - Topic _topic = null; - TopicSession _session = null; - TopicSubscriber _subscriber = null; if (ctx != null) { try { ConnectionFactory.getTopicConnectionFactory(ctx,connfactory); - _conn = ConnectionFactory.getTopicConnection(); - _topic = InitialContextFactory.lookupTopic(ctx, topic); - _session = _conn.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE); - _subscriber = _session.createSubscriber(_topic); + CONN = ConnectionFactory.getTopicConnection(); + if(CONN == null) { + log.error("CONN is NULL!!"); + } + TOPIC = InitialContextFactory.lookupTopic(ctx, topic); + if(TOPIC == null) { + log.error("TOPIC is NULL!!"); + } + SESSION = this.CONN.createTopicSession(false, TopicSession.AUTO_ACKNOWLEDGE); + if(SESSION == null) { + log.error("SESSION is NULL!!"); + } + SUBSCRIBER = this.SESSION.createSubscriber(this.TOPIC); + if(SUBSCRIBER == null) { + log.error("SUBSCRIBER is NULL!!"); + } log.info("created the topic connection successfully"); } catch (JMSException e) { log.error("Connection error: " + e.getMessage()); @@ -91,9 +102,6 @@ } else { log.error("Could not initialize JNDI Initial Context Factory"); } - this.CONN = _conn; - this.SESSION = _session; - this.SUBSCRIBER = _subscriber; } /** @@ -235,6 +243,9 @@ String text = msg.getText(); if (text.trim().length() > 0) { synchronized (this) { + this.buffer.append(BaseJMSSampler + .getMessageHeaders(message)); + this.buffer.append("JMS Message Text:\n\n"); this.buffer.append(text); count(1); }