各位大虾:
  小弟最近遇到一个需求是需要通过jms传送文件。所用的服务器是weblogic。但是不知怎么回事接收方落地的文件总是比原始文件小很多。所以这里把代码贴出来希望有高手能够指点一下。
发送代码:
Hashtable localHashtable = new Hashtable();
localHashtable.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
localHashtable.put("java.naming.provider.url","t3://10.1.149.22:7001");
InitialContext localInitialContext = new InitialContext(localHashtable);
QueueConnectionFactory qconFactory=(QueueConnectionFactory) localInitialContext.lookup("cmonocFactory");
QueueConnection qcon = qconFactory.createQueueConnection();
  QueueSession qsession=qcon.createQueueSession(false, 1);
Queue queue = (Queue) localInitialContext.lookup("cmonocQueue");
QueueSender qsender = qsession.createSender(queue);
qcon.start();
InputStream in = new FileInputStream("D:\\out.dat"); 
StreamMessage smsg= qsession.createStreamMessage();
byte[] buffer = new byte[2048];   
            int c = -1;                
            while((c = in.read(buffer)) > 0){   
             
             smsg.writeBytes(buffer);
            }
             qsender.send(smsg);   
           in.close();   
            qcon.close();
接收代码:
Context context=new InitialContext(env);
Queue queue=null;
queue=(Queue) context.lookup(jms_queue);
QueueConnectionFactory factory=null;
factory=(QueueConnectionFactory) context.lookup(jms_factory);
QueueConnection queueconnection = null;
queueconnection = factory.createQueueConnection();
queueconnection.start();
QueueSession queuesession = null;
queuesession = (WLQueueSession)queueconnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
 comsumer = queuesession.createConsumer(queue);
Object xmlmessage = comsumer.receive(1000);
if (xmlmessage!=null&&(xmlmessage  instanceof StreamMessage)){
      OutputStream out = new FileOutputStream("/root/out.dat");  
      StreamMessage smsg = (StreamMessage) xmlmessage;   
       byte[] buffer = new byte[2048];   
       int c=-1;
       while((c=smsg.readBytes(buffer))!=-1){
      
       }
     }