1

哪种基于 JVM 的脚本语言支持 @WebService 在运行时创建服务?有人建议我使用 Groovy 提供在运行时读取的脚本中配置的 Web 服务。

为了使这项工作与我们现有的基础设施一起工作,我基本上需要能够向 a 添加新条目,List<Callable<String>>然后我可以要求执行者在其上调用任何内容。

基本结构将类似于:

  • 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 回答