]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Integrate ActiveMQ on the server side
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 10 Jan 2009 18:41:34 +0000 (18:41 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 10 Jan 2009 18:41:34 +0000 (18:41 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2072 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml [new file with mode: 0644]
org.argeo.slc.webapp/src/main/webapp/WEB-INF/applicationContext.xml
org.argeo.slc.webapp/src/main/webapp/WEB-INF/classes/log4j.properties
org.argeo.slc.webapp/src/main/webapp/WEB-INF/web.xml
org.argeo.slc.webapp/src/main/webapp/index.jsp
org.argeo.slc.webapp/src/main/webapp/test-amq/send.html [new file with mode: 0644]
org.argeo.slc.webapp/src/main/webapp/test-amq/send.js [new file with mode: 0644]
org.argeo.slc/pom.xml
runtime/org.argeo.slc.server/pom.xml

diff --git a/org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml b/org.argeo.slc.webapp/src/main/webapp/WEB-INF/activemq.xml
new file mode 100644 (file)
index 0000000..7174474
--- /dev/null
@@ -0,0 +1,159 @@
+<beans
+  xmlns="http://www.springframework.org/schema/beans"
+  xmlns:amq="http://activemq.apache.org/schema/core"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+  http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.2.0.xsd">
+
+    <!-- Allows us to use system properties as variables in this configuration file
+
+    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+         <property name="locations">
+            <value>file:${activemq.base}/conf/credentials.properties</value>
+         </property>      
+    </bean>
+-->
+    <broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data">
+
+        <!-- Destination specific policies using destination names or wildcards
+-->
+        <destinationPolicy>
+            <policyMap>
+                <policyEntries>
+                    <policyEntry queue=">" memoryLimit="5mb"/>
+                    <policyEntry topic=">" memoryLimit="5mb">
+                      <!-- you can add other policies too such as these
+                        <dispatchPolicy>
+                            <strictOrderDispatchPolicy/>
+                        </dispatchPolicy>
+                        <subscriptionRecoveryPolicy>
+                            <lastImageSubscriptionRecoveryPolicy/>
+                        </subscriptionRecoveryPolicy>
+                      -->
+                    </policyEntry>
+                </policyEntries>
+            </policyMap>
+        </destinationPolicy>
+
+        <!-- Use the following to configure how ActiveMQ is exposed in JMX -->
+        <managementContext>
+            <managementContext createConnector="false"/>
+        </managementContext>
+
+        <!-- The store and forward broker networks ActiveMQ will listen to -->
+        <networkConnectors>
+            <!-- by default just auto discover the other brokers -->
+            <networkConnector name="default-nc" uri="multicast://default"/>
+            <!-- Example of a static configuration:
+            <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)"/>
+            -->
+        </networkConnectors>
+
+        <persistenceAdapter>
+            <amqPersistenceAdapter syncOnWrite="false" directory="${activemq.base}/data" maxFileLength="20 mb"/>
+        </persistenceAdapter>
+
+        <!-- Use the following if you wish to configure the journal with JDBC
+-->
+        <!--
+        <persistenceAdapter>
+            <journaledJDBC dataDirectory="${activemq.base}/data" dataSource="#postgres-ds"/>
+        </persistenceAdapter>
+        -->
+
+        <!-- Or if you want to use pure JDBC without a journal -->
+        <!--
+        <persistenceAdapter>
+            <jdbcPersistenceAdapter dataSource="#postgres-ds"/>
+        </persistenceAdapter>
+        -->
+
+<!-- 
+        <sslContext>
+            <sslContext keyStore="file:${activemq.base}/conf/broker.ks" keyStorePassword="password" trustStore="file:${activemq.base}/conf/broker.ts" trustStorePassword="password"/>
+        </sslContext>
+    -->     
+        <!--  The maximum about of space the broker will use before slowing down producers
+-->
+        <systemUsage>
+            <systemUsage>
+                <memoryUsage>
+                    <memoryUsage limit="20 mb"/>
+                </memoryUsage>
+                <storeUsage>
+                    <storeUsage limit="1 gb" name="foo"/>
+                </storeUsage>
+                <tempUsage>
+                    <tempUsage limit="100 mb"/>
+                </tempUsage>
+            </systemUsage>
+        </systemUsage>
+
+
+        <!-- The transport connectors ActiveMQ will listen to -->
+        <transportConnectors>
+            <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
+<!--             <transportConnector name="ssl" uri="ssl://localhost:61617"/>
+            <transportConnector name="stomp" uri="stomp://localhost:61613"/>
+            <transportConnector name="xmpp" uri="xmpp://localhost:61222"/> -->
+        </transportConnectors>
+
+    </broker>
+
+
+    <!-- Uncomment to create a command agent to respond to message based admin commands on the ActiveMQ.Agent topic
+-->
+    <!--
+    <commandAgent xmlns="http://activemq.apache.org/schema/core" brokerUrl="vm://localhost" username="${activemq.username}" password="${activemq.password}"/>
+    -->
+
+    <!--  This xbean configuration file supports all the standard spring xml configuration options
+-->
+
+    <!-- Postgres DataSource Sample Setup -->
+    <!--
+    <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
+      <property name="serverName" value="localhost"/>
+      <property name="databaseName" value="activemq"/>
+      <property name="portNumber" value="0"/>
+      <property name="user" value="activemq"/>
+      <property name="password" value="activemq"/>
+      <property name="dataSourceName" value="postgres"/>
+      <property name="initialConnections" value="1"/>
+      <property name="maxConnections" value="10"/>
+    </bean>
+    -->
+
+    <!-- MySql DataSource Sample Setup -->
+    <!--
+    <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
+      <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+      <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
+      <property name="username" value="activemq"/>
+      <property name="password" value="activemq"/>
+      <property name="maxActive" value="200"/>
+      <property name="poolPreparedStatements" value="true"/>
+    </bean>
+    -->
+
+    <!-- Oracle DataSource Sample Setup -->
+    <!--
+    <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
+      <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
+      <property name="url" value="jdbc:oracle:thin:@localhost:1521:AMQDB"/>
+      <property name="username" value="scott"/>
+      <property name="password" value="tiger"/>
+      <property name="maxActive" value="200"/>
+      <property name="poolPreparedStatements" value="true"/>
+    </bean>
+    -->
+
+    <!-- Embedded Derby DataSource Sample Setup -->
+    <!--
+    <bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
+      <property name="databaseName" value="derbydb"/>
+      <property name="createDatabase" value="create"/>
+    </bean>
+    -->
+
+</beans>
\ No newline at end of file
index 080a075fc0d9d4cdfa1a54723328f6809a9572ed..131fb21b0e397fbf604da7cb4145dbf7adb3328f 100644 (file)
@@ -1,15 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:aop="http://www.springframework.org/schema/aop"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:tx="http://www.springframework.org/schema/tx"
        xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
-       <import
-               resource="classpath:/org/argeo/slc/server/spring/servletContext.xml" />
+       <import resource="classpath:/org/argeo/slc/server/spring/servletContext.xml" />
 
-       <!-- <import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />-->
+       <!--
+               <import resource="classpath:/org/argeo/slc/server/spring/jmx.xml" />
+       -->
+
+       <bean id="activemqBroker" class="org.apache.activemq.xbean.BrokerFactoryBean">
+               <property name="config" value="WEB-INF/activemq.xml" />
+               <property name="start" value="true" />
+       </bean>
 
 </beans>
\ No newline at end of file
index 93d424ffd8b9ceca68fc4beb5007f505a33ee312..e80a390526c66cb69b2f71318e116176b4ef1f0a 100644 (file)
@@ -19,6 +19,9 @@ log4j.logger.org.hibernate.transaction=WARN
 #log4j.logger.org.hibernate.tool.hbm2ddl=TRACE\r
 #log4j.logger.org.hibernate.type=TRACE\r
 \r
+# Active MQ\r
+log4j.logger.org.apache.activemq.web.MessageListenerServlet=DEBUG\r
+\r
 # EhCache\r
 log4j.logger.net.sf.ehcache=WARN\r
 \r
index 55a5734493649f255a6a2f55f6eff63ab27644a4..d7105cf49436491dda23c0d5c47c5f3f4df65523 100644 (file)
                <param-value>5000</param-value>
        </context-param>
 
+
+       <!-- Active MQ -->
+           <!-- context config -->
+    <context-param>
+        <param-name>org.apache.activemq.brokerURL</param-name>
+        <param-value>vm://localhost</param-value>
+    </context-param>
+
+    <context-param>
+        <param-name>org.apache.activemq.embeddedBroker</param-name>
+        <param-value>false</param-value>
+    </context-param>
+
+    <!-- servlet mappings -->
+    
+    <!-- the subscription REST servlet -->
+    <servlet>
+        <servlet-name>AjaxServlet</servlet-name>
+        <servlet-class>org.apache.activemq.web.AjaxServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+    </servlet>
+
+    <servlet>
+        <servlet-name>MessageServlet</servlet-name>
+        <servlet-class>org.apache.activemq.web.MessageServlet</servlet-class>
+        <load-on-startup>1</load-on-startup>
+        <!--
+        Uncomment this parameter if you plan to use multiple consumers over REST
+        <init-param>
+                <param-name>destinationOptions</param-name>
+                <param-value>consumer.prefetchSize=1</param-value>
+        </init-param> 
+        -->
+
+    </servlet>
+
+    <!-- the queue browse servlet -->
+    <servlet>
+        <servlet-name>QueueBrowseServlet</servlet-name>
+        <servlet-class>org.apache.activemq.web.QueueBrowseServlet</servlet-class>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>AjaxServlet</servlet-name>
+        <url-pattern>/amq/*</url-pattern>
+    </servlet-mapping>
+    
+    <servlet-mapping>
+        <servlet-name>MessageServlet</servlet-name>
+        <url-pattern>/amqMessage/*</url-pattern>
+    </servlet-mapping>
+    
+    <servlet-mapping>
+        <servlet-name>QueueBrowseServlet</servlet-name>
+        <url-pattern>/amqQueueBrowse/*</url-pattern>
+    </servlet-mapping>
+
+    <filter>
+      <filter-name>session</filter-name>
+      <filter-class>org.apache.activemq.web.SessionFilter</filter-class>
+    </filter>
+    
+    <filter-mapping>
+      <filter-name>session</filter-name>
+      <url-pattern>/amq/*</url-pattern>
+    </filter-mapping>
+    <filter-mapping>
+      <filter-name>session</filter-name>
+      <url-pattern>/amqMessage/*</url-pattern>
+    </filter-mapping>
+    <filter-mapping>
+      <filter-name>session</filter-name>
+      <url-pattern>/amqQueueBrowse/*</url-pattern>
+    </filter-mapping>
+       
 </web-app>
index 9cdd98efc4a774699478aa6db808a4e06421af5d..1c97269090b6f493f72c02b88f2ea5df3b5dabe0 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>\r
 <%@ page language="java" contentType="text/html"%>\r
 <%\r
-response.sendRedirect("build/index.html");\r
+response.sendRedirect("argeo-ria/index.html");\r
 %>\r
diff --git a/org.argeo.slc.webapp/src/main/webapp/test-amq/send.html b/org.argeo.slc.webapp/src/main/webapp/test-amq/send.html
new file mode 100644 (file)
index 0000000..4449fcb
--- /dev/null
@@ -0,0 +1,7 @@
+<html>
+<head>
+<script type="text/javascript" src="../amq/amq.js"></script>
+<script type="text/javascript">amq.uri='../amq';</script>
+<script type="text/javascript" src="send.js"></script>
+</head>
+</html>
\ No newline at end of file
diff --git a/org.argeo.slc.webapp/src/main/webapp/test-amq/send.js b/org.argeo.slc.webapp/src/main/webapp/test-amq/send.js
new file mode 100644 (file)
index 0000000..f40d3c4
--- /dev/null
@@ -0,0 +1,3 @@
+amq.sendMessage('TEST.QUEUE','<test>My Test</test>');
+alert('Message sent!');
+document.write('Message sent');
\ No newline at end of file
index 974e5523888abc43928fa683412573f1ddc4daf6..0ef2bd723b1fde2cc28bd5d64e451ce239894e64 100644 (file)
@@ -159,37 +159,27 @@ limitations under the License.
                                                        <version>1.3.0</version>
                                                </dependency>
 
-                                               <!-- Required by ActiveMQ admin
-                                               <dependency>
+                                               <!--
+                                                       Required by ActiveMQ admin <dependency>
                                                        <groupId>org.springframework</groupId>
                                                        <artifactId>org.springframework.web</artifactId>
-                                                       <version>${version.spring}</version>
-                                               </dependency>
-                                               <dependency>
+                                                       <version>${version.spring}</version> </dependency> <dependency>
                                                        <groupId>org.springframework</groupId>
                                                        <artifactId>org.springframework.web.servlet</artifactId>
-                                                       <version>${version.spring}</version>
-                                               </dependency>
-                                               <dependency>
+                                                       <version>${version.spring}</version> </dependency> <dependency>
                                                        <groupId>org.apache.activemq</groupId>
                                                        <artifactId>com.springsource.org.apache.activemq.web</artifactId>
-                                                       <version>${version.activemq}</version>
-                                               </dependency>
-                                               <dependency>
+                                                       <version>${version.activemq}</version> </dependency> <dependency>
                                                        <groupId>javax.jms</groupId>
                                                        <artifactId>com.springsource.javax.jms</artifactId>
-                                                       <version>1.1.0</version>
-                                               </dependency>
-                                               <dependency>
+                                                       <version>1.1.0</version> </dependency> <dependency>
                                                        <groupId>org.apache.geronimo.specs</groupId>
                                                        <artifactId>com.springsource.javax.management.j2ee</artifactId>
-                                                       <version>1.0.1</version>
-                                               </dependency>
-                                               <dependency>
+                                                       <version>1.0.1</version> </dependency> <dependency>
                                                        <groupId>com.opensymphony.sitemesh</groupId>
                                                        <artifactId>com.springsource.com.opensymphony.sitemesh</artifactId>
-                                                       <version>2.3.0</version>
-                                               </dependency> -->
+                                                       <version>2.3.0</version> </dependency>
+                                               -->
                                        </dependencies>
                                </plugin>
                                <plugin>
@@ -619,12 +609,21 @@ limitations under the License.
                                <artifactId>com.springsource.org.apache.activemq</artifactId>
                                <version>${version.activemq}</version>
                        </dependency>
+                       <dependency>
+                               <groupId>org.apache.activemq</groupId>
+                               <artifactId>com.springsource.org.apache.activemq.web</artifactId>
+                               <version>${version.activemq}</version>
+                       </dependency>
                        <dependency>
                                <groupId>org.apache.xbean</groupId>
                                <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
                                <version>3.3.0</version>
                        </dependency>
-
+                       <dependency>
+                               <groupId>org.apache.geronimo.specs</groupId>
+                               <artifactId>com.springsource.javax.management.j2ee</artifactId>
+                               <version>1.0.1</version>
+                       </dependency>
                </dependencies>
        </dependencyManagement>
        <repositories>
index 78eb3375e7c514719e0e15b4b042f1c7d74b9e99..223116e07802826efe19d6b33f0cf6a1ff554f7e 100644 (file)
@@ -1,4 +1,5 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.argeo.slc</groupId>
                                                ../../org.argeo.slc.webapp/src/main/config/jetty/jetty-test-local.xml
                                        </jettyConfig>
                                        <webDefaultXml>../../org.argeo.slc.webapp/src/main/config/jetty/webdefault.xml</webDefaultXml>
+                                       <systemProperties>
+                                               <systemProperty>
+                                                       <name>activemq.base</name>
+                                                       <value>${user.home}/share/apache-activemq-5.2.0</value>
+                                               </systemProperty>
+                                       </systemProperties>
                                </configuration>
                        </plugin>
                </plugins>
                        <artifactId>com.springsource.javax.wsdl</artifactId>
                </dependency>
 
+               <!-- JMS -->
+               <dependency>
+                       <groupId>javax.jms</groupId>
+                       <artifactId>com.springsource.javax.jms</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.activemq</groupId>
+                       <artifactId>com.springsource.org.apache.activemq</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.xbean</groupId>
+                       <artifactId>com.springsource.org.apache.xbean.spring</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.activemq</groupId>
+                       <artifactId>com.springsource.org.apache.activemq.web</artifactId>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.geronimo.specs</groupId>
+                       <artifactId>com.springsource.javax.management.j2ee</artifactId>
+               </dependency>
+
        </dependencies>
 </project>