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--tp17644495s2354p17646660.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.