You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@activemq.apache.org by joe <fi...@yahoo.de> on 2010/03/16 09:00:12 UTC

BlobMessage,ftp and exception

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:pass@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)

Re: BlobMessage,ftp and exception

Posted by joe <fi...@yahoo.de>.
Hi,

> add a trailing slash to the ftp upload url, think that is what the strategy
> is looking for to determine a working directory in the ftp server.
>
> jndiParameters.put(Context.PROVIDER_URL,
> "tcp://localhost:61616?jms.blobTransferPolicy.uploadUrl=ftp://user:pass@myhost
> /");

You are right, thx!



Re: BlobMessage,ftp and exception

Posted by Gary Tully <ga...@gmail.com>.
add a trailing slash to the ftp upload url, think that is what the strategy
is looking for to determine a working directory in the ftp server.

jndiParameters.put(Context.PROVIDER_URL,
"tcp://localhost:61616?jms.blobTransferPolicy.uploadUrl=ftp://user:pass@myhost
/");


On 16 March 2010 08:00, joe <fi...@yahoo.de> wrote:

> 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:pass@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)
>



-- 
http://blog.garytully.com

Open Source Integration
http://fusesource.com