日期:2014-05-18  浏览次数:20826 次

ActiveMQ5.8.0 发送BlobMessage出错
最近刚接触ActiveMQ。从网上找了段传输文件代码但是会出现异常:
Exception in thread "main" javax.jms.JMSException: PUT was not successful: 401 Unauthorized
哪位大神指导下~

package com.xuwei.activemq;

import java.io.File;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.swing.JFileChooser;

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

public class FileSender {   
/**    
* @param args    
* @throws JMSException     
*/   
public static void main(String[] args) throws JMSException {       
// 选择文件       
JFileChooser fileChooser = new JFileChooser();        
fileChooser.setDialogTitle("请选择要传送的文件");       
if (fileChooser.showOpenDialog(null) != JFileChooser.APPROVE_OPTION) 
{         
return;         
}       
File file = fileChooser.getSelectedFile();        
// 获取 ConnectionFactory         
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
            ActiveMQConnection.DEFAULT_PASSWORD,
"tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://localhost:8161/fileserver/");  
     
// 创建 Connection       
Connection connection = connectionFactory.createConnection();        
connection.start();    
// 创建 Session     
ActiveMQSession session = (ActiveMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);      
// 创建 Destination      
Destination destination = session.createQueue("FileTransport");       
// 创建 Producer      
MessageProducer producer = session.createProducer(destination);       
producer.setDeliveryMode(DeliveryMode.PERSISTENT);// 设置为非持久性        
// 设置持久性的话,文件也可以先缓存下来,接收端离线再连接也可以收到文件       
// 构造 BlobMessage,用来传输文件   
BlobMessage blobMessage = session.createBlobMessage(file);      
blobMessage.setStringProperty("FILE.NAME", file.getName());       
blobMessage.setLongProperty("FILE.SIZE", file.length());