我正在尝试部署一个打包在.car
文件中的自定义类调解器。关于这个问题的WSO2 documentation不是很具体,没有可用的例子。
我所做的是:
.jar
到$CARBON_HOME/repository/components/lib/
.car
,然后使用管理控制台将其手动上传到ESB。问题:服务器无法找到调解器的类:
[2017-01-30 18:12:37,810] WARN - SynapseXMLConfigurationFactory Proxy Service configuration: test cannot be built - Continue in fail-safe mode
org.apache.synapse.SynapseException: Error loading class : nl.my.mediators.HashMediator - Class not found
at org.apache.synapse.config.xml.ClassMediatorFactory.createSpecificMediator(ClassMediatorFactory.java:107)
at org.apache.synapse.config.xml.AbstractMediatorFactory.createMediator(AbstractMediatorFactory.java:94)
...
.car
文件确实包含有问题的.jar
:
Archive: mediators-v1_1_1.1.3-SNAPSHOT.car
Length Date Time Name
--------- ---------- ----- ----
...
0 2017-01-30 18:07 ca-mediators_1.1.3-SNAPSHOT/
5399 2017-01-30 18:07 ca-mediators_1.1.3-SNAPSHOT/ca-mediators-1.1.3-SNAPSHOT.jar
257 2017-01-30 18:07 ca-mediators_1.1.3-SNAPSHOT/artifact.xml
...
但是,显然,它并没有得到ESB的认可。 artifact.xml
生成的maven-car-plugin
文件(完全缺少文档):
<?xml version="1.0" encoding="UTF-8"?><artifact name="ca-mediators" version="1.1.3-SNAPSHOT" type="lib/library/bundle" serverRole="EnterpriseServiceBus">
<file>ca-mediators-1.1.3-SNAPSHOT.jar</file>
</artifact>
如何让ESB获取我的JAR中的类?
答案 0 :(得分:1)
有关扩展ESB的WSO2 documentation中描述了此问题:
当我们通过CAR文件发送介体时,介体只能访问同一CAR文件中可用的工件(序列,代理服务,API)。调解员不在全球范围内。
该解决方案在同一页面上进一步提出:
我试过了,结果很好。