2016-12-13 9 views
0

私はWSO2 ESBローカルレジストリに格納しているGroovyスクリプトを実行しようとしています。私は、スクリプトメディエーターでインラインコードを配置した場合WSO2 ESBレジストリに格納されたGroovyスクリプトを実行できません

 
ERROR {org.apache.synapse.mediators.bsf.ScriptMediator} - The script engine returned a NoSuchMethodException executing the external groovy script : Value {name ='null', keyValue ='file:Scripts/Groovy/test.groovy'} function mediate {org.apache.synapse.mediators.bsf.ScriptMediator} 
java.lang.NoSuchMethodException: No signature of method: com.sun.script.groovy.GroovyScriptEngine.mediate() is applicable for argument types: (org.apache.synapse.mediators.bsf.ScriptMessageContext) values: [[email protected]] 
Possible solutions: wait() 

は、すべてがOK実行されています。私は、私は次のエラーを取得していますことを行うと メディエーションのためのRubyスクリプトの使用例に示すように、<x><![CDATA[...code...]]></x>のようなスクリプトコードをラップしようとしました。 Sample 353: Using Ruby Scripts for Mediationです。 groovy-all-2.4.7.jarESB_HOME \ repository \ components \ libも追加します。

レジストリに格納されているGroovyスクリプトを実行するにはどうすればよいですか?私は間違って何をしていますか?

ここ

はGroovyのスクリプトと私はテストしていますプロキシ、wihtです:5.0.0は

のGroovyスクリプト

class Example { 
    static def DisplayName() { 
     println("This is how methods work in groovy"); 
     println("This is an example of a simple method"); 
    } 

    static void main(String[] args) { 
     DisplayName(); 
    } 
} 

プロキシサービス

<proxy name="TestScriptProxy" startOnLoad="true" trace="disable" 
    transports="http https" xmlns="http://ws.apache.org/ns/synapse"> 
    <target> 
    <inSequence> 
     <script language="groovy"><![CDATA[println "This is an in-line script";]]></script> 
     <script function="DisplayName" 
     key="file:Scripts/Groovy/test.groovy" language="groovy"/> 
    </inSequence> 
    <outSequence/> 
    <faultSequence/> 
    </target> 
</proxy> 

ESBバージョンで実行されていますWindows 10.

答えて

2

レジストリにGroovyスクリプトがある場合、ソースは次のようになります。レジストリパス。例:gov:scripts/Groovy/test.groovy

ファイルを参照している場合は、パスをESB_HOMEに相対的に指定します。 scriptsフォルダがESB_HOMEディレクトリにある場合たとえば、file:scripts/Groovy/test.groovy

まず負荷以下のようにスクリプトファイル:

<localEntry key="DisplayNameScript" src="file:scripts/Groovy/test.groovy"/> 

は今

<script language="groovy" key="DisplayNameScript" function="DisplayName"/> 
関数を呼び出します
関連する問題