1

我尝试通过siddhi-io-jms 扩展将事件从 WSO2 SP 发送到 activeMQ ,但出现以下错误。连接到 JMS 提供程序时出错。获取初始上下文时出现 NamingException。 我已经按照这个文档支持 jms 传输https://docs.wso2.com/display/SP400/Supporting+Different+Transports,将所有必要的 jar 文件放到 lib 中,我也在 siddhi 应用程序factory.initial中正确设置了@sink和provider.url是正确的。任何想法,为什么SP无法连接到jms?

4

1 回答 1

1

根据 OSGi JNDI 规范,所有 InitialContextFactories 都应该作为 OSGi 服务公开。但是 activemq-client-5.xxjar 文件不包含 SPI,而是它们设置系统属性。这会在获取初始上下文时导致 NamingException。所以我们需要将这些 ICF 注册到 OSGi 环境。

为此,我们需要使用 SP_HOME/bin 中的 icf-provider.(sh|bat) 工具。这将向用户提供的 jar/bundle 添加一个 BundleActivator,它将根据 OSGi JNDI 规范注册用户提到的 ICF 实现。

例如

./icf-provider.sh org.apache.activemq.jndi.ActiveMQInitialContextFactory <Jar Directory/activemq-client-5.9.0.jar> <Destination>

参考https://github.com/wso2-extensions/siddhi-io-jms/

于 2018-03-28T06:23:25.147 回答