各位大虾:
小弟最近遇到一个需求是需要通过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){
}
}
小弟最近遇到一个需求是需要通过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){
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货