伺服器
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伺服器已經綁到了上面。