jms做为J2EE的高级部分一直蒙着一层神秘的面纱,作为JMS的定制者SUN只规定了JMS规范,象很多其他SUN产品一样被多家厂商提供了具体的实现。但是作为tomcat和RESIN(今年初宣布全部支持J2EE规范)。这些面向低端但却被广泛应用的服务器本身并不对JMS提供支持。庆幸的是openjms和activeMQ两家开源软件提供了插件式的支持。
在应用了一些开发框架如spring的项目里如果要使用到JMS,虽然SPRING提供了部分对JMS的支持但经过我一段时间的应用发现,OO的封装在某些地方反而成为开发过程中的障碍。在实现诸如监听之类的代码段里使人非常的懊恼,即使用callback(回调)有些东西仍然不能够很好的被取到。
下面就一些TOMCAT上面JMS的支持既实现做一下整理。
1.很自然的你需要下载JMS实现,如:opnerJMS或者activeMQ .下载地址www.jmsopen.com 或www.activeMQ.com
2.服务器下载以后的具体配置在以上两个网站上都有很详细的说明,就不再列举了。
3。和WEB服务器的整合
首先要配置应用的web.xml这个文件配置如下:
1 < context-param>
2 < param-name>brokerURI< /param-name>
3 < param-value>/WEB-INF/activemq.xml< /param-value>
4 < /context-param>
5
6 < listener>
7 < listener-class>org.activemq.web.SpringBrokerContextListener< /listener-class>
8 < /listener>将这一段代码放到web.xml里。注意到activemq.xml文件,是jms服务器的具体配置:
< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE beans PUBLIC "-//ACTIVEMQ//DTD//EN" "http://activemq.org/dtd/activemq.dtd">
< beans>
< !-- ==================================================================== -->
< !-- ActiveMQ Broker Configuration -->
< !-- ==================================================================== -->
< broker>
< connector>
< tcpServerTransport uri="tcp://localhost:61616" useAsyncSend="true" maxOutstandingMessages="50"/>
< /connector>
< !-- to enable Stomp support uncomment this
< connector>
< serverTransport uri="stomp://localhost:61626"/>
< /connector>
-->
< persistence>
< jdbcPersistence dataSourceRef="oracle-ds"/>
< /persistence>
< /broker>
< !-- ==================================================================== -->
< !-- JDBC DataSource Configurations -->
< !-- ==================================================================== -->
< !-- The Derby Datasource that will be used by the Broker -->
< bean id="derby-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
< property name="driverClassName">
< value>org.apache.derby.jdbc.EmbeddedDriver< /value>
< /property>
< property name="url">
< !-- Use a URL like 'jdbc:hsqldb:hsql://localhost:9001' if you want to connect to a remote hsqldb -->
< value>jdbc:derby:derbydb;create=true< /value>
< /property>
< property name="username">
< value>< /value>
< /property>
< property name="password">
< value>< /value>
< /property>
< property name="poolPreparedStatements">
< value>true< /value>
< /property>
< /bean>
< /beans>