You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Petr Újezdský (Jira)" <ji...@apache.org> on 2022/04/25 12:28:00 UTC

[jira] [Updated] (AMQ-8591) ActiveMQ 5.17.0 can not start when in symlinked directory (docker)

     [ https://issues.apache.org/jira/browse/AMQ-8591?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Petr Újezdský updated AMQ-8591:
-------------------------------
    Description: 
Up to version 5.16 this Docker file (with only version changed) worked fine

[https://github.com/rmohr/docker-activemq/blob/master/5.15.9/Dockerfile]

Since version 5.17.0 the command
{code:java}
ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
{code}
must be rewritten into simple {{mv}}
{code:java}
mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
{code}
and the command {{chown -R activemq:activemq /opt/$ACTIVEMQ}} removed.

Otherwise the startup fails on:
{code:java}
WARN | Failed startup of context o.e.j.w.WebAppContext@5d1b1c2a{ActiveMQ Console,/admin,file:///opt/activemq/webapps/admin/,UNAVAILABLE}
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/webconsole-embedded.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:232) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:203) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) ~[spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671) ~[spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.3.16.jar:5.3.16]
        at org.apache.activemq.web.WebConsoleStarter.createWebapplicationContext(WebConsoleStarter.java:71) ~[?:?]
        at org.apache.activemq.web.WebConsoleStarter.contextInitialized(WebConsoleStarter.java:44) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1073) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:1002) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:411) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:417) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.Server.start(Server.java:423) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.Server.doStart(Server.java:387) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283) ~[spring-core-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.config.MethodInvokingBean.invokeWithTargetException(MethodInvokingBean.java:123) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:108) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:934) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) [spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) [spring-context-5.3.16.jar:5.3.16]
        at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) [xbean-spring-4.20.jar:4.20]
        at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) [xbean-spring-4.20.jar:4.20]
        at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) [activemq-broker-5.17.0.jar:5.17.0]
        at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) [activemq-broker-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) [activemq-console-5.17.0.jar:5.17.0]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.apache.activemq.console.Main.runTaskClass(Main.java:262) [activemq.jar:5.17.0]
        at org.apache.activemq.console.Main.main(Main.java:115) [activemq.jar:5.17.0]
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
        at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
        ... 78 more
{code}
This {{Dockerfile}} does not work (AMQ is inside symlinked directory):
{code:java}
FROM openjdk:11-jre

ENV ACTIVEMQ_VERSION 5.17.0
ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238

ENV ACTIVEMQ_HOME /opt/activemq


RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz

# Validate checksum
RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
    then \
        echo "sha512 values doesn't match! exiting."  && \
        exit 1; \
    fi;

RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
    ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    useradd -r -M -d $ACTIVEMQ_HOME activemq && \
    chown -R activemq:activemq /opt/$ACTIVEMQ && \
    chown -h activemq:activemq $ACTIVEMQ_HOME 

USER activemq

WORKDIR $ACTIVEMQ_HOME
EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI

CMD ["/bin/sh", "-c", "bin/activemq console"]
{code}
This {{Dockerfile}} works (directory insted symlink):
{code:java}
FROM openjdk:11-jre

ENV ACTIVEMQ_VERSION 5.17.0
ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238

ENV ACTIVEMQ_HOME /opt/activemq


RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz

# Validate checksum
RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
    then \
        echo "sha512 values doesn't match! exiting."  && \
        exit 1; \
    fi;

RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
    mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    useradd -r -M -d $ACTIVEMQ_HOME activemq && \
    chown -h activemq:activemq $ACTIVEMQ_HOME 

USER activemq

WORKDIR $ACTIVEMQ_HOME
EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI

CMD ["/bin/sh", "-c", "bin/activemq console"]
{code}

  was:
Up to version 5.16 this Docker file (with only version changed) worked fine

