http://www.onjava.com/lpt/a/6490
这片文章介绍了Spring是如何简化异步消息调用的,它通过一个贷款的例子来说Spring是如何减少
开发中的量的。
下面是传统开发需要的代码量
public void sendMessage() { queueName = "queue/CreditRequestSendQueue"; System.out.println("Queue name is " + queueName); /* * Create JNDI Initial Context */ try { Hashtable env = new Hashtable(); env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); env.put("java.naming.provider.url","localhost"); env.put("java.naming.factory.url.pkgs", "org.jnp.interfaces:org.jboss.naming"); jndiContext = new InitialContext(env); } catch (NamingException e) { System.out.println("Could not create JNDI API " + "context: " + e.toString()); } /* * Get queue connection factory and queue objects from JNDI context. */ try { queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup("UIL2ConnectionFactory"); queue = (Queue) jndiContext.lookup(queueName); } catch (NamingException e) { System.out.println("JNDI API lookup failed: " + e.toString()); } /* * Create connection, session, sender objects. * Send the message. * Cleanup JMS connection. */ try { queueConnection = queueConnectionFactory.createQueueConnection(); queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); queueSender = queueSession.createSender(queue); message = queueSession.createTextMessage(); message.setText("This is a sample JMS message."); System.out.println("Sending message: " + message.getText()); queueSender.send(message); } catch (JMSException e) { System.out.println("Exception occurred: " + e.toString()); } finally { if (queueConnection != null) { try { queueConnection.close(); } catch (JMSException e) {} } }}
然后是Spring的代码
public void send() { try { ClassPathXmlApplicationContext appContext = new
ClassPathXmlApplicationContext(new String[] { "spring-jms.xml"}); System.out.println("Classpath loaded"); JMSSender jmsSender = (JMSSender)appContext.getBean("jmsSender"); jmsSender.sendMesage(); System.out.println("Message sent using Spring JMS."); } catch(Exception e) { e.printStackTrace(); }}
表面上看Spring获胜,代码少了很多,但是我们再来看看Spring配置的XML
org.jnp.interfaces.NamingContextFactory localhost org.jnp.interfaces:org.jboss.namingUIL2ConnectionFactoryqueue/CreditRequestSendQueuequeue/CreditReqeustReceiveQueue30000我们开始认清Spring的真面目把。无厘头的配置,XML的梦魇。从一种混乱到另一种还乱。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=607922