Hi,

I am trying to send a file via BlobMessage, but it doesn't work.
Whats wrong with the code?

- ActiveMQ 5.3.0
- commons-net-ftp-2.0


package de.test.jmsproducer;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Properties;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

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

public class Sender
{
  private ConnectionFactory connectionFactory;
  private Connection connection;
  private Session session;
  private Destination destination;
  private MessageProducer producer;

  public Sender() throws JMSException
  {
    try
    {
      Properties jndiParameters = new Properties();
      jndiParameters.put(Context.INITIAL_CONTEXT_FACTORY,
"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
      jndiParameters.put(Context.PROVIDER_URL,
"tcp://localhost:61616?jms.blobTransferPolicy.uploadUrl=ftp://user:p...@myhost";);
      jndiParameters.put("queue.fileQ", "example.fileQ");
      InitialContext ic = new InitialContext(jndiParameters);

      connectionFactory = (ConnectionFactory)
ic.lookup("ConnectionFactory");

      connection = (Connection) connectionFactory.createConnection();
      connection.start();
      destination = (Destination) ic.lookup("fileQ");
      session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
      producer = session.createProducer(destination);
    }
    catch (NamingException e)
    {
      e.printStackTrace();
    }

  }

  public void sendFile() throws JMSException
  {
    BlobMessage blobMessage;
    try
    {
      blobMessage = ((ActiveMQSession) session).createBlobMessage(new
FileInputStream("c:\\test\\a.file"));
      producer.send(blobMessage);
    }
    catch (FileNotFoundException e)
    {
      e.printStackTrace();
    }
  }

  public static void main(String[] args) throws JMSException
  {
    Sender mmp = new Sender();
    mmp.sendFile();
  }

}

i got:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: -1
        at java.lang.String.substring(Unknown Source)
        at
org.apache.activemq.blob.FTPBlobUploadStrategy.uploadStream(FTPBlobUploadStrategy.java:71)
        at org.apache.activemq.blob.BlobUploader.upload(BlobUploader.java:53)
        at
org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:173)
        at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1674)
        at
org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:231)
        at
org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241)
        at de.novastor.jmsproducer.Sender.sendFileMessage(Sender.java:70)
        at de.novastor.jmsproducer.Sender.main(Sender.java:81)

Reply via email to