[https://github.com/rmohr/docker-activemq/blob/master/5.15.9/Dockerfile]

Since version 5.17.0 the command
{code:java}
     ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
{code}
must be rewritten into simple {{mv}}
{code:java}
    mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
{code}
and the command {{chown -R activemq:activemq /opt/$ACTIVEMQ}} removed.

Otherwise the startup fails on:
{code:java}
WARN | Failed startup of context o.e.j.w.WebAppContext@5d1b1c2a{ActiveMQ Console,/admin,file:///opt/activemq/webapps/admin/,UNAVAILABLE}
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/webconsole-embedded.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:232) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:203) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) ~[spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671) ~[spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.3.16.jar:5.3.16]
        at org.apache.activemq.web.WebConsoleStarter.createWebapplicationContext(WebConsoleStarter.java:71) ~[?:?]
        at org.apache.activemq.web.WebConsoleStarter.contextInitialized(WebConsoleStarter.java:44) ~[?:?]
        at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1073) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:1002) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:411) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:417) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.Server.start(Server.java:423) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.server.Server.doStart(Server.java:387) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283) ~[spring-core-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.config.MethodInvokingBean.invokeWithTargetException(MethodInvokingBean.java:123) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:108) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:934) [spring-beans-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) [spring-context-5.3.16.jar:5.3.16]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) [spring-context-5.3.16.jar:5.3.16]
        at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) [xbean-spring-4.20.jar:4.20]
        at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) [xbean-spring-4.20.jar:4.20]
        at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67) [activemq-spring-5.17.0.jar:5.17.0]
        at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) [activemq-broker-5.17.0.jar:5.17.0]
        at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) [activemq-broker-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
        at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) [activemq-console-5.17.0.jar:5.17.0]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.apache.activemq.console.Main.runTaskClass(Main.java:262) [activemq.jar:5.17.0]
        at org.apache.activemq.console.Main.main(Main.java:115) [activemq.jar:5.17.0]
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
        at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159) ~[spring-web-5.3.16.jar:5.3.16]
        at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
        ... 78 more
{code}
This {{Dockerfile}} does not work (AMQ is inside symlinked directory):
{code:java}
FROM openjdk:11-jre

ENV ACTIVEMQ_VERSION 5.17.0
ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238

ENV ACTIVEMQ_HOME /opt/activemq


RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz

# Validate checksum
RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
    then \
        echo "sha512 values doesn't match! exiting."  && \
        exit 1; \
    fi;

RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
    ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    useradd -r -M -d $ACTIVEMQ_HOME activemq && \
    chown -R activemq:activemq /opt/$ACTIVEMQ && \
    chown -h activemq:activemq $ACTIVEMQ_HOME 

USER activemq

WORKDIR $ACTIVEMQ_HOME
EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI

CMD ["/bin/sh", "-c", "bin/activemq console"]
{code}
This {{Dockerfile}} works (directory insted symlink):
{code:java}
FROM openjdk:11-jre

ENV ACTIVEMQ_VERSION 5.17.0
ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238

ENV ACTIVEMQ_HOME /opt/activemq


RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz

# Validate checksum
RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
    then \
        echo "sha512 values doesn't match! exiting."  && \
        exit 1; \
    fi;

RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
    mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
    useradd -r -M -d $ACTIVEMQ_HOME activemq && \
    chown -h activemq:activemq $ACTIVEMQ_HOME 

USER activemq

WORKDIR $ACTIVEMQ_HOME
EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI

CMD ["/bin/sh", "-c", "bin/activemq console"]
{code}


