旧 OSGi 集成
本文适用于 5.4.0 之前的 ActiveMQ Classic 版本。如果您使用 5.4.0 或更高版本,请继续访问下一篇文章。
介绍
所有 ActiveMQ Classic 模块都打包为 OSGi 捆绑包,可以在任何 OSGi 容器中使用。本文将详细介绍如何在 Apache Karaf(小型基于 OSGi 的运行时)中使用 ActiveMQ Classic。Apache Karaf 以前被称为ServiceMix 内核,因此此处找到的信息也适用于 Apache ServiceMix 企业服务总线。
ActiveMQ Classic
ActiveMQ Classic 在 ServiceMix(Karaf)中作为一个功能提供。因此,您只需使用单个命令安装它,而无需逐个安装所有必要的捆绑包。但首先,您需要设置 ServiceMix 功能 URL。
smx@root:/> features/addUrl mvn:org.apache.servicemix/apache-servicemix/4.0.0/xml/features
现在,您可以像这样安装 ActiveMQ Classic
smx@root:/> features/install activemq
此命令将安装所有必要的 ActiveMQ Classic 捆绑包,如果您键入
smx@root:/> osgi/list
您应该看到类似于以下内容
[ 50] [Active ] [ ] [ 60] geronimo-jta\_1.1\_spec (1.1.1)
[ 51] [Active ] [ ] [ 60] geronimo-j2ee-connector\_1.5\_spec (2.0.0)
[ 52] [Active ] [ ] [ 60] Apache ServiceMix Bundles: howl-1.0.1-1 (1.0.1.1_1)
[ 53] [Active ] [ ] [ 60] Geronimo TxManager :: Transaction (2.2.0.r634076)
[ 54] [Active ] [ ] [ 60] Spring Transaction (2.5.6)
[ 55] [Active ] [Started] [ 60] Apache ServiceMix Transaction (1.0.0)
[ 56] [Active ] [ ] [ 60] Geronimo TxManager :: Connector (2.2.0.r634076)
[ 57] [Active ] [ ] [ 60] geronimo-jms\_1.1\_spec (1.1.1)
[ 58] [Active ] [ ] [ 60] Apache ServiceMix Bundles: jencks-2.1 (2.1.0.1)
[ 59] [Active ] [ ] [ 60] geronimo-j2ee-management\_1.1\_spec (1.0.1)
[ 60] [Active ] [ ] [ 60] Apache Commons Pool Bundle (1.4)
[ 61] [Active ] [ ] [ 60] xbean-spring (3.5)
[ 62] [Active ] [ ] [ 60] activemq-core (5.2.0)
[ 63] [Active ] [ ] [ 60] activemq-ra (5.2.0)
[ 64] [Active ] [ ] [ 60] activemq-console (5.2.0)
[ 65] [Active ] [ ] [ 60] activemq-pool (5.2.0)
[ 66] [Active ] [Started] [ 60] Apache ServiceMix Features :: ActiveMQ Commands (4.0.0)
安装后,此功能提供了一组特殊的命令,使您可以轻松地使用代理。
此功能预安装在 ServiceMix ESB 中,因此不需要执行之前的步骤。
以下示例演示了如何使用 create-broker
和 destroy-broker
命令创建和销毁代理。
smx@root:/> activemq/create-broker
Creating file: /Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml
在以下位置创建了默认 ActiveMQ 代理(localhost)配置文件:/Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml 请查看配置并根据您的需求进行修改。
smx@root:/> activemq/destroy-broker
在以下位置创建的默认 ActiveMQ 代理(localhost)配置文件:/Users/dejanb/workspace/apache-servicemix-kernel-1.1.0/deploy/localhost-broker.xml 已删除。
有关 ActiveMQ Classic 功能的更多信息,请参阅ServiceMix ActiveMQ Classic 集成指南
Web 控制台
Web 控制台 包含在 ActiveMQ Classic 发行版中,您可能希望使用它来监控您的代理。首先,您需要安装 web
功能,以便您拥有一个准备部署 Web 应用程序的 Web 容器。为此,您应该首先添加 ServiceMix 功能 URL,就像我们在上面所做的那样(如果您还没有这样做)。现在,您只需运行
smx@root:/> features/install web
来获取所有必要的捆绑包。如果您键入
smx@root:/> osgi/list
您将看到所有已安装的捆绑包(例如)
[ 43] [Active ] [ ] [ 60] Apache ServiceMix Bundles: jetty-6.1.14 (6.1.14.1)
[ 44] [Active ] [ ] [ 60] OPS4J Pax Web - Jsp Support (0.5.2)
[ 45] [Active ] [ ] [ 60] OPS4J Pax Web - Web Container (0.5.2)
[ 46] [Active ] [ ] [ 60] OPS4J Pax Web Extender - WAR (0.5.0)
[ 47] [Active ] [ ] [ 60] OPS4J Pax Web Extender - Whiteboard (0.5.0)
[ 48] [Active ] [ ] [ 60] OPS4J Pax Url - war:, war-i: (0.3.3)
[ 49] [Active ] [Started] [ 60] Apache ServiceMix WAR Deployer (4.0.0)
此功能预安装在 ServiceMix ESB 中,因此不需要执行之前的步骤。
重要的是,我们需要使用适当版本的 Pax Web 捆绑包来使所有这些工作,这些捆绑包是
- pax-web-bundle 版本 0.6.0
- pax-web-jsp 版本 0.6.0
- pax-web-ex-war 版本 0.5.1
- pax-web-ex-whiteboard 版本 0.5.1
因此,如果您有较旧的捆绑包(如示例中所示),您需要卸载它们并安装新的捆绑包。要卸载旧捆绑包,只需查看其 ID 并执行
smx@root:/> osgi/uninstall [id]
在本例中,它将是
smx@root:/> osgi/uninstall 44
smx@root:/> osgi/uninstall 45
smx@root:/> osgi/uninstall 46
smx@root:/> osgi/uninstall 47
现在安装新的捆绑包
smx@root:/> osgi/install mvn:org.ops4j.pax.web/pax-web-bundle/0.6.0
smx@root:/> osgi/install mvn:org.ops4j.pax.web/pax-web-jsp/0.6.0
smx@root:/> osgi/install mvn:org.ops4j.pax.web-extender/pax-web-ex-war/0.5.1
smx@root:/> osgi/install mvn:org.ops4j.pax.web-extender/pax-web-ex-whiteboard/0.5.1
安装成功后,您应该启动新添加的捆绑包。您可以通过执行以下操作来完成此操作
smx@root:/> osgi/start [id]
最好此时重启您的容器,之后我们终于可以部署我们的 war 文件了。为此,我们将使用 Pax Web War Extender。以下示例将使用最新的 5.3-SNAPSHOT
版本并将其部署在 OSGi 运行时中
smx@root:/> osgi/install war:mvn:org.apache.activemq/activemq-web-console/5.3-SNAPSHOT/war?Webapp-Context=activemqweb
您必须使用最新的 5.3-SNAPSHOT Web 控制台,因为这在以前的版本中无法正常工作。
此外,如果您使用之前的方法安装 war 文件时遇到问题,请从 https://repository.apache.org/content/repositories/snapshots/org/apache/activemq/activemq-web-console/5.3-SNAPSHOT/ 手动下载并使用以下命令安装
smx@root:/> osgi/install war:file:///path\_to\_the_war/activemq-web-console-5.3-SNAPSHOT.war?Webapp-Context=activemqweb
不幸的是,命令
osgi/install \
war:mvn:https://repository.apache.org/content/repositories/snapshots@snapshots!org.apache.activemq/activemq-web-console/5.3-SNAPSHOT/war?Webapp-Context=activemqweb
不适用于 pax web war extender 0.5.1,但如果您使用的是较新的版本,可以尝试它。
如果您执行
smx@root:/> osgi/list
您将在这里看到新添加的捆绑包。
[ 84] [Resolved ] [ ] [ 60] mvn\_org.apache.activemq\_activemq-web-console\_5.3-SNAPSHOT\_war (0)
现在该启动它了
smx@root:/> osgi/start 84
使用您的捆绑包的 ID
这里要注意的重要一点是,默认情况下,Web 控制台将启动一个嵌入式代理并对其进行监控。因此,如果您已经运行了代理,它将无法启动。
请注意,我们在部署 war 文件时使用了 activemqweb
作为 WebApp-Context
,因此控制台将在 https://127.0.0.1:8080/activemqweb 上可用。访问此 URL 并管理您的嵌入式代理。
您很可能不想监控嵌入式代理,而是您单独启动的代理(在 OSGi 运行时或其他地方)。要配置您的 Web 控制台来执行此操作,您需要执行以下操作。首先,退出您的 OSGi 运行时。现在,您可以编辑 etc/system.properties
文件并添加一些配置详细信息。以下配置片段
webconsole.type=properties
webconsole.jms.url=tcp://127.0.0.1:61616
webconsole.jmx.url=service:jmx:rmi:///jndi/rmi://127.0.0.1:1099/karaf-root
webconsole.jmx.user=karaf
webconsole.jmx.password=karaf
应该与在 Karaf(ServiceMix)中启动的默认代理一起正常工作。将其调整到您的具体需求。
现在,如果您运行运行时(以及控制台捆绑包),您将注意到控制台不会启动代理,而是会尝试使用系统属性定义的代理。
访问 https://127.0.0.1:8080/activemqweb 并尽情享受。