Java 使用CAR将自定义中介部署到WSO2 ESB
我正在尝试部署一个打包在Java 使用CAR将自定义中介部署到WSO2 ESB,java,maven,wso2esb,wso2carbon,Java,Maven,Wso2esb,Wso2carbon,我正在尝试部署一个打包在.car文件中的自定义类中介。关于这个问题的讨论不是很具体,也没有可用的例子 我所做的是: 编写了一个自定义类中介,如果作为.jar部署到$CARBON\u HOME/repository/components/lib/ 将上述JAR打包到.car,然后使用管理控制台手动上传到ESB 问题:服务器找不到中介的类: [2017-01-30 18:12:37,810] WARN - SynapseXMLConfigurationFactory Proxy Service c
.car
文件中的自定义类中介。关于这个问题的讨论不是很具体,也没有可用的例子
我所做的是:
.jar
部署到$CARBON\u 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没有接收到它。maven-car插件生成的artifact.xml
文件(顺便说一句,它完全没有文档):
ca-mediators-1.1.3-SNAPSHOT.jar
如何让ESB获取我的JAR中的类?关于扩展ESB的章节中描述了此问题:
当我们通过CAR文件发送中介器时,中介器只能被同一CAR文件中可用的工件(序列、代理服务、API)访问。调解器在全局范围内不可用
该解决方案在同一页中进一步提出:
- 编写一个序列,该序列使用类中介
- 从包含类中介的同一CAR文件打包序列
- 从其他工件调用序列
我试过了,结果成功了
<?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>