I'm curious about why you're using the REST interface at all. In my opinion a standardized protocol like STOMP would be a much better solution for the types of clients that would typically want a REST interface. The main problem with the REST interface is that it's non-standard. Once you write your messaging application to work with a particular REST interface then you can't easily migrate it to another provider if you ever need to. However, if you use something like STOMP then you'll have access to lots of different brokers as well as client implementations in a bunch of different languages and platforms.
Justin On Thu, Mar 26, 2020 at 3:37 PM pbaxley <pabax...@hotmail.com> wrote: > I followed the Artemis REST Interface documentation and managed to get > Artemis running with the REST interface and I can successfully call the > create URL. I do get the msg-create-next and can keep posting new messages > without issue. But that it seems that is all I can do. The documentation > suggests using the base URL/queues/queueName to query for other URLs such > as > msg-pull-consumers. However whenever I attempt this I just get a 500 Server > Error with exception data. I am new to Artemis/ActiveMQ in general so maybe > it's something obvious to regular users. > > My question is this: is there some part of the configuration where that > specifically enables or disables that part of the rest interface? or am I > missing a library in the war file I created? > > Example response when using create: > $ curl -verbose --data "123" > http://localhost:8081/testrest/queues/exampleQueue/create > % Total % Received % Xferd Average Speed Time Time Time > Current > Dload Upload Total Spent Left > Speed > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- > > 0* Trying 127.0.0.1:8081... > * TCP_NODELAY set > * Connected to localhost (127.0.0.1) port 8081 (#0) > > POST /testrest/queues/exampleQueue/create HTTP/1.1 > > Host: localhost:8081 > > User-Agent: curl/7.68.0 > > Accept: */* > > Referer: rbose > > Content-Length: 3 > > Content-Type: application/x-www-form-urlencoded > > > } [3 bytes data] > * upload completely sent off: 3 out of 3 bytes > * Mark bundle as not supporting multiuse > < HTTP/1.1 201 Created > < Date: Thu, 26 Mar 2020 20:18:12 GMT > < msg-create-next: > http://localhost:8081/testrest/queues/exampleQueue/create > < msg-create-next-type: */* > < Content-Length: 0 > < > 100 3 0 0 100 3 0 333 --:--:-- --:--:-- --:--:-- > 375 > * Connection #0 to host localhost left intact > > Example response when trying to query base url: > $ curl -verbose http://localhost:8081/testrest/queues/exampleQueue > % Total % Received % Xferd Average Speed Time Time Time > Current > Dload Upload Total Spent Left > Speed > 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- > > 0<html> > <head> > <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> > <title>Error 500 Server Error</title> > </head> > <body> > HTTP ERROR 500 > > <p>Problem accessing /testrest/queues/exampleQueue. Reason: > <pre> Server Error</pre></p> > Caused by: > <pre>org.jboss.resteasy.spi.UnhandledException: > java.lang.AbstractMethodError: Receiver class > org.jboss.resteasy.specimpl.ResponseBuilderImpl does not define or inherit > an implementation of the resolved method 'abstract > javax.ws.rs.core.Response$ResponseBuilder status(int, > java.lang.String)' of abstract class > javax.ws.rs.core.Response$ResponseBuilder. > at > > org.jboss.resteasy.core.ExceptionHandler.handleApplicationException(ExceptionHandler.java:77) > at > > org.jboss.resteasy.core.ExceptionHandler.handleException(ExceptionHandler.java:220) > at > > org.jboss.resteasy.core.SynchronousDispatcher.writeException(SynchronousDispatcher.java:175) > at > > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:418) > at > > org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:247) > at > > org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:225) > at > > org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:62) > at > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541) > at > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) > at > > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) > at > > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481) > at > > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) > at > > org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141) > at > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) > at > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at org.eclipse.jetty.server.Server.handle(Server.java:564) > at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) > at > org.eclipse.jetty.io > .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) > at org.eclipse.jetty.io > .FillInterest.fillable(FillInterest.java:110) > at > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) > at > > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672) > at > > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590) > at java.base/java.lang.Thread.run(Thread.java:830) > Caused by: java.lang.AbstractMethodError: Receiver class > org.jboss.resteasy.specimpl.ResponseBuilderImpl does not define or inherit > an implementation of the resolved method 'abstract > javax.ws.rs.core.Response$ResponseBuilder status(int, > java.lang.String)' of abstract class > javax.ws.rs.core.Response$ResponseBuilder. > at > javax.ws.rs.core.Response$ResponseBuilder.status(Response.java:921) > at javax.ws.rs.core.Response.status(Response.java:592) > at javax.ws.rs.core.Response.status(Response.java:603) > at javax.ws.rs.core.Response.ok(Response.java:638) > at javax.ws.rs.core.Response.ok(Response.java:650) > at > > org.apache.activemq.artemis.rest.queue.QueueResource.get(QueueResource.java:60) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:567) > at > > org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139) > at > > org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295) > at > > org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249) > at > > org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138) > at > > org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101) > at > > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402) > ... 29 more > </pre> > Caused by: > <pre>java.lang.AbstractMethodError: Receiver class > org.jboss.resteasy.specimpl.ResponseBuilderImpl does not define or inherit > an implementation of the resolved method 'abstract > javax.ws.rs.core.Response$ResponseBuilder status(int, > java.lang.String)' of abstract class > javax.ws.rs.core.Response$ResponseBuilder. > at > javax.ws.rs.core.Response$ResponseBuilder.status(Response.java:921) > at javax.ws.rs.core.Response.status(Response.java:592) > at javax.ws.rs.core.Response.status(Response.java:603) > at javax.ws.rs.core.Response.ok(Response.java:638) > at javax.ws.rs.core.Response.ok(Response.java:650) > at > > org.apache.activemq.artemis.rest.queue.QueueResource.get(QueueResource.java:60) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at > > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:567) > at > > org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:139) > at > > org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:295) > at > > org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:249) > at > > org.jboss.resteasy.core.ResourceLocatorInvoker.invokeOnTargetObject(ResourceLocatorInvoker.java:138) > at > > org.jboss.resteasy.core.ResourceLocatorInvoker.invoke(ResourceLocatorInvoker.java:101) > at > > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:402) > at > > org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:247) > at > > org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:225) > at > > org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:62) > at > > org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1613) > at > org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:541) > at > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) > at > org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548) > at > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:190) > at > > org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1593) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:188) > at > > org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1239) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:168) > at > org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:481) > at > > org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1562) > at > > org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:166) > at org.eclipse* Trying 127.0.0.1:8081... > * TCP_NODELAY set > * Connected to localhost (127.0.0.1) port 8081 (#0) > > GET /testrest/queues/exampleQueue HTTP/1.1 > > Host: localhost:8081 > > User-Agent: curl/7.68.0 > > Accept: */* > > Referer: rbose > > > * Mark bundle as not supporting multiuse > < HTTP/1.1 500 Server Error > < Cache-Control: must-revalidate,no-cache,no-store > < Content-Type: text/html;charset=iso-8859-1 > < Content-Length: 9213 > < Connection: close > < > { [1296 bytes data] > 100 9213 100 9213 0 0 562k 0 --:--:-- --:--:-- --:--:-- > 562k.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1141) > at > > org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) > at > org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:52) > at > > org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) > at org.eclipse.jetty.server.Server.handle(Server.java:564) > at > org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:320) > at > org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:251) > at > org.eclipse.jetty.io > .AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:279) > at org.eclipse.jetty.io > .FillInterest.fillable(FillInterest.java:110) > at > org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:124) > at > > org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:672) > at > > org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:590) > at java.base/java.lang.Thread.run(Thread.java:830) > </pre> > > </body> > </html> > > * Closing connection 0 > > > Follows some of my configuration files... > > web.xml > <web-app> > <listener> > <listener-class> > org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap > </listener-class> > </listener> > > <listener> > <listener-class> > > org.apache.activemq.artemis.rest.integration.ActiveMQBootstrapListener > </listener-class> > </listener> > > <listener> > <listener-class> > > org.apache.activemq.artemis.rest.integration.RestMessagingBootstrapListener > </listener-class> > </listener> > > <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> > </web-app> > > > broker.xml > <configuration xmlns="urn:activemq" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd"> > <core xmlns="urn:activemq:core"> > > <persistence-enabled>false</persistence-enabled> > <security-enabled>false</security-enabled> > > <acceptors> > <acceptor name="in-vm">vm://0</acceptor> > <acceptor name="netty-acceptor">tcp://localhost:61616</acceptor> > </acceptors> > <addresses> > <address name="exampleQueue"> > <anycast> > <queue name="exampleQueue"/> > </anycast> > </address> > </addresses> > </core> > </configuration> > > bootstrap.xml > <jaas-security domain="activemq"/> > > > <server > > configuration="file:/C:/Program%20Files/Apache/Artemis/testrest/testrest_broker/etc/broker.xml"/> > > > <web bind="http://localhost:8081" path="web"> > <app url="activemq-branding" war="activemq-branding.war"/> > <app url="artemis-plugin" war="artemis-plugin.war"/> > <app url="console" war="console.war"/> > <app url="testrest" war="activemq-rest.war"/> > </web> > > > -Phil > > > > -- > Sent from: > http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html > >