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 に答える