Did you change the activemq.xml? I only change the uri to get you're code to work. With an unchanged activemq.xml and the uri tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/ all works fine. I have changed the transport from http to tcp and the ports. The included webserver (jetty) runs on an other port then the broker.
balderman wrote: > > Here is my "Sender" unit test: > > > > > import java.io.File; > > import javax.jms.Connection; > import javax.jms.Queue; > import javax.jms.QueueSender; > import javax.jms.Session; > > import org.apache.activemq.ActiveMQConnectionFactory; > import org.apache.activemq.ActiveMQSession; > import org.apache.activemq.BlobMessage; > import org.apache.activemq.command.ActiveMQQueue; > > public class BlobSender { > > private static final String URI = > "http://zyz.16.233.50:61618?jms.blobTransferPolicy.defaultUploadUrl=http://zyz.16.233.50:61618/fileserver/"; > > /** > * @param args > */ > public static void main(String[] args) throws Exception { > ActiveMQConnectionFactory factory = new > ActiveMQConnectionFactory(URI); > factory.setCopyMessageOnSend(false); > Connection connection = factory.createQueueConnection(); > ActiveMQSession session = > (ActiveMQSession)connection.createSession(false, > Session.AUTO_ACKNOWLEDGE); > Queue queue = new ActiveMQQueue("MyQ"); > QueueSender queueSender = session.createSender(queue); > BlobMessage msg = session.createBlobMessage(new > File("c:\\zz.txt")); > queueSender.send(msg); > System.out.println("msg was sent."); > > } > > } > > Exception is thrown: > > Exception in thread "main" javax.jms.JMSException: PUT was not successful: > 405 HTTP method PUT is not supported by this URL > at > org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62) > at > org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:166) > at > org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1622) > at > org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:227) > at > org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241) > at com.bmc.disco.jms.poc.BlobSender.main(BlobSender.java:30) > Caused by: java.io.IOException: PUT was not successful: 405 HTTP method > PUT is not supported by this URL > at > org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadStream(DefaultBlobUploadStrategy.java:70) > at > org.apache.activemq.blob.DefaultBlobUploadStrategy.uploadFile(DefaultBlobUploadStrategy.java:44) > at > org.apache.activemq.blob.BlobUploader.upload(BlobUploader.java:51) > at > org.apache.activemq.command.ActiveMQBlobMessage.onSend(ActiveMQBlobMessage.java:163) > > > > > > balderman wrote: >> >> Hi >> I do not think the file is uploaded.:-( >> Where should I look for it? >> Here: <ActiveMQ>\webapps\fileserver ? >> Is the original file name is kept? >> >> Thanks >> >> Avishay >> >> >> Marco Buss wrote: >>> >>> Hello, >>> >>> check if the blob is uploaded to the fileserver webapp. If the blob is >>> uploaded try this: >>> >>> <bean id="jmsFactory" >>> class="org.apache.activemq.pool.PooledConnectionFactory" >>> destroy-method="stop"> >>> <property name="connectionFactory"> >>> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >>> <property name="brokerURL"> >>> >>> <value>http://xyz.16.233.50:61618?jms.blobTransferPolicy.uploadUrl=http://xyz.16.233.50:8161/fileserver/</value> >>> </property> >>> <!-- default is true --> >>> <property name="copyMessagesOnSend"> >>> <!-- I am not sure if this works for boolean properties. If not search >>> the spring documentation how to inject booleans --> >>> <value>false</value> >>> </property> >>> </bean> >>> </property> >>> </bean> >>> >>> If this not work. Please provide a unit test for the problem. >>> >>> regards >>> Marco Buss >>> >>> >>> balderman wrote: >>>> >>>> Hi >>>> I am using ActiveMQ 5.1. >>>> I want to to use BlobMessage in order to send large amounts of data. >>>> When the consumer get the message and the below code is executed: >>>> inputStream = blobMessage.getInputStream(); >>>> the inputStream is null. >>>> I have seen few posts regarding this issue but I could not understand >>>> what is the right way to do it. >>>> More info: >>>> 1) The message sender and the message consumer run on my PC. >>>> 2) The message broker run on a different machine. >>>> 3) I am using Spring JMS template. Here is a config snippet of the >>>> Sender: >>>> (I replaced some part of the IP with xyz - but this is the IP of the >>>> message broker) >>>> ... >>>> <bean id="jmsFactory" >>>> class="org.apache.activemq.pool.PooledConnectionFactory" >>>> destroy-method="stop"> >>>> <property name="connectionFactory"> >>>> <bean class="org.apache.activemq.ActiveMQConnectionFactory"> >>>> <property name="brokerURL"> >>>> >>>> <value>http://xyz.16.233.50:61618?jms.blobTransferPolicy.uploadUrl=http://xyz.16.233.50:8161/fileserver/</value> >>>> </property> >>>> </bean> >>>> </property> >>>> </bean> >>>> ... >>>> 4) Here is how I create the BlobMessage: >>>> blobMessage = activeMQSession.createBlobMessage(new File("path to the >>>> local file system here")); >>>> When I call blobMessage.getURL() I get null. >>>> If I create the message with a URL as argument: >>>> blobMessage = activeMQSession.createBlobMessage(new URL("url here")); >>>> the call to getURL() return a valid value. >>>> 5) I know there is an option to use BlobTransferPolicy. Do I have to >>>> use it or the default is good enough? >>>> Please advice. >>>> >>>> Thanks >>>> >>>> Avishay >>>> >>> >>> >> >> > > -- View this message in context: http://www.nabble.com/BlobMessage---How-to-make-it-work--tp17644495s2354p17655237.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.