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 をサポートする価値はないと判断しました。