我需要在Mule Studio的Ruby中使用openssl。Mule是用JRuby预先打包的。我相信您知道,JRuby不包括openssl。我下载了,并将这些文件包含在我的Mule项目中。我可以要求文件,除了jopenssl.jar。事实上,我可以要求,但它似乎什么也做不了。我看到以下错误:
uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER这当然是指OpenSSL::OPENSSL_VERSION_NUMBER。
只是为了好玩,我手动定义了它,但是它一直在寻找越来越多的未初始化常量。我读过一些文章,指出使用jruby的唯一方法是解压缩并合并jruby-complete.jar和jopenssl.jar。由于Mule正在使用自己的JRuby副本,这是不可行的,更不用说荒谬的传说了。
那么,有人知道如何在Mule Studio中使用吗?(我对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环境库,替换了一个新的JRuby版本,其中包含了jopenssl.jar。但是,在运行我的应用程序时,我现在收到了以下错误。据我所知,除了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是不值得的。
发布于 2012-04-25 18:11:56
Mule中的脚本语言支持是可插拔的,并通过JSR-223兼容的提供者实现.Mule只嵌入Groovy,即必须将添加JRuby嵌入到Mule,这将给您选择实现目标所需的任何JAR(s)的机会。
另一方面,Mule Studio嵌入了额外的脚本提供程序,包括JRuby。这很方便,但如果需要特定版本(这似乎是您的情况),则可能会产生问题。
在Studio中,如果打开Mule运行时库,就会发现jruby 1.1-jdk14.jar和JRuby-Comple-1.0.jar。不幸的是,Studio不允许修改这个库,所以最好的选择是创建一个新的库,选择/plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule下的所有JAR(./user中的JAR除外),然后添加真正需要的JAR。
https://stackoverflow.com/questions/10308951
复制相似问题