jms做為J2EE的高級部分一直蒙著(zhù)一層神秘的面紗,作為JMS的定制者SUN只規定了JMS規范,象很多其他SUN產(chǎn)品一樣被多家廠(chǎng)商提供了具體的實(shí)現。但是作為tomcat和RESIN(今年初宣布全部支持J2EE規范)。這些面向低端但卻被廣泛應用的服務(wù)器本身并不對JMS提供支持。慶幸的是openjms和activeMQ兩家開(kāi)源軟件提供了插件式的支持。
在應用了一些開(kāi)發(fā)框架如spring的項目里如果要使用到JMS,雖然SPRING提供了部分對JMS的支持但經(jīng)過(guò)我一段時(shí)間的應用發(fā)現,OO的封裝在某些地方反而成為開(kāi)發(fā)過(guò)程中的障礙。在實(shí)現諸如監聽(tīng)之類(lèi)的代碼段里使人非常的懊惱,即使用callback(回調)有些東西仍然不能夠很好的被取到。
下面就一些TOMCAT上面JMS的支持既實(shí)現做一下整理。
1.很自然的你需要下載JMS實(shí)現,如:opnerJMS或者activeMQ .下載地址www.jmsopen.com 或www.activeMQ.com
2.服務(wù)器下載以后的具體配置在以上兩個(gè)網(wǎng)站上都有很詳細的說(shuō)明,就不再列舉了。
3。和WEB服務(wù)器的整合
首先要配置應用的web.xml這個(gè)文件配置如下:
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服務(wù)器的具體配置:
<?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="oracle-ds" class="[oracle驅動(dòng)]" 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>