http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-roles.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-roles.properties b/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-roles.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-roles.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-users.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-users.properties b/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-users.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/dup-send/src/main/resources/artemis-users.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/dup-send/src/main/resources/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/dup-send/src/main/resources/broker.xml b/examples/broker-features/standard/rest/dup-send/src/main/resources/broker.xml new file mode 100644 index 0000000..8cc0fa6 --- /dev/null +++ b/examples/broker-features/standard/rest/dup-send/src/main/resources/broker.xml @@ -0,0 +1,59 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:activemq" + xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> + + <jms xmlns="urn:activemq:jms"> + <!--the queue used by the example--> + <queue name="orders"/> + </jms> + + <core xmlns="urn:activemq:core"> + + <persistence-enabled>false</persistence-enabled> + <!-- Connectors --> + + <connectors> + <connector name="in-vm">vm://0</connector> + </connectors> + + <acceptors> + <acceptor name="in-vm">vm://0</acceptor> + <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> + </acceptors> + + <!-- Other config --> + + <security-settings> + <!--security for example queue--> + <security-setting match="#"> + <permission type="createDurableQueue" roles="guest"/> + <permission type="deleteDurableQueue" roles="guest"/> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="send" roles="guest"/> + </security-setting> + </security-settings> + + </core> +</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/dup-send/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/dup-send/src/main/webapp/WEB-INF/web.xml b/examples/broker-features/standard/rest/dup-send/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..ffb38b5 --- /dev/null +++ b/examples/broker-features/standard/rest/dup-send/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,55 @@ +<?xml version="1.0"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> + +<web-app> + <context-param> + <param-name>rest.messaging.config.file</param-name> + <param-value>activemq-rest.xml</param-value> + </context-param> + + <filter> + <filter-name>Rest-Messaging</filter-name> + <filter-class> + org.jboss.resteasy.plugins.server.servlet.FilterDispatcher + </filter-class> + </filter> + + <filter-mapping> + <filter-name>Rest-Messaging</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <listener> + <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.ActiveMQBootstrapListener</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.RestMessagingBootstrapListener</listener-class> + </listener> + +</web-app> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/README.txt ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/README.txt b/examples/broker-features/standard/rest/javascript-chat/README.txt new file mode 100644 index 0000000..ae0e57c --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/README.txt @@ -0,0 +1,16 @@ +System Requirements: +You will need JDK 1.6, Maven, and a browser to run this example. This example has been tested with Maven 2.2.1. It may or may not work +with earlier or later versions of Maven. + + +This is an example of producing and consuming messages through a topic. The client is Javascript code within your browser. +The example is a very simple chat application between two browser windows. + +Step 1: +$ mvn jetty:run + +This will bring up ActiveMQ Artemis and the ActiveMQ Artemis REST Interface. + +Step 2: +Bring up two browsers and point them to http://localhost:9095. In the textbox type a message you want to send. Click +the "Click to send message" button and you'll see the message show up in both browser windows. \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/pom.xml b/examples/broker-features/standard/rest/javascript-chat/pom.xml new file mode 100644 index 0000000..ca7306c --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/pom.xml @@ -0,0 +1,184 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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.apache.activemq.examples.rest</groupId> + <artifactId>artemis-rests-pom</artifactId> + <version>1.0.1-SNAPSHOT</version> + </parent> + <artifactId>javascript-chat</artifactId> + <packaging>war</packaging> + <name>Browser Chat App</name> + + <properties> + <activemq.basedir>${project.basedir}/../../../../..</activemq.basedir> + </properties> + + <repositories> + <repository> + <id>jboss</id> + <url>http://repository.jboss.org/nexus/content/groups/public/</url> + </repository> + </repositories> + + <profiles> + <profile> + <id>example</id> + <build> + <finalName>chat</finalName> + <plugins> + <!-- + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.15</version> + <configuration> + <contextPath>/</contextPath> + <scanIntervalSeconds>2</scanIntervalSeconds> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>9095</port> + <maxIdleTime>60000</maxIdleTime> + </connector> + </connectors> + <systemProperties> + <systemProperty> + <name>log4j.configuration</name> + <value> + file:./src/test/resources/log4j.properties + </value> + </systemProperty> + </systemProperties> + </configuration> + </plugin> + --> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + <executions> + <execution> + <id>surefire-it</id> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <skip>false</skip> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.15</version> + <configuration> + <!-- By default the artifactId is taken, override it with something simple --> + <contextPath>/</contextPath> + <scanIntervalSeconds>2</scanIntervalSeconds> + <stopKey>foo</stopKey> + <stopPort>9999</stopPort> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>9095</port> + <maxIdleTime>60000</maxIdleTime> + </connector> + </connectors> + </configuration> + <executions> + <execution> + <id>start-jetty</id> + <phase>pre-integration-test</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <scanIntervalSeconds>0</scanIntervalSeconds> + <daemon>true</daemon> + </configuration> + </execution> + <execution> + <id>stop-jetty</id> + <phase>post-integration-test</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <dependencies> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-core-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jms_2.0_spec</artifactId> + </dependency> + <dependency> + <groupId>org.apache.activemq.rest</groupId> + <artifactId>artemis-rest</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxrs</artifactId> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxb-provider</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.1</version> + <scope>test</scope> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-roles.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-roles.properties b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-roles.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-roles.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-users.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-users.properties b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-users.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/artemis-users.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/main/resources/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/main/resources/broker.xml b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/broker.xml new file mode 100644 index 0000000..e5e1364 --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/main/resources/broker.xml @@ -0,0 +1,58 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:activemq" + xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> + + <jms xmlns="urn:activemq:jms"> + <!--the queue used by the example--> + <topic name="chat"/> + </jms> + + <core xmlns="urn:activemq:core"> + + <persistence-enabled>false</persistence-enabled> + <!-- Connectors --> + + <connectors> + <connector name="in-vm">vm://0</connector> + </connectors> + + <acceptors> + <acceptor name="in-vm">vm://0</acceptor> + </acceptors> + + <!-- Other config --> + + <security-settings> + <!--security for example queue--> + <security-setting match="#"> + <permission type="createDurableQueue" roles="guest"/> + <permission type="deleteDurableQueue" roles="guest"/> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="send" roles="guest"/> + </security-setting> + </security-settings> + + </core> +</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/WEB-INF/web.xml b/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..e82738a --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,51 @@ +<?xml version="1.0"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> + +<web-app> + + <filter> + <filter-name>Rest-Messaging</filter-name> + <filter-class> + org.jboss.resteasy.plugins.server.servlet.FilterDispatcher + </filter-class> + </filter> + + <filter-mapping> + <filter-name>Rest-Messaging</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <listener> + <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.ActiveMQBootstrapListener</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.RestMessagingBootstrapListener</listener-class> + </listener> + +</web-app> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/index.html ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/index.html b/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/index.html new file mode 100644 index 0000000..f74e0ee --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/main/webapp/index.html @@ -0,0 +1,189 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> +<html> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> + <script type="text/javascript"> + <!-- + + function createXHR() + { + var request = false; + try + { + request = new ActiveXObject('Msxml2.XMLHTTP'); + } + catch (err2) + { + try + { + request = new ActiveXObject('Microsoft.XMLHTTP'); + } + catch (err3) + { + try + { + request = new XMLHttpRequest(); + } + catch (err1) + { + request = false; + } + } + } + return request; + } + + var topicSender; + var nextMessage; + var subscriptions; + var count = 0; + var reconnect = true; + + function initializeSenderAndTop(topic) + { + var xhr = createXHR(); + xhr.open("HEAD", "topics/" + topic, true); + xhr.onreadystatechange = function() + { + if (xhr.readyState == 4) + { + if (xhr.status == 200) + { + // getting the links from the rest resource + topicSender = xhr.getResponseHeader("msg-create"); + subscriptions = xhr.getResponseHeader("msg-pull-subscriptions"); + + // just adding the report + document.getElementById("errors").innerHTML = "Subscriptions URL: " + subscriptions; + } + } + } + + // this will send the request from javascript + xhr.send(null); + } + + function postMessage(user, message) + { + var xhr = createXHR(); + xhr.open("POST", topicSender, false); + xhr.setRequestHeader("Content-Type", "text/plain"); + xhr.send(user + ": " + message); + if (xhr.status == 201) + { + topicSender = xhr.getResponseHeader("msg-create-next"); + } + else + { + document.getElementById("errors").innerHTML = "Failed to send message: " + topicSender; + } + } + + function receiveMessage() + { + var xhr = createXHR(); + if (reconnect) + { + document.getElementById("connection").innerHTML = "Trying to reconnect: " + subscriptions + " retries: " + count++; + xhr.open("POST", subscriptions, true); + xhr.onreadystatechange = function() + { + if (xhr.readyState == 4) + { + var status = xhr.status; + if (status == 201) + { + nextMessage = xhr.getResponseHeader("msg-consume-next"); + document.getElementById("connection").innerHTML = "Connected to: " + nextMessage; + count = 1; + reconnect = false; + } + setTimeout("receiveMessage()", 800); + } + } + xhr.send(null); + } + else + { + xhr.open("POST", nextMessage, true); + xhr.setRequestHeader("Accept-Wait", "10") + xhr.onreadystatechange = function() + { + if (xhr.readyState == 4) + { + var status = xhr.status; + if (status == 200) + { + document.getElementById("next").innerHTML = xhr.responseText + "\n" + document.getElementById("next").innerHTML; + nextMessage = xhr.getResponseHeader("msg-consume-next"); + } + else + { + reconnect = true; + } + setTimeout("receiveMessage()", 800); + } + } + xhr.send(null); + } + } + + initializeSenderAndTop('jms.topic.chat'); + + + setTimeout("receiveMessage()", 800); + + + // --> + </script> + <title>Ajax Chat Demo</title></head> + + +<body bgcolor="#FFFFFF"> + +<p><font size="+3">Ajax Chat Demo</font></p> +<hr> +<FORM name="ajax" method="POST" action=""> + + <p> + Username: <input type="text" name="user" value="Billy" size="10"><br/> + <input type="text" name="message"> + <INPUT type="BUTTON" value=" Click to send message " + ONCLICK="postMessage(this.form.user.value, this.form.message.value)"> + </p> + +</FORM> +<div id="connection"></div> +<br> + +<div id="errors"></div> + +<p> + +<h2>Messages:</h2></p> +<pre> +<div id="next"></div> +</pre> + +</body> +</html> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/javascript-chat/src/test/java/org/jboss/resteasy/messaging/test/AutoAckTopicTest.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/javascript-chat/src/test/java/org/jboss/resteasy/messaging/test/AutoAckTopicTest.java b/examples/broker-features/standard/rest/javascript-chat/src/test/java/org/jboss/resteasy/messaging/test/AutoAckTopicTest.java new file mode 100644 index 0000000..e1609bb --- /dev/null +++ b/examples/broker-features/standard/rest/javascript-chat/src/test/java/org/jboss/resteasy/messaging/test/AutoAckTopicTest.java @@ -0,0 +1,88 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jboss.resteasy.messaging.test; + +import org.jboss.resteasy.client.ClientRequest; +import org.jboss.resteasy.client.ClientResponse; +import org.jboss.resteasy.spi.Link; +import org.apache.activemq.artemis.rest.util.LinkStrategy; +import org.junit.Assert; + +public class AutoAckTopicTest { + + public static Link getLinkByTitle(LinkStrategy strategy, ClientResponse response, String title) { + return response.getLinkHeader().getLinkByTitle(title); + } + + //todo fix + //@Test + public void testSuccessFirst() throws Exception { + ClientRequest request = new ClientRequest("http://localhost:9095/topics/jms.topic.chat"); + + ClientResponse response = request.head(); + Assert.assertEquals("*****", 200, response.getStatus()); + Link sender = getLinkByTitle(null, response, "create"); + Link subscriptions = getLinkByTitle(null, response, "subscriptions"); + + /* + ClientResponse res = subscriptions.request().post(); + Assert.assertEquals(201, res.getStatus()); + Link sub1 = res.getLocation(); + Assert.assertNotNull(sub1); + Link consumeNext1 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + Assert.assertNotNull(consumeNext1); + System.out.println("consumeNext1: " + consumeNext1); + + + res = subscriptions.request().post(); + Assert.assertEquals(201, res.getStatus()); + Link sub2 = res.getLocation(); + Assert.assertNotNull(sub2); + Link consumeNext2 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + Assert.assertNotNull(consumeNext1); + + + res = sender.request().body("text/plain", Integer.toString(1)).post(); + Assert.assertEquals(201, res.getStatus()); + res = sender.request().body("text/plain", Integer.toString(2)).post(); + Assert.assertEquals(201, res.getStatus()); + + res = consumeNext1.request().post(String.class); + Assert.assertEquals(200, res.getStatus()); + Assert.assertEquals("1", res.getEntity(String.class)); + consumeNext1 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + + res = consumeNext1.request().post(String.class); + Assert.assertEquals(200, res.getStatus()); + Assert.assertEquals("2", res.getEntity(String.class)); + consumeNext1 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + + res = consumeNext2.request().post(String.class); + Assert.assertEquals(200, res.getStatus()); + Assert.assertEquals("1", res.getEntity(String.class)); + consumeNext2 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + + res = consumeNext2.request().post(String.class); + Assert.assertEquals(200, res.getStatus()); + Assert.assertEquals("2", res.getEntity(String.class)); + consumeNext2 = MessageTestBase.getLinkByTitle(manager.getTopicManager().getLinkStrategy(), res, "consume-next"); + Assert.assertEquals(204, sub1.request().delete().getStatus()); + Assert.assertEquals(204, sub2.request().delete().getStatus()); + */ + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/README.txt ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/README.txt b/examples/broker-features/standard/rest/jms-to-rest/README.txt new file mode 100644 index 0000000..f012d94 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/README.txt @@ -0,0 +1,49 @@ +System Requirements: +You will need JDK 1.6 and Maven to run this example. This example has been tested with Maven 2.2.1. It may or may not work +with earlier or later versions of Maven. + + +This is an example of mixing JMS producers and consumers with REST producers and consumers. The REST clients have been +written in both Java using RESTEasy's client library and within the Python language. You will need Python 2.6.1 or higher +to be able to run the Python clients. + +To run the example you will need 5 shell-script windows (or you'll need to run 4 processes in background) + +Step 1: +$ mvn jetty:run + +This will bring up ActiveMQ Artemis and the ActiveMQ Artemis REST Interface. + +Step 2: +$ mvn exec:java -Dexec.mainClass="RestReceive" + +This will bring up a Java REST client that is continuously pulling the server through a consume-next (see doco for details). + +Step 3: +$ mvn exec:java -Dexec.mainClass="JmsReceive" + +This will bring up a Java JMS consumer that is using the MessageListener interface to consume messages. It will +extract a Order instance from the JMS Message it receives. + +Step 4: + +$ python receiveOrder.py + +This runs a very simple Python program to consume messages + +Step 5: +Use one of these three commands to post messages to the system. One of the receive clients will consume the message. + +$ mvn exec:java -Dexec.mainClass="JmsSend" + +A JMS client will create an Order object and send it to the queue. You'll see one of the 4 clients receive the message. +Notice that the REST clients automatically cause the Order object to be transformed on the server and passed as XML +to the REST client. + +$ mvn exec:java -Dexec.mainClass="RestSend" + +THis is a REST client that uses the Acknowledgement protocol to receive a message from the queue. + +$ python postOrder.py + +This is a Python client that posts one message to the queue RESTfully (of course ;) ) http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/pom.xml b/examples/broker-features/standard/rest/jms-to-rest/pom.xml new file mode 100644 index 0000000..ecc94dc --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/pom.xml @@ -0,0 +1,170 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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.apache.activemq.examples.rest</groupId> + <artifactId>artemis-rests-pom</artifactId> + <version>1.0.1-SNAPSHOT</version> + </parent> + <artifactId>mixed-jms-rest</artifactId> + <packaging>war</packaging> + <name>Mixed JMS and REST Producers/Consumers</name> + + <properties> + <activemq.basedir>${project.basedir}/../../../../..</activemq.basedir> + </properties> + + <repositories> + <repository> + <id>jboss</id> + <url>http://repository.jboss.org/nexus/content/groups/public/</url> + </repository> + </repositories> + + <profiles> + <profile> + <id>example</id> + <build> + <finalName>order-flow</finalName> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + <executions> + <execution> + <id>surefire-it</id> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <skip>false</skip> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.1</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.15</version> + <configuration> + <!-- By default the artifactId is taken, override it with something simple --> + <contextPath>/</contextPath> + <scanIntervalSeconds>2</scanIntervalSeconds> + <stopKey>foo</stopKey> + <stopPort>9999</stopPort> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>9095</port> + <maxIdleTime>60000</maxIdleTime> + </connector> + </connectors> + </configuration> + <executions> + <execution> + <id>start-jetty</id> + <phase>pre-integration-test</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <scanIntervalSeconds>0</scanIntervalSeconds> + <daemon>true</daemon> + </configuration> + </execution> + <execution> + <id>stop-jetty</id> + <phase>post-integration-test</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <dependencies> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-core-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jms_2.0_spec</artifactId> + </dependency> + <dependency> + <groupId>org.apache.activemq.rest</groupId> + <artifactId>artemis-rest</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxrs</artifactId> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxb-provider</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> +</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/postOrder.py ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/postOrder.py b/examples/broker-features/standard/rest/jms-to-rest/postOrder.py new file mode 100644 index 0000000..3580986 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/postOrder.py @@ -0,0 +1,44 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import httplib, urlparse + +conn = httplib.HTTPConnection("localhost:9095") +conn.request("HEAD", "/queues/jms.queue.orders") +res = conn.getresponse() +createLink = res.getheader("msg-create") +print createLink +conn.close() + +createParsed = urlparse.urlparse(createLink) +conn = httplib.HTTPConnection(createParsed.netloc) +headers = {'Content-Type' : 'application/xml'} +xml = """<?xml version="1.0"?> +<order> + <name>Bill</name> + <amount>$199.99</amount> + <item>iPhone4</item> +</order>""" +conn.request("POST", createParsed.path, xml, headers) +res = conn.getresponse() +print res.status, res.reason + + + + + + + http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/receiveOrder.py ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/receiveOrder.py b/examples/broker-features/standard/rest/jms-to-rest/receiveOrder.py new file mode 100644 index 0000000..ce73f5c --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/receiveOrder.py @@ -0,0 +1,68 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import httplib, urlparse + +conn = httplib.HTTPConnection("localhost:9095") +conn.request("HEAD", "/queues/jms.queue.orders") +res = conn.getresponse() +consumersLink = res.getheader("msg-pull-consumers") +consumersParsed = urlparse.urlparse(consumersLink) +conn = httplib.HTTPConnection(consumersParsed.netloc) +conn.request("POST", consumersParsed.path) +res = conn.getresponse() +consumeLink = res.getheader("msg-consume-next") +session = res.getheader("Location") +print consumeLink +conn.close() + +headers = {"Accept-Wait" : "3", "Accept" : "application/xml"} + +try: + print "Waiting..." + while True: + createParsed = urlparse.urlparse(consumeLink) + conn = httplib.HTTPConnection(createParsed.netloc) + conn.request("POST", createParsed.path, None, headers) + res = conn.getresponse() + if res.status == 503: + consumeLink = res.getheader("msg-consume-next") + elif res.status == 200: + print "Success!" + data = res.read() + print data + consumeLink = res.getheader("msg-consume-next") + print "Waiting" + else: + raise Exception('failed') +finally: + if session != None: + print "deleting activemq session..." + createParsed = urlparse.urlparse(session) + conn = httplib.HTTPConnection(createParsed.netloc) + conn.request("DELETE", createParsed.path) + res = conn.getresponse() + + + + + + + + + + + http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsHelper.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsHelper.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsHelper.java new file mode 100644 index 0000000..ef7a575 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsHelper.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.activemq.artemis.api.core.TransportConfiguration; +import org.apache.activemq.artemis.api.core.client.ActiveMQClient; +import org.apache.activemq.artemis.core.config.FileDeploymentManager; +import org.apache.activemq.artemis.core.config.impl.FileConfiguration; +import org.apache.activemq.artemis.jms.client.ActiveMQJMSConnectionFactory; + +import javax.jms.ConnectionFactory; + +public class JmsHelper { + + public static ConnectionFactory createConnectionFactory(String configFile) throws Exception { + FileConfiguration config = new FileConfiguration(); + FileDeploymentManager deploymentManager = new FileDeploymentManager(configFile); + deploymentManager.addDeployable(config); + deploymentManager.readConfiguration(); + TransportConfiguration transport = config.getConnectorConfigurations().get("netty-connector"); + return new ActiveMQJMSConnectionFactory(ActiveMQClient.createServerLocatorWithoutHA(transport)); + + } + +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsReceive.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsReceive.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsReceive.java new file mode 100644 index 0000000..d3c05b2 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsReceive.java @@ -0,0 +1,55 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.activemq.artemis.jms.client.ActiveMQDestination; +import org.apache.activemq.artemis.rest.Jms; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.Destination; +import javax.jms.Message; +import javax.jms.MessageConsumer; +import javax.jms.MessageListener; +import javax.jms.Session; + +public class JmsReceive { + + public static void main(String[] args) throws Exception { + System.out.println("Receive Setup..."); + ConnectionFactory factory = JmsHelper.createConnectionFactory("activemq-client.xml"); + Destination destination = (ActiveMQDestination) ActiveMQDestination.fromAddress("jms.queue.orders"); + + Connection conn = factory.createConnection(); + try { + Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageConsumer consumer = session.createConsumer(destination); + consumer.setMessageListener(new MessageListener() { + @Override + public void onMessage(Message message) { + System.out.println("Received Message: "); + Order order = Jms.getEntity(message, Order.class); + System.out.println(order); + } + }); + conn.start(); + Thread.sleep(1000000); + } + finally { + conn.close(); + } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsSend.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsSend.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsSend.java new file mode 100644 index 0000000..bf3370e --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/JmsSend.java @@ -0,0 +1,47 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.activemq.artemis.jms.client.ActiveMQDestination; + +import javax.jms.Connection; +import javax.jms.ConnectionFactory; +import javax.jms.Destination; +import javax.jms.MessageProducer; +import javax.jms.ObjectMessage; +import javax.jms.Session; + +public class JmsSend { + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = JmsHelper.createConnectionFactory("activemq-client.xml"); + Destination destination = (ActiveMQDestination) ActiveMQDestination.fromAddress("jms.queue.orders"); + + Connection conn = factory.createConnection(); + try { + Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); + MessageProducer producer = session.createProducer(destination); + ObjectMessage message = session.createObjectMessage(); + + Order order = new Order("Bill", "$199.99", "iPhone4"); + message.setObject(order); + producer.send(message); + } + finally { + conn.close(); + } + } +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/Order.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/Order.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/Order.java new file mode 100644 index 0000000..2b938f7 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/Order.java @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import javax.xml.bind.annotation.XmlRootElement; +import java.io.Serializable; + +@XmlRootElement(name = "order") +public class Order implements Serializable { + + private String name; + private String amount; + private String item; + + public Order() { + } + + public Order(String name, String amount, String item) { + this.name = name; + this.amount = amount; + this.item = item; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAmount() { + return amount; + } + + public void setAmount(String amount) { + this.amount = amount; + } + + public String getItem() { + return item; + } + + public void setItem(String item) { + this.item = item; + } + + @Override + public String toString() { + return "Order{" + + "name='" + name + '\'' + + ", amount='" + amount + '\'' + + ", item='" + item + '\'' + + '}'; + } +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestReceive.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestReceive.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestReceive.java new file mode 100644 index 0000000..4fc493a --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestReceive.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.jboss.resteasy.client.ClientRequest; +import org.jboss.resteasy.client.ClientResponse; +import org.jboss.resteasy.spi.Link; + +public class RestReceive { + + public static void main(String[] args) throws Exception { + // first get the create URL for the shipping queue + ClientRequest request = new ClientRequest("http://localhost:9095/queues/jms.queue.orders"); + ClientResponse res = request.head(); + Link pullConsumers = res.getHeaderAsLink("msg-pull-consumers"); + res = pullConsumers.request().formParameter("autoAck", "false").post(); + Link ackNext = res.getHeaderAsLink("msg-acknowledge-next"); + res.releaseConnection(); + while (true) { + System.out.println("Waiting..."); + res = ackNext.request().header("Accept-Wait", "10").header("Accept", "application/xml").post(); + if (res.getStatus() == 503) { + System.out.println("Timeout..."); + ackNext = res.getHeaderAsLink("msg-acknowledge-next"); + } + else if (res.getStatus() == 200) { + Order order = (Order) res.getEntity(Order.class); + System.out.println(order); + Link ack = res.getHeaderAsLink("msg-acknowledgement"); + res = ack.request().formParameter("acknowledge", "true").post(); + ackNext = res.getHeaderAsLink("msg-acknowledge-next"); + } + else { + throw new RuntimeException("Failure! " + res.getStatus()); + } + res.releaseConnection(); + } + } +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestSend.java ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestSend.java b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestSend.java new file mode 100644 index 0000000..902c4f7 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/java/RestSend.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.jboss.resteasy.client.ClientRequest; +import org.jboss.resteasy.client.ClientResponse; +import org.jboss.resteasy.spi.Link; + +public class RestSend { + + public static void main(String[] args) throws Exception { + // first get the create URL for the shipping queue + ClientRequest request = new ClientRequest("http://localhost:9095/queues/jms.queue.orders"); + ClientResponse res = request.head(); + Link create = res.getHeaderAsLink("msg-create"); + + System.out.println("Send order..."); + Order order = new Order(); + order.setName("Bill"); + order.setItem("iPhone4"); + order.setAmount("$199.99"); + + res = create.request().body("application/xml", order).post(); + if (res.getStatus() != 201) + throw new RuntimeException("Failed to post"); + } +} http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/activemq-client.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/activemq-client.xml b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/activemq-client.xml new file mode 100644 index 0000000..6fe4547 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/activemq-client.xml @@ -0,0 +1,36 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<configuration xmlns="urn:activemq" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> + + <jms xmlns="urn:activemq:jms"> + </jms> + + <core xmlns="urn:activemq:core"> + + <!-- Connectors --> + <connectors> + <connector name="netty-connector">tcp://localhost:61616</connector> + </connectors> + </core> + +</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-roles.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-roles.properties b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-roles.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-roles.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-users.properties ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-users.properties b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-users.properties new file mode 100644 index 0000000..4e2d44c --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/artemis-users.properties @@ -0,0 +1,17 @@ +## --------------------------------------------------------------------------- +## Licensed to the Apache Software Foundation (ASF) under one or more +## contributor license agreements. See the NOTICE file distributed with +## this work for additional information regarding copyright ownership. +## The ASF licenses this file to You under the Apache License, Version 2.0 +## (the "License"); you may not use this file except in compliance with +## the License. You may obtain a copy of the License at +## +## http://www.apache.org/licenses/LICENSE-2.0 +## +## Unless required by applicable law or agreed to in writing, software +## distributed under the License is distributed on an "AS IS" BASIS, +## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +## See the License for the specific language governing permissions and +## limitations under the License. +## --------------------------------------------------------------------------- +guest=guest \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/broker.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/broker.xml b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/broker.xml new file mode 100644 index 0000000..8cc0fa6 --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/resources/broker.xml @@ -0,0 +1,59 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="urn:activemq" + xsi:schemaLocation="urn:activemq /schema/artemis-server.xsd"> + + <jms xmlns="urn:activemq:jms"> + <!--the queue used by the example--> + <queue name="orders"/> + </jms> + + <core xmlns="urn:activemq:core"> + + <persistence-enabled>false</persistence-enabled> + <!-- Connectors --> + + <connectors> + <connector name="in-vm">vm://0</connector> + </connectors> + + <acceptors> + <acceptor name="in-vm">vm://0</acceptor> + <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> + </acceptors> + + <!-- Other config --> + + <security-settings> + <!--security for example queue--> + <security-setting match="#"> + <permission type="createDurableQueue" roles="guest"/> + <permission type="deleteDurableQueue" roles="guest"/> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="send" roles="guest"/> + </security-setting> + </security-settings> + + </core> +</configuration> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/jms-to-rest/src/main/webapp/WEB-INF/web.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/jms-to-rest/src/main/webapp/WEB-INF/web.xml b/examples/broker-features/standard/rest/jms-to-rest/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..e82738a --- /dev/null +++ b/examples/broker-features/standard/rest/jms-to-rest/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,51 @@ +<?xml version="1.0"?> + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" + "http://java.sun.com/dtd/web-app_2_3.dtd"> + +<web-app> + + <filter> + <filter-name>Rest-Messaging</filter-name> + <filter-class> + org.jboss.resteasy.plugins.server.servlet.FilterDispatcher + </filter-class> + </filter> + + <filter-mapping> + <filter-name>Rest-Messaging</filter-name> + <url-pattern>/*</url-pattern> + </filter-mapping> + + <listener> + <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.ActiveMQBootstrapListener</listener-class> + </listener> + + <listener> + <listener-class>org.apache.activemq.rest.integration.RestMessagingBootstrapListener</listener-class> + </listener> + +</web-app> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/pom.xml b/examples/broker-features/standard/rest/pom.xml new file mode 100644 index 0000000..bb6c81e --- /dev/null +++ b/examples/broker-features/standard/rest/pom.xml @@ -0,0 +1,45 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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.apache.activemq.examples.broker</groupId> + <artifactId>jms-examples</artifactId> + <version>1.0.1-SNAPSHOT</version> + </parent> + + <groupId>org.apache.activemq.examples.rest</groupId> + <artifactId>artemis-rests-pom</artifactId> + <packaging>pom</packaging> + <name>ActiveMQ Artemis REST Examples</name> + + <properties> + <activemq.basedir>${project.basedir}/../../../..</activemq.basedir> + </properties> + + <modules> + <module>javascript-chat</module> + <module>jms-to-rest</module> + <module>push</module> + <module>dup-send</module> + </modules> +</project> http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/push/README.txt ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/push/README.txt b/examples/broker-features/standard/rest/push/README.txt new file mode 100644 index 0000000..307e444 --- /dev/null +++ b/examples/broker-features/standard/rest/push/README.txt @@ -0,0 +1,32 @@ +System Requirements: +You will need JDK 1.6 and Maven to run this example. This example has been tested with Maven 2.2.1. It may or may not work +with earlier or later versions of Maven. + + +This is an example of having the ActiveMQ Artemis REST interface forward a posted message to a registered URL. + +To run the example you will need 3 shell-script windows (or you'll need to run 2 processes in background) + +Step 1: +$ mvn jetty:run + +This will bring up ActiveMQ Artemis and the ActiveMQ Artemis REST Interface. Two queues will be created. An "order" queue and a "shipping" +queue. The server will forward posted messages to the "shipping" queue through a registered push subscription. + +Step 2: +$ mvn exec:java -Dexec.mainClass="ReceiveShipping" + +This will bring up a JMS client registers a MessageListener consumer to receive Order objects. It will automatically +convert a posted HTTP message into an Order object using JAX-RS content handlers. + +Step 3: +$ mvn exec:java -Dexec.mainClass="PushReg" + +This creates a push registration that listens on the "order" queue and forwards messages posted to it to a URL. This +URL is the REST resource of the "shipping" queue. + +Step 4: + +$ mvn exec:java -Dexec.mainClass="PostOrder" + +This posts an order to the "order" queue. You'll see it eventually consumed by the ReceiveShipping process. http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/21bf4406/examples/broker-features/standard/rest/push/pom.xml ---------------------------------------------------------------------- diff --git a/examples/broker-features/standard/rest/push/pom.xml b/examples/broker-features/standard/rest/push/pom.xml new file mode 100644 index 0000000..49eba5e --- /dev/null +++ b/examples/broker-features/standard/rest/push/pom.xml @@ -0,0 +1,176 @@ +<?xml version='1.0'?> +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +<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.apache.activemq.examples.rest</groupId> + <artifactId>artemis-rests-pom</artifactId> + <version>1.0.1-SNAPSHOT</version> + </parent> + <artifactId>push</artifactId> + <packaging>war</packaging> + <name>Push Subscriptions</name> + + <properties> + <activemq.basedir>${project.basedir}/../../../../..</activemq.basedir> + </properties> + + <repositories> + <repository> + <id>jboss</id> + <url>http://repository.jboss.org/nexus/content/groups/public/</url> + </repository> + </repositories> + + <profiles> + <profile> + <id>example</id> + <build> + <finalName>order-flow</finalName> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + <executions> + <execution> + <id>surefire-it</id> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <skip>false</skip> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>exec-maven-plugin</artifactId> + <version>1.1</version> + <executions> + <execution> + <goals> + <goal>java</goal> + </goals> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.mortbay.jetty</groupId> + <artifactId>maven-jetty-plugin</artifactId> + <version>6.1.15</version> + <configuration> + <!-- By default the artifactId is taken, override it with something simple --> + <contextPath>/</contextPath> + <scanIntervalSeconds>2</scanIntervalSeconds> + <stopKey>foo</stopKey> + <stopPort>9999</stopPort> + <connectors> + <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector"> + <port>9095</port> + <maxIdleTime>60000</maxIdleTime> + </connector> + </connectors> + <userRealms> + <userRealm implementation="org.mortbay.jetty.security.HashUserRealm"> + <name>Test</name> + <config>${project.build.outputDirectory}/test-realm.properties</config> + </userRealm> + </userRealms> + </configuration> + <executions> + <execution> + <id>start-jetty</id> + <phase>pre-integration-test</phase> + <goals> + <goal>run</goal> + </goals> + <configuration> + <scanIntervalSeconds>0</scanIntervalSeconds> + <daemon>true</daemon> + </configuration> + </execution> + <execution> + <id>stop-jetty</id> + <phase>post-integration-test</phase> + <goals> + <goal>stop</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <dependencies> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-core-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-client</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.apache.activemq</groupId> + <artifactId>artemis-jms-server</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>io.netty</groupId> + <artifactId>netty-all</artifactId> + </dependency> + <dependency> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jms_2.0_spec</artifactId> + </dependency> + <dependency> + <groupId>org.apache.activemq.rest</groupId> + <artifactId>artemis-rest</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxrs</artifactId> + </dependency> + <dependency> + <groupId>org.jboss.resteasy</groupId> + <artifactId>resteasy-jaxb-provider</artifactId> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <scope>test</scope> + </dependency> + </dependencies> +</project>
