activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Angers, Sebastien" <Sebastien.Ang...@compuware.com>
Subject RE: Getting IllegalAgrEception while Sending BlobMessage
Date Wed, 11 Jun 2008 21:11:29 GMT
Hi Suresh,

Could you give more details?

Using the following very simple code, it is working for files of 8 kb and also for files of
14 MB.

Regards,

Sébastien

----------------------

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Session;

import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.ActiveMQSession;
import org.apache.activemq.BlobMessage;

import org.apache.activemq.command.ActiveMQQueue;

public class ActiveMQBlobExperiment {
	
	/**
	 * This method will produce a file on the queue and will save it under the $brokerLocation$/webapps/fileserver/.
	 * 
	 * @param file
	 */
	public static void produce(File file){
		
		ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/");
	
				
		try {			
			ActiveMQConnection connection = (ActiveMQConnection) cf.createConnection();
			ActiveMQSession session = (ActiveMQSession) connection.createSession(false,	Session.AUTO_ACKNOWLEDGE);
			Destination destination = new ActiveMQQueue("BlobQueue");
			MessageProducer producer = session.createProducer(destination);
			
			connection.setCopyMessageOnSend(false);

			BlobMessage message = session.createBlobMessage(file);

			producer.send(message);
			
			// Clean up
			producer.close();
			session.close();
			connection.close();
			
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(-1);
		}
	}
	
	public static void consume(){
		try {
			
			ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/");

			ActiveMQConnection conn = (ActiveMQConnection) connectionFactory.createConnection();
			conn.start();

			ActiveMQSession session = (ActiveMQSession) conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
				
			Destination destination = new ActiveMQQueue("BlobQueue");

			MessageConsumer consumer = session.createConsumer(destination);

			// Wait for a message
			Message message = consumer.receive(1000);

			if (message instanceof BlobMessage) {
				BlobMessage blobMessage = (BlobMessage) message;

				InputStream in = blobMessage.getInputStream();
				
				StringBuffer out = new StringBuffer();
				byte[] b = new byte[4096];
				for (int n; (n = in.read(b)) != -1;) {
					out.append(new String(b, 0, n));
				}

				System.out.println("Text Blob Content: " + out.toString());

			} else {
				System.out.println("Received: " + message);
			}

			// Clean up
			consumer.close();
			session.close();
			conn.close();
			
		} catch (Exception e) {			
			e.printStackTrace();
			System.exit(-1);
		}
	}
		
	public static void main(String[] args) throws IOException {
		File smallFile = new File("SmallFile.dat"); // <---- set the path to the small file here!!
		File bigFile = new File("BigFile.dat"); // <---- set the path to the big file here!!
		
		produce(smallFile);
		consume();
		produce(bigFile);
		consume();
	}

	
}


Le contenu de ce courriel s'adresse au destinataire seulement. Il contient de l'information
pouvant être confidentielle. Vous ne devez ni le copier ni l'utiliser ni le divulguer à
qui que ce soit à moins que vous soyez le destinataire ou une personne désignée autorisée.
Si vous le receviez par erreur, veuillez nous aviser immédiatement et le détruire.
 

The contents of this e-mail are intended for the named addressee only. It contains information
that may be confidential. Unless you are the named addressee or an authorized designee, you
may not copy or use it, or disclose it to anyone else. If you received it in error please
notify us immediately and then destroy it.

 

From: susuguna [mailto:suresh.sugunan@gmail.com] 
Sent: Monday, June 09, 2008 8:17 AM
To: users@activemq.apache.org
Subject: Getting IllegalAgrEception while Sending BlobMessage


Hi ,


I am trying a simple producer consumer application for BlobMessage it works 
fine for files of size 8 kb if I send file of size more than 8 MB it throws
an exception in the activemq console

ERROR log                            - EXCEPTION
java.lang.IllegalArgumentException
        at java.nio.Buffer.position(Buffer.java:218)
        at org.mortbay.io.nio.NIOBuffer.poke(NIOBuffer.java:142)
        at org.mortbay.io.AbstractBuffer.put(AbstractBuffer.java:391)
        at org.mortbay.jetty.HttpParser.reset(HttpParser.java:844)
        at org.mortbay.jetty.HttpConnection.destroy(HttpConnection.java:131)
        at
org.mortbay.jetty.AbstractConnector.connectionClosed(AbstractConnector.java:785)
        at
org.mortbay.jetty.nio.SelectChannelConnector.access$100(SelectChannelConnector.java:64)
        at
org.mortbay.jetty.nio.SelectChannelConnector$1.endPointClosed(SelectChannelConnector.java:92)
        at
org.mortbay.io.nio.SelectChannelEndPoint.doUpdateKey(SelectChannelEndPoint.java:382)
        at
org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:337)
        at
org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:166)
        at
org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)
        at
org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:537)



what could be the problem?


-- 
View this message in context: http://www.nabble.com/Getting-IllegalAgrEception-while-Sending-BlobMessage-tp17731668p17731668.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Mime
View raw message