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>56 <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> |
此時,在啟動你的tomcat的時候會看到jms服務器已經綁到了上面。
國內最大的酷站演示中心!