Here's my module.xml: <module xmlns="urn:jboss:module:1.5" name="org.apache.activemq.artemis.protocol.mqtt"> <resources> <resource-root path="artemis-mqtt-protocol-1.5.5.jbossorg-007.jar" /> </resources>
<dependencies> <module name="io.netty"/> <!-- required to load ActiveMQ protocol SPI --> <module name="org.apache.activemq.artemis"/> <module name="org.jboss.logging"/> </dependencies> </module> I added this to standalone-full.xml: <profile> ... <subsystem xmlns="urn:jboss:domain:messaging-activemq:2.0"> ... <security enabled="false"/> ... <remote-acceptor name="mqtt-acceptor" socket-binding="mqtt"> <param name="protocols" value="MQTT"/> </remote-acceptor> ... </subsystem> ... </profile> ... <socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}"> ... <socket-binding name="mqtt" port="1883"/> </socket-binding-group> Justin On Tue, Sep 26, 2017 at 11:18 AM, Justin Bertram <jbert...@redhat.com> wrote: > FWIW I just integrated MQTT with Wildfly 11.0.0.CR1 and > ran > org.apache.activemq.artemis.tests.integration.mqtt.imported.MQTTTest#testSendAndReceiveMQTT > against it and everything worked. > > > Justin > > On Tue, Sep 26, 2017 at 10:55 AM, Justin Bertram <jbert...@redhat.com> > wrote: > >> The Artemis integration code for Wildfly is in the Wildfly project [1]. >> >> The problem you hit in Wildfly 11.0.0.CR1 looks odd to me. The >> class io.netty.handler.codec.mqtt.MqttEncoder from Netty 4.1.9.Final >> (which ships in Wildfly) does, in fact, contain the field "INSTANCE" so I'm >> not sure why you would be getting this exception unless there was something >> odd going on with the classloading or something. >> >> Also, the integration instructions in the WFLY-9372 JIRA say to copy >> netty-codec-mqtt-5.0.0.Alpha2.jar into the >> org.apache.activemq.artemis.protocol.mqtt >> module, but that shouldn't be necessary in Wildfly 11.0.0.CR1 as the >> io.netty module already contains those classes. I also don't see why >> the org.apache.activemq.artemis.protocol.mqtt module would need >> dependencies on javax.jms.api, javax.api, or org.slf4j. >> >> >> Justin >> >> [1] https://github.com/wildfly/wildfly (see the "messaging-activemq" >> module) >> >> On Tue, Sep 26, 2017 at 10:17 AM, thoutekier <thomas.houtek...@barco.com> >> wrote: >> >>> * using artemis-1.1.0 standalone works out-of-the-box: it has by default >>> support for MQTT in the config, and it works if I connect using an >>> MQTT-client >>> >>> * using Wildfly-11.0.0.CR1: >>> 2017-09-26 17:12:25,837 WARNING [io.netty.channel.DefaultChann >>> elPipeline] >>> (Thread-2 (activemq-netty-threads)) An exceptionCaught() event was fired, >>> and it reached at the tail of the pipeline. It usually means the last >>> handler in the pipeline did not handle the exception.: >>> io.netty.handler.codec.DecoderException: java.lang.NoSuchFieldError: >>> INSTANCE >>> at >>> io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteT >>> oMessageDecoder.java:442) >>> at >>> io.netty.handler.codec.ByteToMessageDecoder.channelRead(Byte >>> ToMessageDecoder.java:248) >>> at >>> org.apache.activemq.artemis.core.protocol.ProtocolHandler$Pr >>> otocolDecoder.channelRead(ProtocolHandler.java:128) >>> at >>> io.netty.channel.AbstractChannelHandlerContext.invokeChannel >>> Read(AbstractChannelHandlerContext.java:362) >>> at >>> io.netty.channel.AbstractChannelHandlerContext.invokeChannel >>> Read(AbstractChannelHandlerContext.java:348) >>> at >>> io.netty.channel.AbstractChannelHandlerContext.fireChannelRe >>> ad(AbstractChannelHandlerContext.java:340) >>> at >>> io.netty.channel.DefaultChannelPipeline$HeadContext.channelR >>> ead(DefaultChannelPipeline.java:1334) >>> at >>> io.netty.channel.AbstractChannelHandlerContext.invokeChannel >>> Read(AbstractChannelHandlerContext.java:362) >>> at >>> io.netty.channel.AbstractChannelHandlerContext.invokeChannel >>> Read(AbstractChannelHandlerContext.java:348) >>> at >>> io.netty.channel.DefaultChannelPipeline.fireChannelRead(Defa >>> ultChannelPipeline.java:926) >>> at >>> io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.re >>> ad(AbstractNioByteChannel.java:134) >>> at >>> io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEven >>> tLoop.java:624) >>> at >>> io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimiz >>> ed(NioEventLoop.java:559) >>> at >>> io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEve >>> ntLoop.java:476) >>> at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:438) >>> at >>> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(Sin >>> gleThreadEventExecutor.java:858) >>> at java.lang.Thread.run(Thread.java:745) >>> Caused by: java.lang.NoSuchFieldError: INSTANCE >>> at >>> org.apache.activemq.artemis.core.protocol.mqtt.MQTTProtocolM >>> anager.addChannelHandlers(MQTTProtocolManager.java:113) >>> at >>> org.apache.activemq.artemis.core.protocol.ProtocolHandler$Pr >>> otocolDecoder.decode(ProtocolHandler.java:181) >>> at >>> io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteT >>> oMessageDecoder.java:411) >>> ... 16 more >>> >>> >>> So it seems that it is in fact a problem in Wildfly. >>> Any idea where I could find the code for the artemis-integration in >>> wildly? >>> I don't find any branch/tag on >>> https://github.com/apache/activemq-artemis/tree/1.x/artemis- >>> protocols/artemis-mqtt-protocol >>> for "artemis-mqtt-protocol-1.1.0.wildfly-017" >>> >>> >>> >>> >>> >>> -- >>> Sent from: http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805 >>> .html >>> >> >> >