> ActiveMQ 5.17.0 can not start when in symlinked directory (docker)
> ------------------------------------------------------------------
>
>                 Key: AMQ-8591
>                 URL: https://issues.apache.org/jira/browse/AMQ-8591
>             Project: ActiveMQ
>          Issue Type: Bug
>    Affects Versions: 5.17.0
>            Reporter: Petr Újezdský
>            Priority: Major
>
> Up to version 5.16 this Docker file (with only version changed) worked fine
> [https://github.com/rmohr/docker-activemq/blob/master/5.15.9/Dockerfile]
> Since version 5.17.0 the command
> {code:java}
> ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
> {code}
> must be rewritten into simple {{mv}}
> {code:java}
> mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
> {code}
> and the command {{chown -R activemq:activemq /opt/$ACTIVEMQ}} removed.
> Otherwise the startup fails on:
> {code:java}
> WARN | Failed startup of context o.e.j.w.WebAppContext@5d1b1c2a{ActiveMQ Console,/admin,file:///opt/activemq/webapps/admin/,UNAVAILABLE}
> org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from ServletContext resource [/WEB-INF/webconsole-embedded.xml]; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
>         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:196) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:232) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:203) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125) ~[spring-web-5.3.16.jar:5.3.16]
>         at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94) ~[spring-web-5.3.16.jar:5.3.16]
>         at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130) ~[spring-context-5.3.16.jar:5.3.16]
>         at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:671) ~[spring-context-5.3.16.jar:5.3.16]
>         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) ~[spring-context-5.3.16.jar:5.3.16]
>         at org.apache.activemq.web.WebConsoleStarter.createWebapplicationContext(WebConsoleStarter.java:71) ~[?:?]
>         at org.apache.activemq.web.WebConsoleStarter.contextInitialized(WebConsoleStarter.java:44) ~[?:?]
>         at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1073) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:572) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:1002) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:746) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:379) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1449) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1414) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:916) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:288) ~[jetty-servlet-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:524) ~[jetty-webapp-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:411) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:417) ~[jetty-security-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:117) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:169) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.Server.start(Server.java:423) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:110) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:97) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.server.Server.doStart(Server.java:387) ~[jetty-server-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.45.v20220203.jar:9.4.45.v20220203]
>         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>         at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>         at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:283) ~[spring-core-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.config.MethodInvokingBean.invokeWithTargetException(MethodInvokingBean.java:123) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:108) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) [spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) [spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) [spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:934) [spring-beans-5.3.16.jar:5.3.16]
>         at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) [spring-context-5.3.16.jar:5.3.16]
>         at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) [spring-context-5.3.16.jar:5.3.16]
>         at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64) [xbean-spring-4.20.jar:4.20]
>         at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52) [xbean-spring-4.20.jar:4.20]
>         at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
>         at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104) [activemq-spring-5.17.0.jar:5.17.0]
>         at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67) [activemq-spring-5.17.0.jar:5.17.0]
>         at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71) [activemq-broker-5.17.0.jar:5.17.0]
>         at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54) [activemq-broker-5.17.0.jar:5.17.0]
>         at org.apache.activemq.console.command.StartCommand.runTask(StartCommand.java:87) [activemq-console-5.17.0.jar:5.17.0]
>         at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
>         at org.apache.activemq.console.command.ShellCommand.runTask(ShellCommand.java:154) [activemq-console-5.17.0.jar:5.17.0]
>         at org.apache.activemq.console.command.AbstractCommand.execute(AbstractCommand.java:63) [activemq-console-5.17.0.jar:5.17.0]
>         at org.apache.activemq.console.command.ShellCommand.main(ShellCommand.java:104) [activemq-console-5.17.0.jar:5.17.0]
>         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
>         at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
>         at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
>         at org.apache.activemq.console.Main.runTaskClass(Main.java:262) [activemq.jar:5.17.0]
>         at org.apache.activemq.console.Main.main(Main.java:115) [activemq.jar:5.17.0]
> Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/WEB-INF/webconsole-embedded.xml]
>         at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:159) ~[spring-web-5.3.16.jar:5.3.16]
>         at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:333) ~[spring-beans-5.3.16.jar:5.3.16]
>         ... 78 more
> {code}
> This {{Dockerfile}} does not work (AMQ is inside symlinked directory):
> {code:java}
> FROM openjdk:11-jre
> ENV ACTIVEMQ_VERSION 5.17.0
> ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
> ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
> ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238
> ENV ACTIVEMQ_HOME /opt/activemq
> RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz
> # Validate checksum
> RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
>     then \
>         echo "sha512 values doesn't match! exiting."  && \
>         exit 1; \
>     fi;
> RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
>     ln -s /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
>     mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
>     useradd -r -M -d $ACTIVEMQ_HOME activemq && \
>     chown -R activemq:activemq /opt/$ACTIVEMQ && \
>     chown -h activemq:activemq $ACTIVEMQ_HOME 
> USER activemq
> WORKDIR $ACTIVEMQ_HOME
> EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI
> CMD ["/bin/sh", "-c", "bin/activemq console"]
> {code}
> This {{Dockerfile}} works (directory insted symlink):
> {code:java}
> FROM openjdk:11-jre
> ENV ACTIVEMQ_VERSION 5.17.0
> ENV ACTIVEMQ apache-activemq-$ACTIVEMQ_VERSION
> ENV ACTIVEMQ_TCP=61616 ACTIVEMQ_AMQP=5672 ACTIVEMQ_STOMP=61613 ACTIVEMQ_MQTT=1883 ACTIVEMQ_WS=61614 ACTIVEMQ_UI=8161
> ENV SHA512_VAL=d3252df7528b7000fceaf0a8b45c65216010467fea775bb3219ef04aaa659156f4c87982eb11a6982204d2737b9cc2b93efac88b651f1447270528bf62b1e238
> ENV ACTIVEMQ_HOME /opt/activemq
> RUN curl "https://archive.apache.org/dist/activemq/$ACTIVEMQ_VERSION/$ACTIVEMQ-bin.tar.gz" -o $ACTIVEMQ-bin.tar.gz
> # Validate checksum
> RUN if [ "$SHA512_VAL" != "$(sha512sum $ACTIVEMQ-bin.tar.gz | awk '{print($1)}')" ];\
>     then \
>         echo "sha512 values doesn't match! exiting."  && \
>         exit 1; \
>     fi;
> RUN tar xzf $ACTIVEMQ-bin.tar.gz -C  /opt && \
>     mv /opt/$ACTIVEMQ $ACTIVEMQ_HOME && \
>     useradd -r -M -d $ACTIVEMQ_HOME activemq && \
>     chown -h activemq:activemq $ACTIVEMQ_HOME 
> USER activemq
> WORKDIR $ACTIVEMQ_HOME
> EXPOSE $ACTIVEMQ_TCP $ACTIVEMQ_AMQP $ACTIVEMQ_STOMP $ACTIVEMQ_MQTT $ACTIVEMQ_WS $ACTIVEMQ_UI
> CMD ["/bin/sh", "-c", "bin/activemq console"]
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)