1

我需要在 Mule Studio 的 Ruby 中使用 openssl。Mule Studio 预装了 JRuby。我相信您知道,JRuby 不包含 openssl。我下载了 jruby-openssl gem 并将这些文件包含在我的 Mule 项目中。我可以要求这些文件,除了 jopenssl.jar。实际上我可以要求它,但它似乎没有做任何事情。我看到以下错误:

uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER

这当然是指OpenSSL::OPENSSL_VERSION_NUMBER.

只是为了好玩,我手动定义了它,但随后它不断发现越来越多的未初始化常量。我读过一些文章说使用 jruby-openssl 的唯一方法是解压缩并组合 jruby-complete.jar 和 jopenssl.jar。由于 Mule 使用的是自己的 JRuby 副本,所以这是不可行的,更不用说荒谬的组合了。

那么请问,有人知道如何在 Mule Studio 中使用 jruby-openssl 吗?(仅供参考,我对 Mule 和 JRuby 都是新手,但我很快就学会了不喜欢两者。)

附录

一点背景知识:我们需要使用 Mule 通过 FTPS 传输文件。由于不直接支持它,而且我们有一个现有的 Ruby 实现,我们决定将 Ruby 代码简单地移动到 Mule 中。但它需要openssl,这就是这个问题的开始。上面的require 'openssl'行是触发错误的原因。

以下是相关的 Mule/Ruby 代码:

<scripting:transformer name="SetData" doc:name="Set Data">
    <scripting:script engine="jruby">
        <scripting:text><![CDATA[
          require 'socket'
          require 'openssl'
          require 'net/ftp'
          require 'implicit_ftps'
          ...
        ]]></scripting:text>
    </scripting:script>
</scripting:transformer>

根据您的建议,我重建了 Mule 环境库,替换为包含 jopenssl.jar 的新 JRuby 版本。但是,我现在在运行我的应用程序时收到以下错误。据我所知,除了jruby-complete.jar,其他都没有改变。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/consolo/bin/MuleStudio/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule/boot/mule-module-logging-3.2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/consolo/bin/MuleStudio/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule/boot/mule-module-logging-3.2.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

更新

可悲的是,经过几天的努力,我的公司认为通过 Mule 支持 FTPS 是不值得的。

4

1 回答 1

1

Mule 中的脚本语言支持是可插入的,并通过符合 JSR-223 的提供程序实现。Mule CE 仅嵌入了 Groovy,即您必须将 JRuby 添加到 Mule,这将使您有机会选择实现目标所需的任何 JAR。

另一方面,Mule Studio 嵌入了额外的脚本提供程序,包括 JRuby。这很方便,但如果需要特定版本(这似乎是您的情况),可能会产生问题。

在 Studio 中,如果您打开 Mule Runtime 库,您会发现jruby-engine-1.1-jdk14.jarjruby-complete-1.0.jar。不幸的是 Studio 不允许修改这个库,所以你最好的选择是创建一个新的,选择/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule除 jRuby 之外的所有 JAR(在 中./user),然后添加你真正需要的。

于 2012-04-25T18:11:56.607 回答