【问题标题】:Siddhi Error connecting to JMS provider连接到 JMS 提供程序的 Siddhi 错误
【发布时间】:2018-05-03 22:51:42
【问题描述】:

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

【问题讨论】:

    标签: wso2 siddhi wso2sp


    【解决方案1】:

    根据 OSGi JNDI 规范,所有 InitialContextFactories 都应该作为 OSGi 服务公开。但是 activemq-client-5.x.x.jar 文件不包含 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/

    【讨论】:

    • 感谢您的回复。我尝试使用 icf-provider 工具,但它什么也没做。终端上没有消息,目标文件夹中没有包。我使用了 windows 的命令。
    • Windows 环境下的 icf-provider 似乎存在未解决问题#1599
    • 我试图编辑 icf-provider 的 bat 文件,所以我从 java -cp 命令中删除了 -Dcarbon.home="%CARBON_HOME" 属性,但是现在它正在运行CustomBundleActivator.java 中存在错误,例如 包 org.osgi.framework 不存在 或 方法未覆盖或实现超类型中的方法。
    • 现在我将 carbon.home 属性返回到 bat 文件,但是将 -Dcarbon.home="%CARBON_HOME" 更改为 -Dcarbon.home=%CARBON_HOME% (删除引号,添加百分比字符)。现在出现以下错误:** java.lang.IllegalArgumentException: Illegal character in opaque part at index 11**
    • 最后我解决了这个问题。 bat 文件和 java 代码不好,所以我更改它们并测试。现在它正在工作。这里 -> github.com/wso2/carbon-kernel/issues/1599 我复制了我的解决方案。
    猜你喜欢
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2015-05-25
    • 2017-11-24
    相关资源
    最近更新 更多