在Mule Studio中使用jruby openssl

在Mule Studio中使用jruby openssl,ruby,openssl,jruby,mule,jsr223,Ruby,Openssl,Jruby,Mule,Jsr223,我需要在Mule Studio的Ruby中使用openssl。Mule Studio预装有JRuby。我相信您知道,JRuby不包括openssl。我下载了jruby openssl gem,并将这些文件包含在我的Mule项目中。我可以要求这些文件,除了jopenssl.jar。事实上,我可以要求它,但它似乎没有任何作用。我看到以下错误: uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER 这当然是指OpenSSL::O

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

uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER
这当然是指
OpenSSL::OpenSSL\u版本号

只是为了好玩,我手动定义了它,但是它不断地发现越来越多的未初始化常量。我读过一些文章说,使用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支持FTP是不值得的。

Mule中的脚本语言支持是可插入的,并通过符合JSR-223的提供商实现。Mule CE只嵌入Groovy,即您必须使用Mule,这将使您有机会选择实现目标所需的任何罐子

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


在Studio中,如果打开Mule运行时库,您将找到jruby-engine-1.1-jdk14.jar和jruby-complete-1.0.jar。不幸的是,Studio不允许修改此库,因此您最好的选择是创建一个新库,在
/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule
下选择所有jar,但jRuby除外(在
/user
)然后添加您真正需要的脚本语言。

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

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


在Studio中,如果打开Mule运行时库,您将找到jruby-engine-1.1-jdk14.jar和jruby-complete-1.0.jar。不幸的是,Studio不允许修改此库,因此您最好的选择是创建一个新库,在
/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule
下选择所有jar,但jRuby除外(在
/user
)然后添加您真正需要的内容。

我想超越下面的答案,帮助您调查这个问题。请分享足够的Mule-config/Ruby代码来重现这个问题好吗?谢谢。我在最初的问题中添加了更多信息。如果您需要更多信息,请告诉我。是否可能在项目构建路径上添加了两次mule-module-logging-3.2.1.jar?除了SLF4J警告之外,JRuby代码现在还在工作吗?我只看到1。如果我删除它,错误将变为线程“main”java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory中的
Exception,它将消失。在SLF4J警告下面,我刚刚注意到一个异常:
线程“main”中的Exceptionjava.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory位于org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194)
<代码>原因:org.springframework.beans.factory.support.DefaultListableBeanFactory上的java.lang.NullPointerException(DefaultListableBeanFactory.java:104)
。所以我还不能测试Ruby代码。我想超越下面的答案,帮助您调查这个问题。请分享足够的Mule-config/Ruby代码来重现这个问题好吗?谢谢。我在最初的问题中添加了更多信息。如果您需要更多信息,请告诉我。是否可能在项目构建路径上添加了两次mule-module-logging-3.2.1.jar?除了SLF4J警告之外,JRuby代码现在还在工作吗?我只看到1。如果我删除它,错误将变为线程“main”java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory中的
Exception,它将消失。在SLF4J警告下面,我刚刚注意到一个异常:
线程“main”中的Exceptionjava.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory位于org.springframework.context.support.AbstractRefreshableApplicationContext.createBeanFactory(AbstractRefreshableApplicationContext.java:194)
<代码>原因:org.springframework.beans.factory.support.DefaultListableBeanFactory上的java.lang.NullPointerException(DefaultListableBeanFactory.java:104)
。所以我还不能测试Ruby代码。
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.