1

実行時にサービスを作成するために@WebServiceをサポートするJVMベースのスクリプト言語はどれですか?Groovyを使用して、実行時に読み込まれるスクリプトで構成されたWebサービスを提供することを提案しました。

これを既存のインフラストラクチャで機能させるには、基本的に、に新しいエントリを追加できる必要がありList<Callable<String>>ます。その後、エグゼキュータにAnyを呼び出すように依頼できます。

基本的な構造は次のようになります。

  • Groovyはを使用して埋め込まれますGroovyScriptEngine
  • 渡されたバインディングで「l」としてJavaから渡された初期リスト。
  • Groovyスクリプトは、N個のオブジェクトを定義してインスタンス化し、すべてを実装Callable<String>してリストに追加します。
  • Javaに戻ると、リストはさらに処理され、エグゼキュータに渡されます。

私の最初の微妙な手順は、おそらく使用する必要があることを示していますdef c = { ... } as Callable<String>が、その後、ClassCastExceptionが発生します。読んでみると、これは少し難しいようで、閉鎖が含まれているようです。

実装するGroovyでオブジェクトを定義してインスタンス化する正しい方法は何Callable<String>ですか?

4

1 に答える 1

2

Groovy 1.8 以降では、デフォルトでgroovy.lang.Closure実装さCallableれているため、「as」マジックは必要ありません。単純に:

l << { "hello" }
l << { "world" }

Groovy の以前のバージョン (1.6 と 1.7 は確かに、「古い」バージョンについては不明) の場合は、次を使用する必要がありますas

import java.util.concurrent.Callable

l << ({ "hello" } as Callable)
于 2012-09-18T10:47:51.130 に答える