import javax.jms.*; import javax.naming.*; import java.util.Properties; import java.io.*; public class JMSSendMessage { public static void main(String[] args) throws Exception { if (args.length != 6) { System.out.println ("Usage: TOPIC|QUEUE ProviderURL UserName Password DestName FileName"); return; } String destType = args[0]; String provider = args[1]; String username = args[2]; String password = args[3]; String destName = args[4]; String filePath = args[5]; if (!(destType.equals("QUEUE") || destType.equals("TOPIC"))) throw new Exception ("Must specify destination as TOPIC or QUEUE"); Properties props = System.getProperties(); props.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); props.put(Context.PROVIDER_URL, provider); props.put(Context.SECURITY_PRINCIPAL, username); props.put(Context.SECURITY_CREDENTIALS, password); InitialContext ctx = new InitialContext(props); Session session = null; MessageProducer producer = null; Connection connection = null; if (destType.equals("TOPIC")) { TopicConnectionFactory tconfactory = (TopicConnectionFactory)ctx.lookup("javax.jms.TopicConnectionFactory"); TopicConnection tcon = tconfactory.createTopicConnection(); TopicSession tsession = tcon.createTopicSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = (Topic)ctx.lookup(destName); TopicPublisher tpublisher = tsession.createPublisher(topic); session = (Session)tsession; producer = (MessageProducer)tpublisher; connection = (Connection)tcon; } else if (destType.equals("QUEUE")) { QueueConnectionFactory qconfactory = (QueueConnectionFactory)ctx.lookup("javax.jms.QueueConnectionFactory"); QueueConnection qcon = qconfactory.createQueueConnection(); QueueSession qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = (Queue)ctx.lookup(destName); QueueSender qsender = qsession.createSender(queue); session = (Session)qsession; producer = (MessageProducer)qsender; connection = (Connection)qcon; } TextMessage msg = session.createTextMessage(); connection.start(); byte[] buffer = new byte[(int)new File(filePath).length()]; BufferedInputStream bis = new BufferedInputStream(new FileInputStream(filePath)); bis.read(buffer); bis.close(); String textOutput = new String(buffer); System.out.println("Sending the following to: " + destName + " (" + destType + ") on provider: " + provider); System.out.println(textOutput); msg.setText(textOutput); if (producer instanceof TopicPublisher) ((TopicPublisher)producer).publish(msg); else if (producer instanceof QueueSender) ((QueueSender)producer).send(msg); producer.close(); session.close(); connection.close(); System.out.println("File sent successfully"); } }
You need two WLS files to compile it: wlclient.jar, wljmsclient.jar which you can 'borrow' from the WLS install directory.
No comments:
Post a Comment