0

我试着描述我的问题。以下配置:

  1. 在 Servicemix 上,我有两个捆绑包:一个带有模型,第二个带有服务。模型包导出模型包,服务包从模型包中导入模型包。
  2. 在服务包中,我有具有一种服务方法的 Web 服务 (CXF):执行。此方法使用两个参数:第一个(String)是 javascript 文件的名称,第二个是参数的映射(HashMap)。该服务使用 javax.scipt.CompiledScript.eval(Bindings bindings) 执行 javascript 脚本。这个想法是在脚本语言中拥有业务逻辑。
  3. javascript 脚本可以通过以下方式访问 Java 对象:

a/ 绑定 - 没有问题。我在脚本中看到我使用 bindings.put(name, object) 添加的所有对象的实例

b/ importPackage(Packages.my.java.package.from.model.bundle) - 现在我遇到了问题:当我尝试使用关键字“new”从模型包中创建 javascript Java 对象时,我收到以下错误:

com.google.code.scriptengines.js.util.ExtendedScriptException 类:org.mozilla.javascript.EcmaError:ReferenceError:“产品”未定义。(#4) 在文件中的 [4]

其中 Product 是模型包中的我的 Java 类,在第 4 行中,我尝试使用以下命令创建此对象:

var product = new Product();

而且,我认为,非常重要的信息:Servicemix 4.2.0 中的一切都很好。现在我必须升级到 4.3.1 并且不起作用(两个版本都来自 Fusesource)

有什么帮助吗?

问候, 雅克

4

1 回答 1

0

似乎脚本引擎包对您的产品包没有包可见性。

您可以尝试使用脚本引擎在捆绑包上启用动态导入

list | grep -i javascript

然后找到带有引擎的捆绑包的捆绑包ID,例如

然后使用

dev:dynamic-import  ID of that bundle

如果更改未被采纳,您可能需要重新启动 ESB。

于 2013-05-12T07:11:34.843 回答