我正在向JBoss Fuse / Apache Camel部署osgi应用程序,javascript语言不想解析。
此错误出现在日志中:
ERROR | BluePrinntContainerImpl | Bundle my-service is waiting for dependencies
[(&(language=js)(objectClass=org.apache.camel.spi.LanguageResolver))]
我最近在.javaScript()
语句中添加了.choice()
表达式定义:
.choice()
.when()
.javaScript("request.body.updateSeq > exchange.getProperty('PrevUpdateSeq') + 1")
.to("dosomething")
的Maven:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-script</artifactId>
<version>${camel.version}</version>
</dependency>
其中camel版本为2.10.0.redhat-60024
。
有没有办法解决这个问题?
答案 0 :(得分:0)
您已安装了这些功能
features:install camel-script
并且可能有一个特殊的javascript命名的东西:
features:install camel-script-javascript
答案 1 :(得分:0)
问题是由于没有注册javascript语言。
我修改了一些我在servicemix nabble上找到的代码,以确保javascript引擎已注册并且具有密钥(语言名称)js
而不是ECMAScript
。
同样适用于groovy
(而不是Groovy
),但请注意:此部分未经测试。
如何解决:
从this page复制Activator
代码,并将其添加为项目中的新类。
修改register()
中的BundleLanguageResolver
方法,如下所示:
public void register() {
try
{
String language = factory.getLanguageName();
// Hack to register languages correctly
if ("ECMAScript".equals(language)) language = "js";
if ("Groovy".equals(language)) language = "groovy";
Hashtable<String, Object> properties =
new Hashtable<String, Object>();
properties.put("language", language);
reg = bundle.getBundleContext().registerService(
LanguageResolver.class,
new ScriptLanguageResolver(), properties);
LOG.debug("Register LanguageResolver: " + language);
} catch(Exception e)
{
LOG.warn("Cannot register LanguageResolver: " + e.getClass().getName(), e);
}
}
将您刚创建的课程(例如com.my.Activator
)作为Bundle-Activator
添加到联系人。 maven-bundle-plugin行看起来像这样:
<Bundle-Activator>com.my.Activator</Bundle-Activator>
也许还有另一种解决方案,但与此同时,这对我有用。
答案 2 :(得分:0)
暂时(我正在使用Camel 2.16.5)添加google的scriptengine作为依赖可以解决问题:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-script</artifactId>
<version>${camel.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.scriptengines</groupId>
<artifactId>scriptengines-javascript</artifactId>
<version>1.1.1</version>
</dependency>