【问题标题】:The script mediator error in WSO2AM 1.5WSO2AM 1.5 中的脚本中介错误
【发布时间】:2014-03-25 12:31:13
【问题描述】:

我尝试添加一个包含 java 脚本中介的序列,如下所示:

"<sequence name="response">
    <script language="js">
        mc.setPayloadXML(
        &lt;greeting&gt;Hello World&lt;/greeting&gt;
        );
    </script>
    <header name="To" action="remove"/>
    <property name="messageType" value="application/json" scope="axis2"/>       
    <property name="NO_ENTITY_BODY" scope="axis2" action="remove"/>
    <property name="RESPONSE" value="true"/>
    <send/>
    <log level="full"/>
</sequence>"

*但是,一旦我按下更新按钮就会发生错误,整个函数堆栈都显示在日志中,我检查了 jar "bsf-all,3.0.0.wso2v2" 它确实包含缺少类,jar 显示在捆绑信息“bsf-all,3.0.0.wso2v2,../plugins/bsf-all_3.0.0.wso2v2.jar,4,true”中:* "com/sun/phobos/script/javascript/RhinoScriptEngineFactory {org.apache.axis2.rpc.receivers.RPCMessageReceiver} java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 ...... 原因:java.lang.NoClassDefFoundError: com/sun/phobos/script/javascript/RhinoScriptEngineFactory 在 org.apache.synapse.mediators.bsf.ScriptMediator.initScriptEngine(ScriptMediator.java:475) 在 org.apache.synapse.mediators.bsf.ScriptMediator.initInlineScript(ScriptMediator.java:341) 在 org.apache.synapse.mediators.bsf.ScriptMediator.(ScriptMediator.java:146) 在 org.apache.synapse.mediators.bsf.ScriptMediatorFactory.createSpecificMediator(ScriptMediatorFactory.java:105) 在 org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:91) 在 org.apache.synapse.config.xml.MediatorFactoryFinder.getMediator(MediatorFactoryFinder.java:223) 在 org.apache.synapse.config.xml.AbstractListMediatorFactory.addChildren(AbstractListMediatorFactory.java:41) 在 org.apache.synapse.config.xml.SequenceMediatorFactory.createSpecificMediator(SequenceMediatorFactory.java:87) 在 org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:91) 在 org.wso2.carbon.mediation.configadmin.ConfigurationValidator.validateSequence(ConfigurationValidator.java:90) 在 org.wso2.carbon.mediation.configadmin.ConfigurationValidator.validate(ConfigurationValidator.java:73) 在 org.wso2.carbon.mediation.configadmin.ConfigAdmin.validateConfiguration(ConfigAdmin.java:180) ... 61 更多 原因:java.lang.ClassNotFoundException: com.sun.phobos.script.javascript.RhinoScriptEngineFactory 在 org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421) 在 org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412) atorg.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoa .. 在 java.lang.ClassLoader.loadClass(ClassLoader.java:248) ... 73 更多”

我查找了关于你给其他人https://wso2.org/jira/browse/ESBJAVA-1685的相同问题的解决方案,但它没有生效。我在谷歌搜索了很长时间,有人说错误已经修复或者设置时OSGI Frame有问题,但是其他人有同样的问题我仍然坚持,所以请给我们一个关于如何在WSO2 AM 1.5中使用脚本中介的完整解决方案,tks很多!

【问题讨论】:

    标签: wso2 mediator


    【解决方案1】:

    我们用来提供脚本引擎的 bsf jar 存在问题。作为替代方法,您可以使用丰富/有效负载工厂中介来完成上述任务

    【讨论】:

    • 您是否尝试解决 AM 中的问题?这在你的工作计划中吗?我尝试使用 WSO2 ESB 4.8.1 。可以成功添加脚本中介,所以导致错误的原因一定隐藏在ESB和AM之间的差异中。请看一下,tks,希望很快能看到你的答案。
    • 是的,我们将在即将发布的版本中修复此问题
    • 我想问另一个问题?除了“mc.getPayloadXML”之外,如果我想从消息体中提取信息,可以使用什么。
    • 您可以使用丰富的冥想者通过 xpath "$body" 访问消息正文
    • sorg.apache.synapse.mediators.elementary.EnrichMediator 是调解员吧?而且xpath似乎只能处理xml消息,所以如果content-type不是xml,我需要先传输消息吗?可以举个例子吗?
    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多