[jboss-jira] [JBoss JIRA] Created: (JBMESSAGING-1802) Persisting MapMessage with large String value is broken

Justin Bertram (JIRA) jira-events at lists.jboss.org
Wed Apr 21 22:14:10 EDT 2010


Persisting MapMessage with large String value is broken
-------------------------------------------------------

                 Key: JBMESSAGING-1802
                 URL: https://jira.jboss.org/jira/browse/JBMESSAGING-1802
             Project: JBoss Messaging
          Issue Type: Bug
    Affects Versions: 1.4.0.SP3.CP10
            Reporter: Justin Bertram
            Assignee: Howard Gao


Sending a javax.jms.MapMessage that has a String value >= 65536 characters fails.  Here's the test-case to reproduce.  I ran this against a fresh install of  JBoss EAP 5:

import java.util.Properties;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.InitialContext;

public class MessageSender {
	public static void main(String[] args) throws Exception {
		Properties props = new Properties();
		props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
		props.put("java.naming.provider.url", "127.0.0.1:1099");
		props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");

		InitialContext initialcontext = new InitialContext(props);
		ConnectionFactory connectionFactory = (ConnectionFactory) initialcontext.lookup("ConnectionFactory");
		Connection connection = connectionFactory.createConnection();
		Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		Destination destination = (Destination) initialcontext.lookup("queue/DLQ");
		MessageProducer producer = session.createProducer(destination);
		producer.setDeliveryMode(DeliveryMode.PERSISTENT);

		StringBuilder x = new StringBuilder();
		for (int i = 0; i < Math.pow(2, 16) - 1; i++) {
			x.append("x");
		}
		
		MapMessage message = session.createMapMessage();
		message.setString("x", x.toString());

		producer.send(message);
		System.out.println("Send succeeded!");
		
		x.append("x"); // string is now 2^16 (65536) characters long
		message = session.createMapMessage();
		message.setString("x", x.toString());

		try {
			producer.send(message);
		} catch (Exception e) {
			System.out.println("Send failed!\n  " + e.getCause().getMessage());
			//e.printStackTrace();
		}
		
		connection.close();
	}
}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list