[英]JBoss Fuse / Apache camel won't resolve language js (javascript) for bundle
我正在將osgi應用程序部署到JBoss Fuse / Apache Camel,並且javascript語言不想解析。
該錯誤出現在日志中:
ERROR | BluePrinntContainerImpl | Bundle my-service is waiting for dependencies
[(&(language=js)(objectClass=org.apache.camel.spi.LanguageResolver))]
我最近在.choice()
語句中添加了.javaScript()
表達式定義:
.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>
其中駱駝版本是2.10.0.redhat-60024
。
有沒有辦法解決這個問題?
並且您已經安裝了功能
features:install camel-script
對於javascript,可能有一種特殊的命名方式,類似於:
features:install camel-script-javascript
問題是由於未注冊JavaScript語言。
我修改了一些在servicemix nabble上找到的代碼,以確保JavaScript引擎已注冊並且具有鍵(語言名稱) js
而不是ECMAScript
。
groovy
(而不是Groovy
)也是如此,盡管請注意:這部分未經測試。
怎么修:
從此頁面復制Activator
代碼,並將其作為新類添加到您的項目中。
修改BundleLanguageResolver
的register()
方法,如下所示:
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>
也許還有另一種解決方案,但與此同時這對我有用。
暫時(我正在使用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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.