Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.8.0
    • Fix Version/s: 5.9.0
    • Component/s: None
    • Labels:
      None

      Description

      Our administration web console has come to age and we should replace with hawtio (http://hawt.io) project. Of course, we should make sure that ActiveMQ plugin is feature compatible with current console.

      hawtio provides lots of extra capabilities over the old web console; we can send messages, move messages, delete messages and easily replay DLQ messages; together with visualising producer/consumer flows and providing real time metrics and charting on destinations. Plus hawtio is much smaller than the old web console; we can also use the hawtio console remotely to connect to other brokers and JVMs which just contain the tiny jolokia java agent

        Issue Links

          Activity

          Hide
          james strachan added a comment -

          I just followed Christian's instructions on his blog post http://www.christianposta.com/blog/?p=315 using the latest 5.9-SNAPSHOT
          https://repository.apache.org/content/groups/snapshots/org/apache/activemq/apache-activemq/5.9-SNAPSHOT/

          and it seems hawtio is correctly included; so I guess this issue is almost closed .

          Though its worth leaving open until just before the release; so we can ensure we upgrade to the latest hawtio release. (e.g. 1.2 GA should be out by then).

          Show
          james strachan added a comment - I just followed Christian's instructions on his blog post http://www.christianposta.com/blog/?p=315 using the latest 5.9-SNAPSHOT https://repository.apache.org/content/groups/snapshots/org/apache/activemq/apache-activemq/5.9-SNAPSHOT/ and it seems hawtio is correctly included; so I guess this issue is almost closed . Though its worth leaving open until just before the release; so we can ensure we upgrade to the latest hawtio release. (e.g. 1.2 GA should be out by then).
          Hide
          Timothy Bish added a comment -

          Noticed in the latest build I did that when I start from the console I get this exception logged.

           WARN | Failed startup of context o.e.j.w.WebAppContext{/hawtio,file:/home/timothy/dev/apache-activemq-5.6-SNAPSHOT/src/assembly/target/apache-activemq-5.9-SNAPSHOT/webapps/hawtio/},/home/timothy/dev/apache-activemq-5.6-SNAPSHOT/src/assembly/target/apache-activemq-5.9-SNAPSHOT/webapps/hawtio
          java.lang.reflect.InvocationTargetException
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:606)
          	at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85)
          	at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:72)
          	at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:326)
          	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1236)
          	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:689)
          	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480)
          	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
          	at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
          	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
          	at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:381)
          	at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:233)
          	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
          	at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229)
          	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
          	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
          	at org.eclipse.jetty.server.Server.doStart(Server.java:279)
          	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:606)
          	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608)
          	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549)
          	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
          	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
          	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
          	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
          	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
          	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
          	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
          	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
          	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
          	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
          	at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)
          	at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)
          	at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:103)
          	at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:103)
          	at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:65)
          	at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71)
          	at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)
          	at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87)
          	at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
          	at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:150)
          	at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57)
          	at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104)
          	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
          	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:606)
          	at org.apache.activemq.console.Main.runTaskClass(Main.java:262)
          	at org.apache.activemq.console.Main.main(Main.java:115)
          Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for resolved class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type LoggerFactory; used in the signature
          	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:299)
          	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
          	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
          	at io.hawt.jmx.JmxTreeWatcher.<clinit>(JmxTreeWatcher.java:17)
          	at io.hawt.HawtioContextListener.<init>(HawtioContextListener.java:15)
          	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
          	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
          	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
          	at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
          	at java.lang.Class.newInstance(Class.java:374)
          	at org.eclipse.jetty.servlet.ServletContextHandler$Context.createListener(ServletContextHandler.java:725)
          	at org.eclipse.jetty.webapp.StandardDescriptorProcessor.newListenerInstance(StandardDescriptorProcessor.java:1409)
          	at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1366)
          
          Show
          Timothy Bish added a comment - Noticed in the latest build I did that when I start from the console I get this exception logged. WARN | Failed startup of context o.e.j.w.WebAppContext{/hawtio,file:/home/timothy/dev/apache-activemq-5.6-SNAPSHOT/src/assembly/target/apache-activemq-5.9-SNAPSHOT/webapps/hawtio/},/home/timothy/dev/apache-activemq-5.6-SNAPSHOT/src/assembly/target/apache-activemq-5.9-SNAPSHOT/webapps/hawtio java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:85) at org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:72) at org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:326) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1236) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:689) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:480) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:381) at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:233) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:279) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1608) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1549) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:103) at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:103) at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:65) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:150) at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:57) at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.activemq.console.Main.runTaskClass(Main.java:262) at org.apache.activemq.console.Main.main(Main.java:115) Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/eclipse/jetty/webapp/WebAppClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of java/net/URLClassLoader) for resolved class, org/slf4j/impl/StaticLoggerBinder, have different Class objects for the type LoggerFactory; used in the signature at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:299) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) at io.hawt.jmx.JmxTreeWatcher.<clinit>(JmxTreeWatcher.java:17) at io.hawt.HawtioContextListener.<init>(HawtioContextListener.java:15) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at java.lang.Class.newInstance(Class.java:374) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createListener(ServletContextHandler.java:725) at org.eclipse.jetty.webapp.StandardDescriptorProcessor.newListenerInstance(StandardDescriptorProcessor.java:1409) at org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1366)
          Hide
          Dejan Bosanac added a comment -

          This is fixed now. Also, I turned off hawtio authentication for now as it requires jaas that we don't use at the moment.

          The next useful thing would be to enable log view.

          In the future we should use jaas for all default configuration and turn back hawtio auth

          Show
          Dejan Bosanac added a comment - This is fixed now. Also, I turned off hawtio authentication for now as it requires jaas that we don't use at the moment. The next useful thing would be to enable log view. In the future we should use jaas for all default configuration and turn back hawtio auth
          Hide
          Christian Posta added a comment -

          Just played with the latest activemq snapshot, and when I run hawtio the activemq tab doesn't appear at the top ribbon bar. I tried upgrading to the latest (1.2-M10) but still no bueno. Any ideas? I will hack around tomorrow more to find out what's going on, but curious if you see this on your side too.

          Show
          Christian Posta added a comment - Just played with the latest activemq snapshot, and when I run hawtio the activemq tab doesn't appear at the top ribbon bar. I tried upgrading to the latest (1.2-M10) but still no bueno. Any ideas? I will hack around tomorrow more to find out what's going on, but curious if you see this on your side too.
          Hide
          Dejan Bosanac added a comment -

          No. I just did a clean pull from git a build and it looks fine here.

          Show
          Dejan Bosanac added a comment - No. I just did a clean pull from git a build and it looks fine here.
          Hide
          Miquel Angel Escolar added a comment -

          I just installed the latest activemq snapshot (apache-activemq-5.9-20130905.132141-99-bin) from repo and when i execute activemq, i get the above exception logged by Timothy. Any ideas?

          Show
          Miquel Angel Escolar added a comment - I just installed the latest activemq snapshot (apache-activemq-5.9-20130905.132141-99-bin) from repo and when i execute activemq, i get the above exception logged by Timothy. Any ideas?
          Hide
          Miquel Angel Escolar added a comment -

          It seems to be a repackaging problem, because if i remove manually all excluded libs in assembly it works.

          Show
          Miquel Angel Escolar added a comment - It seems to be a repackaging problem, because if i remove manually all excluded libs in assembly it works.
          Hide
          Dejan Bosanac added a comment -

          Yeah, but that build is older than my fix. For some reason snapshots are not being built lately. I just started one, let's see if we'll have a new snapshot soon.

          Show
          Dejan Bosanac added a comment - Yeah, but that build is older than my fix. For some reason snapshots are not being built lately. I just started one, let's see if we'll have a new snapshot soon.
          Hide
          Dejan Bosanac added a comment -

          Added log plugin for hawtio, so we can inspect and search logs in the console.

          There's an ugly message on standard console when starting broker, tied to

          https://github.com/jboss-fuse/fuse/issues/95

          We should get this fixed before the release.

          Show
          Dejan Bosanac added a comment - Added log plugin for hawtio, so we can inspect and search logs in the console. There's an ugly message on standard console when starting broker, tied to https://github.com/jboss-fuse/fuse/issues/95 We should get this fixed before the release.
          Hide
          Claus Ibsen added a comment -

          Upgraded hawtio to 1.2M16

          Show
          Claus Ibsen added a comment - Upgraded hawtio to 1.2M16
          Hide
          Colin Hines added a comment -

          I'm building from source (commit 3e58a5a4ebd4d311f6d82065f602ace911318038), using maven 3.05 and encountering this same exception. Is there a workaround for the time being to be able to demo hawtio to co-workers?

          Show
          Colin Hines added a comment - I'm building from source (commit 3e58a5a4ebd4d311f6d82065f602ace911318038), using maven 3.05 and encountering this same exception. Is there a workaround for the time being to be able to demo hawtio to co-workers?
          Hide
          Claus Ibsen added a comment -

          Upgraded to 1.2M19

          Show
          Claus Ibsen added a comment - Upgraded to 1.2M19
          Hide
          Claus Ibsen added a comment -

          The ugly log on startup has been fixed, as we disable the insight log plugin until a new release is out that fixes the system out println.

          Show
          Claus Ibsen added a comment - The ugly log on startup has been fixed, as we disable the insight log plugin until a new release is out that fixes the system out println.

            People

            • Assignee:
              Dejan Bosanac
              Reporter:
              Dejan Bosanac
            • Votes:
              1 Vote for this issue
              Watchers:
              8 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development