有没有人在树莓派 3 上安装了 Mule ESB 社区版本



我知道Mule ESB Enterprise Edition可以安装在Raspberry Pi上,因为它支持基于ARM的处理器。不幸的是,社区版没有它。这使得在 pi 上使用 Mule ESB 变得困难,因为我没有企业许可证(它适用于个人项目,企业试用期在 30 天内结束)。我想知道,为什么社区版没有这种支持?在 pi 上使用社区版有什么限制吗?是否可以将支持添加到社区版?有没有人做过并使用它?

是的,可以在Raspberry PI 3(以及任何armhf/armel机器)上安装和运行Mule。您必须调整安装以确保Mule使用Linux armhf 32位Java服务包装器(或相关的操作系统/体系结构包装器)。详细步骤:

安装骡子 CE

像在任何其他计算机上一样安装 Mule Independent:

  1. 下载 Mule CE 运行时
  2. 将内容解压缩到某处,例如在/opt/mule(即MULE_HOME=/opt/mule),并将内容的所有者更改为 Mule 用户(例如mule:mule)
  3. (可选)执行一些强化

您应该能够使用$MULE_HOME/bin/mule start|stop|restart运行 Mule

配置 Java 服务包装器

您需要手动为您的操作系统和处理器架构添加 Java Service Wrapper 支持,对于 Raspberry PI 3,它将是 Linux armhf 32 位。

  1. 下载Linux armhf 32-bitCommunity Tanuki Java Service Wrapper 并解压缩
  2. 将 Wrapper lib/libwrapper.so 复制到$MULE_HOME/lib/boot/libwrapper-linux-armhf-32.so,确保它具有读取 + 执行权限并且是 Mule 用户拥有的
  3. 将 Wrapper lib/wrapper.jar
  4. 复制到$MULE_HOME/lib/boot/wrapper-{version}.jar(将 {version} 替换为您的包装器版本),确保它是 Mule 用户拥有的,并删除或备份以前的包装器-{oldVersion}.jar
  5. 将包装箱/包装器复制到$MULE_HOME/lib/boot/exec/wrapper-linux-armhf-32,确保它具有读取+执行权限并且是 Mule 用户拥有的
  6. 这个有点棘手,你必须更新$MULE_HOME/bin/mule启动脚本。查找case "$PROC_ARCH" in行,如:

    'x86_64') DIST_ARCH="x86" DIST_BITS="64" break;; 每个案例都匹配特定的硬件名称来定义DIST_ARCH和DIST_BITS变量,从而允许使用正确的包装器文件。添加一个新案例来处理您的树莓派硬件。对于Raspberry 3,它应该是类似于armv71(如果需要,请与uname -m核实):

    'armv71') DIST_ARCH="armhf" DIST_BITS="32" break;;

  7. 您可能需要更新$MULE_HOME/conf/wrapper.conf以避免与内存相关的问题。我通常必须使用以下属性:

    wrapper.java.initmemory=512 wrapper.java.maxmemory=512 wrapper.java.additional.X=-XX:PermSize=256m wrapper.java.additional.Y=-XX:MaxPermSize=256m wrapper.java.additional.Z=-XX:NewSize=512m wrapper.java.additional.V=-XX:MaxNewSize=512m

当 Mule 将在armv71硬件上运行时,它现在将使用wrapper-{OS}-{DIST_ARCH}-{DIST_BITS},在我们的例子中是wrapper-linux-armhf-32.您应该能够像往常一样运行 Mule - 检查日志中是否有启动时出现任何错误。

此方法已在 Mule CE 3.7 和 3.8 的 Raspberry PI 2 和 3 中进行了测试(它应该适用于以前的版本)。这可能有点棘手,如果您有任何问题发表评论,我将更新这篇文章以添加详细信息。

顺便说一下,此方法可用于添加对任何体系结构和操作系统的支持,只要 Java Service Wrapper 支持它。

我想知道,为什么社区版没有这种支持?

我不知道,Mule CE根本不支持ARM架构 - 目前。CE 仅支持有限的平台和体系结构列表(即启动脚本过滤体系结构类型)。也许他们只是没有花时间(~金钱)来添加支持,或者他们故意阻止ARM支持以支持Mule EE。考虑到 Mule CE 是开源的,理论上有人可以贡献来添加这样的支持......(只是说! :)

最新更新