2012-04-25 2 views
1

Mule Studio의 Ruby에서 openssl을 사용해야합니다. Mule Studio에는 JRuby가 미리 패키지되어 있습니다. 아시다시피, JRuby에는 openssl이 포함되어 있지 않습니다. jruby-openssl gem을 다운로드하고 내 Mule 프로젝트에 파일을 포함 시켰습니다. jopenssl.jar을 제외한 모든 파일을 요구할 수 있습니다. 사실 나는 수 있습니다 필요하지만, 아무것도하지 않는 것.Mule Studio에서 jruby-openssl 사용하기

uninitialized constant OpenSSL::Digest::OPENSSL_VERSION_NUMBER 

이것은 OpenSSL::OPENSSL_VERSION_NUMBER를 참조 물론입니다 : 나는 다음과 같은 오류를 참조하십시오.

그냥 재미있게 수동으로 정의했지만 더 많은 초기화되지 않은 상수를 계속 찾아 냈습니다. jruby-openssl을 사용하는 유일한 방법은 jruby-complete.jar와 jopenssl.jar의 압축을 풀고 결합하는 것입니다. Mule은 JRuby의 자체 복사본을 사용하기 때문에, 말도 안되는 kludge는 말할 것도 없습니다.

아무쪼록 Mule Studio에서 jruby-openssl을 사용하는 방법을 알고 있습니까? (참고로 나는 노새와 JRuby를 모두 새로운,하지만 빨리 모두를 싫어하는 배우고 있어요.)

부록

배경 비트 : 우리는 뮬와 FTPS를 통해 파일을 전송해야합니다. 직접 지원되지는 않으며 기존 Ruby 구현이 있으므로 루비 코드를 Mule로 옮기기로 결정했습니다. 그러나이 문제가 시작된 곳인 openssl이 필요합니다. 위의 require 'openssl' 행은 오류를 유발하는 것입니다.

가 여기에 해당 뮬/루비 코드 : 귀하의 제안에서

<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> 

, 나는 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. 

업데이트 낭비 노력의 일, 우리 회사는 노새를 통해 FTPS를 지원하는 것은 가치가 아니라고 결정했다 슬프게도 후

.

+0

아래에서 제 대답을 넘어서서 문제를 조사하는 데 도움이되고 싶습니다. 문제를 재현하기에 충분한 Mule 설정/Ruby 코드를 공유 할 수 있었습니까? –

+0

감사합니다. 초기 질문에 더 많은 정보를 추가했습니다.더 많은 정보가 필요하면 알려주세요. – bioneuralnet

+0

mule-module-logging-3.2.1.jar가 프로젝트 빌드 경로에 두 번 추가 될 수 있습니까? SLF4J 경고 외에도 JRuby 코드가 작동합니까? –

답변

1

Mule의 스크립팅 언어 지원은 플러그 가능하며 JSR-223 호환 제공 업체를 통해 구현됩니다. Mule CE는 Groovy 만 임베드합니다. 즉, 목표를 달성하는 데 필요한 JAR을 선택하는 기회를 줄 수있는 Mule에게 add JRuby을 가져야합니다.

한편, Mule Studio에는 JRuby를 비롯한 추가 스크립팅 제공 업체가 내장되어 있습니다. 이것은 편리하지만 특정 버전이 필요한 경우 문제가 발생할 수 있습니다 (귀하의 경우). 당신은 뮬 런타임 라이브러리를 열 경우, 당신은 JRuby를-엔진 1.1 jdk14.jarJRuby를 완성-1.0.jar을 찾을 수 있습니다 Studio에서

. 안타깝게도 Studio에서는이 라이브러리를 수정할 수 없기 때문에 가장 좋은 옵션은 새 라이브러리를 만들고, 에있는 jRuby 파일을 제외하고 /plugins/org.mule.tooling.server.3.2.1_1.0.0.201201200937/mule 아래의 모든 JAR 파일을 선택한 다음 정말로 필요한 파일을 추가하는 것입니다.