来自其他包的包中的Javascript和类

时间:2013-04-03 07:39:18

标签: javascript apache-servicemix jsr223

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

  1. 在Servicemix上我有两个捆绑包:一个包含模型,第二个包含服务。模型包导出模型包,服务包从模型包导入模型包。
  2. 在服务包中,我有一个服务方法的Web服务(CXF):执行。此方法使用两个参数:第一个(String)是javascript文件的名称,第二个是参数的映射(HashMap)。该服务使用javax.scipt.CompiledScript.eval(Bindings绑定)执行javascript脚本。我们的想法是用脚本语言创建业务逻辑。
  3. javascript脚本可以通过以下方式访问Java对象:
  4. a / bindings - 没有问题。我在脚本中看到了我使用bindings.put(name,object)

    添加的所有对象实例

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

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

    其中Product是我的Java类,来自模型包,第4行,我尝试使用:

    创建此对象
    var product = new Product();
    

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

    任何帮助?

    此致 亚切克

1 个答案:

答案 0 :(得分:0)

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

您可以尝试使用脚本引擎

在捆绑包上启用动态导入
list | grep -i javascript

然后找到包含引擎的包的包ID,例如

然后使用

dev:dynamic-import  ID of that bundle

如果没有接收到更改,您可能需要重新启动ESB。