Espero que alguien pueda ayudarme a solucionar un problema que tengo con JBoss Fuse, específicamente con AMQ. Estoy usando la versión 6.0.0.redhat-024 con 6.0.0.redhat-024-p5. Estoy intentando implementar esto en un contenedor, pero parece que tengo un problema con AMQ. El problema, al implementar mi aplicación, es el siguiente:
[root@4ca73a25d4cf home]# client -r 2 -d 60 -u admin -p admin "features:install example-app"
Refreshing bundles org.springframework.context.support (104)
Error executing command: Could not start bundle mvn:com.example/example.broker.services/1.0-SNAPSHOT in feature(s) example-base-0.0.0: Unresolved constraint in bundle example.broker.services [254]: Unable to resolve 254.0: missing requirement [254.0] osgi.wiring.package; (osgi.wiring.package=org.apache.activemq)
Obviamente, esto parece un problema de dependencia faltante, pero estoy convencido de que es una pista falsa, ya que solo aparece este problema cuando intento instalar la aplicación como parte del proceso de compilación de Docker. Para probar esto tengo:
- Instalé la aplicación exitosamente en una máquina virtual del mismo sistema operativo.
- Instalé la aplicación en un contenedor en blanco sin usar Docker Build (es decir, ejecuté un contenedor, ejecuté en él y simplemente ejecuté la instalación de Fuse y la aplicación manualmente)
No surgen problemas con los dos métodos anteriores: la aplicación se instala y se ejecuta como se esperaba. Los comandos utilizados en las instalaciones anteriores se obtienen del Dockerfile que estoy usando para la compilación. Este problema parece estar relacionado (de alguna manera) con la compilación de Docker.
Cuando la aplicación se instala, algo parece hacerle algo a AMQ. Cuando construyo el contenedor hasta el punto de instalación de la aplicación, las características de AMQ están bien:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:list | grep 118"
[ 118] [Active ] [Created ] [ ] [ 50] activemq-karaf (5.8.0.redhat-60024)
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:list | grep 128"
[ 128] [Active ] [ ] [ ] [ 60] JBoss A-MQ Fabric (6.0.0.redhat-057)
Cuando actualizo, comienzo y detengo los paquetes, todo está bien:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:refresh 118"
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:list | grep 118"
[ 118] [Active ] [Created ] [ ] [ 50] activemq-karaf (5.8.0.redhat-60024)
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:stop 118"
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:start 118"
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:headers 118"
activemq-karaf (118)
--------------------
Manifest-Version = 1.0
Bnd-LastModified = 1365188424349
Tool = Bnd-1.50.0
Built-By = mockbuild
Embed-Transitive = true
Implementation-Version = 5.8.0.redhat-60024
Build-Jdk = 1.6.0_24
Implementation-Title = Apache ActiveMQ
Created-By = Apache Maven Bundle Plugin
Bundle-Vendor = Red Hat, Inc.
Bundle-Name = activemq-karaf
Bundle-DocURL = http://redhat.com
Bundle-Description = Provides resources for running ActiveMQ in Apache Karaf
Bundle-SymbolicName = activemq-karaf
Bundle-Version = 5.8.0.redhat-60024
Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion = 2
Export-Service =
org.apache.felix.service.command.Function;
osgi.command.function=browse;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=bstat;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=purge;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=query;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=list;
osgi.command.scope=activemq
Import-Package =
org.apache.activemq.console,
org.apache.activemq.console.command,
org.apache.activemq.console.formatter,
org.apache.felix.gogo.commands;version="[0.11,1)",
org.apache.felix.gogo.commands.basic;version="[0.11,1)",
org.apache.felix.service.command;status=provisional;version="[0.11,1)",
org.apache.karaf.shell.console;version="[2.3,3)",
org.apache.karaf.shell.console.commands;version="[2.3,3)",
org.osgi.framework;version="[1.3,2)",
org.osgi.service.blueprint;version="[1.0.0,2.0.0)",
org.osgi.service.blueprint.container;version="[1.0,2)"
Export-Package =
org.apache.activemq.karaf.commands;
uses:="org.apache.felix.service.command,
org.apache.felix.gogo.commands.basic,
org.apache.felix.gogo.commands,
org.osgi.service.blueprint.container,
org.apache.karaf.shell.console.commands,
org.apache.karaf.shell.console,
org.osgi.framework,
org.apache.activemq.console.command,
org.apache.activemq.console.formatter,
org.apache.activemq.console";
version=5.8.0.redhat-60024
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:headers 128"
JBoss A-MQ Fabric (128)
-----------------------
Specification-Title = JBoss A-MQ Fabric
Tool = Bnd-1.15.0
Specification-Version = 6.0.0.redhat-057
Specification-Vendor = Red Hat
Embed-Dependency = !*
Implementation-Version = 6.0.0.redhat-057
Build-Jdk = 1.6.0_45
Implementation-Vendor-Id = org.jboss.amq
Created-By = Apache Maven Bundle Plugin
Implementation-Title = JBoss A-MQ Fabric
Manifest-Version = 1.0
Bnd-LastModified = 1385007431709
Built-By = hudson
Implementation-Vendor = Red Hat
Bundle-Vendor = Red Hat
Bundle-Activator = org.fusesource.mq.fabric.Activator
Bundle-Name = JBoss A-MQ Fabric
Bundle-DocURL = http://fabric.fusesource.org/
Bundle-Description = JBoss A-MQ Fabric
Bundle-SymbolicName = org.jboss.amq.mq-fabric
Bundle-Version = 6.0.0.redhat-057
Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion = 2
Export-Service =
javax.jms.ConnectionFactory
Import-Package =
javax.jms;version="[1.1,2)",
org.apache.activemq,
org.apache.activemq.broker,
org.apache.activemq.command,
org.apache.activemq.network,
org.apache.activemq.spring,
org.apache.activemq.transport.discovery,
org.apache.activemq.util,
org.apache.xbean.spring.context;version="[3.12,4)",
org.apache.xbean.spring.context.impl;version="[3.12,4)",
org.apache.zookeeper;version="[3.4,4)",
org.codehaus.jackson.annotate;version="[1.9,2)",
org.fusesource.fabric.groups;version="[7.2,7.3)",
org.fusesource.fabric.groups.internal;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper.internal;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper.utils;version="[7.2,7.3)",
org.linkedin.util.clock,
org.osgi.framework;version="[1.6,2)",
org.osgi.service.cm;version="[1.4,2)",
org.osgi.util.tracker;version="[1.5,2)",
org.slf4j;version="[1.6,2)",
org.springframework.beans.factory;version="[3,4)",
org.springframework.beans.factory.xml;version="[3,4)",
org.springframework.context.support;version="[3,4)",
org.springframework.core.io;version="[3,4)",
scala;version="[2.9,2.10]",
scala.collection;version="[2.9,2.10]",
scala.collection.generic;version="[2.9,2.10]",
scala.collection.immutable;version="[2.9,2.10]",
scala.collection.mutable;version="[2.9,2.10]",
scala.reflect;version="[2.9,2.10]",
scala.runtime;version="[2.9,2.10]"
Export-Package =
org.fusesource.mq.fabric;
uses:="scala.reflect,
org.osgi.framework,
org.osgi.service.cm,
scala,
org.springframework.core.io,
org.springframework.beans.factory.xml,
org.apache.xbean.spring.context,
scala.runtime,
scala.collection,
scala.collection.mutable,
org.apache.activemq.broker,
org.fusesource.fabric.zookeeper,
org.apache.activemq.network,
org.apache.activemq.util,
org.slf4j,
org.apache.activemq.spring,
org.apache.xbean.spring.context.impl,
scala.collection.generic,
org.fusesource.fabric.groups,
scala.collection.immutable,
javax.jms,
org.apache.activemq,
org.springframework.context.support,
org.fusesource.fabric.groups.internal,
org.osgi.util.tracker,
org.springframework.beans.factory,
org.apache.activemq.transport.discovery,
org.apache.activemq.command,
org.codehaus.jackson.annotate,
org.fusesource.fabric.zookeeper.utils,
org.apache.zookeeper,
org.linkedin.util.clock,
org.fusesource.fabric.zookeeper.internal";
version=7.2.0.redhat-057
Cuando intento instalar mi aplicación usando los siguientes comandos:
client -r 2 -d 60 -u admin -p admin "addurl mvn:com.example/example.features/1.0-SNAPSHOT/xml/features"
client -r 2 -d 60 -u admin -p admin "features:install example-app"
Recibo el mensaje de error indicado anteriormente pero, como resultado, los paquetes AMQ parecen estar estropeados:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:headers 118"
activemq-karaf (118)
--------------------
Manifest-Version = 1.0
Bnd-LastModified = 1365188424349
Tool = Bnd-1.50.0
Built-By = mockbuild
Embed-Transitive = true
Implementation-Version = 5.8.0.redhat-60024
Build-Jdk = 1.6.0_24
Implementation-Title = Apache ActiveMQ
Created-By = Apache Maven Bundle Plugin
Bundle-Vendor = Red Hat, Inc.
Bundle-Name = activemq-karaf
Bundle-DocURL = http://redhat.com
Bundle-Description = Provides resources for running ActiveMQ in Apache Karaf
Bundle-SymbolicName = activemq-karaf
Bundle-Version = 5.8.0.redhat-60024
Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion = 2
Export-Service =
org.apache.felix.service.command.Function;
osgi.command.function=browse;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=bstat;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=purge;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=query;
osgi.command.scope=activemq,
org.apache.felix.service.command.Function;
osgi.command.function=list;
osgi.command.scope=activemq
Import-Package =
org.apache.activemq.console, <--- RED
org.apache.activemq.console.command, <--- RED
org.apache.activemq.console.formatter, <--- RED
org.apache.felix.gogo.commands;version="[0.11,1)",
org.apache.felix.gogo.commands.basic;version="[0.11,1)",
org.apache.felix.service.command;status=provisional;version="[0.11,1)",
org.apache.karaf.shell.console;version="[2.3,3)",
org.apache.karaf.shell.console.commands;version="[2.3,3)",
org.osgi.framework;version="[1.3,2)",
org.osgi.service.blueprint;version="[1.0.0,2.0.0)",
org.osgi.service.blueprint.container;version="[1.0,2)"
Export-Package =
org.apache.activemq.karaf.commands;
uses:="org.apache.felix.service.command,
org.apache.felix.gogo.commands.basic,
org.apache.felix.gogo.commands,
org.osgi.service.blueprint.container,
org.apache.karaf.shell.console.commands,
org.apache.karaf.shell.console,
org.osgi.framework,
org.apache.activemq.console.command,
org.apache.activemq.console.formatter,
org.apache.activemq.console";
version=5.8.0.redhat-60024
When I try and start it:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:start 118"
Error executing command: Error starting bundles:
Unable to start bundle 118: Unresolved constraint in bundle activemq-karaf [118]: Unable to resolve 118.0: missing requirement [118.0] osgi.wiring.package; (osgi.wiring.package=org.apache.activemq.console)
Lo mismo para el paquete JBoss AMQ:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:headers 128"
JBoss A-MQ Fabric (128)
-----------------------
Specification-Title = JBoss A-MQ Fabric
Tool = Bnd-1.15.0
Specification-Version = 6.0.0.redhat-057
Specification-Vendor = Red Hat
Embed-Dependency = !*
Implementation-Version = 6.0.0.redhat-057
Build-Jdk = 1.6.0_45
Implementation-Vendor-Id = org.jboss.amq
Created-By = Apache Maven Bundle Plugin
Implementation-Title = JBoss A-MQ Fabric
Manifest-Version = 1.0
Bnd-LastModified = 1385007431709
Built-By = hudson
Implementation-Vendor = Red Hat
Bundle-Vendor = Red Hat
Bundle-Activator = org.fusesource.mq.fabric.Activator
Bundle-Name = JBoss A-MQ Fabric
Bundle-DocURL = http://fabric.fusesource.org/
Bundle-Description = JBoss A-MQ Fabric
Bundle-SymbolicName = org.jboss.amq.mq-fabric
Bundle-Version = 6.0.0.redhat-057
Bundle-License = http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-ManifestVersion = 2
Export-Service =
javax.jms.ConnectionFactory
Import-Package =
javax.jms;version="[1.1,2)",
org.apache.activemq, <--- RED
org.apache.activemq.broker, <--- RED
org.apache.activemq.command, <--- RED
org.apache.activemq.network, <--- RED
org.apache.activemq.spring, <--- RED
org.apache.activemq.transport.discovery, <--- RED
org.apache.activemq.util, <--- RED
org.apache.xbean.spring.context;version="[3.12,4)",
org.apache.xbean.spring.context.impl;version="[3.12,4)",
org.apache.zookeeper;version="[3.4,4)",
org.codehaus.jackson.annotate;version="[1.9,2)",
org.fusesource.fabric.groups;version="[7.2,7.3)",
org.fusesource.fabric.groups.internal;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper.internal;version="[7.2,7.3)",
org.fusesource.fabric.zookeeper.utils;version="[7.2,7.3)",
org.linkedin.util.clock,
org.osgi.framework;version="[1.6,2)",
org.osgi.service.cm;version="[1.4,2)",
org.osgi.util.tracker;version="[1.5,2)",
org.slf4j;version="[1.6,2)",
org.springframework.beans.factory;version="[3,4)",
org.springframework.beans.factory.xml;version="[3,4)",
org.springframework.context.support;version="[3,4)",
org.springframework.core.io;version="[3,4)",
scala;version="[2.9,2.10]",
scala.collection;version="[2.9,2.10]",
scala.collection.generic;version="[2.9,2.10]",
scala.collection.immutable;version="[2.9,2.10]",
scala.collection.mutable;version="[2.9,2.10]",
scala.reflect;version="[2.9,2.10]",
scala.runtime;version="[2.9,2.10]"
Export-Package =
org.fusesource.mq.fabric;
uses:="scala.reflect,
org.osgi.framework,
org.osgi.service.cm,
scala,
org.springframework.core.io,
org.springframework.beans.factory.xml,
org.apache.xbean.spring.context,
scala.runtime,
scala.collection,
scala.collection.mutable,
org.apache.activemq.broker,
org.fusesource.fabric.zookeeper,
org.apache.activemq.network,
org.apache.activemq.util,
org.slf4j,
org.apache.activemq.spring,
org.apache.xbean.spring.context.impl,
scala.collection.generic,
org.fusesource.fabric.groups,
scala.collection.immutable,
javax.jms,
org.apache.activemq,
org.springframework.context.support,
org.fusesource.fabric.groups.internal,
org.osgi.util.tracker,
org.springframework.beans.factory,
org.apache.activemq.transport.discovery,
org.apache.activemq.command,
org.codehaus.jackson.annotate,
org.fusesource.fabric.zookeeper.utils,
org.apache.zookeeper,
org.linkedin.util.clock,
org.fusesource.fabric.zookeeper.internal";
version=7.2.0.redhat-057
Al iniciar los paquetes se produce el siguiente error:
[root@8cdbdd27720a home]# client -r 2 -d 60 -u admin -p admin "osgi:start 128"
Error executing command: Error starting bundles:
Unable to start bundle 128: Unresolved constraint in bundle org.jboss.amq.mq-fabric [128]: Unable to resolve 128.1: missing requirement [128.1] osgi.wiring.package; (osgi.wiring.package=org.apache.activemq)
¿Alguien sabe por qué ocurre esto? Por qué funciona cuando se hace manualmente pero falla como parte de la compilación de la ventana acoplable.