【问题标题】:Solace to WSO2 CEP Exception when connecting via input and builder通过输入和构建器连接时对 WSO2 CEP 异常的安慰
【发布时间】:2015-11-24 02:09:39
【问题描述】:

当我尝试通过 JMS 连接到慰藉盒并执行 jndi 查找时,出现以下异常:

线程“Thread-33”中的异常 org.wso2.carbon.event.input.adaptor.core.exception.InputEventAdaptorEventProcessingException: 无法获取 JNDI 上下文,JMS 连接工厂:poc_jndi_name7 或默认目标:JMS CF 为 null:StrataTestInputEvent 使用 : {java.naming.provider.url=tcp://10.250.242.89:55555, java.naming.factory.initial=com.solacesystems.jndi.SolJNDIInitialContextFactory, transport.jms.DestinationType=主题, transport.jms.SubscriptionDurable=false, transport.jms.ConnectionFactoryJNDIName=poc_jndi_name7} 在 org.wso2.carbon.event.input.adaptor.jms.internal.util.JMSConnectionFactory.(JMSConnectionFactory.java:102) 在 org.wso2.carbon.event.input.adaptor.jms.JMSEventAdaptorType.createJMSAdaptorListener(JMSEventAdaptorType.java:303) 在 org.wso2.carbon.event.input.adaptor.jms.JMSEventAdaptorType.tryStartAdaptor(JMSEventAdaptorType.java:262) 在 org.wso2.carbon.event.input.adaptor.jms.internal.ds.JMSEventAdaptorServiceHolder.loadLateStartEventAdaptors(JMSEventAdaptorServiceHolder.java:66) 在 org.wso2.carbon.event.input.adaptor.jms.internal.ds.JMSEventAdaptorServiceHolder$1.run(JMSEventAdaptorServiceHolder.java:43) 在 java.lang.Thread.run(Thread.java:745) 引起:javax.naming.NamingException:JNDI 查找失败 - 401:不完整 认证配置 在 com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.lookup(SolJNDIInitialContextFactory.java:210) 在 javax.naming.InitialContext.lookup(InitialContext.java:411) 在 javax.naming.InitialContext.lookup(InitialContext.java:411) 在 org.wso2.carbon.event.input.adaptor.jms.internal.util.JMSUtils.lookup(JMSUtils.java:350) 在 org.wso2.carbon.event.input.adaptor.jms.internal.util.JMSConnectionFactory.(JMSConnectionFactory.java:93) ... 5 更多

我必须在启动脚本中指定 java.naming.security 参数(主体和凭据),因为我的安慰框需要它们用于输入 jndi 查找,并且无法在工具中指定它们(无论是xml 或 gui)。如果我尝试在 xml 中指定它们,当我尝试通过管理控制台保存 xml 时会出现错误。

这是我的配置:

<?xml version="1.0" encoding="UTF-8"?>
<inputEventAdaptor name="StrataTestInputEvent" statistics="disable"
  trace="disable" type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
  <property name="java.naming.provider.url">tcp://10.250.242.89:55555</property>
  <property name="transport.jms.SubscriptionDurable">false</property>
  <property name="java.naming.factory.initial">com.solacesystems.jndi.SolJNDIInitialContextFactory</property>
  <property name="transport.jms.ConnectionFactoryJNDIName">poc_jndi_name7</property>
  <property name="transport.jms.DestinationType">topic</property>
</inputEventAdaptor>

这个部署很好......但如果我指定: 姓名 我得到: 更新事件适配器失败,异常:java.naming.security.principal 不是此输入事件适配器类型的有效属性:jms

所以我通过 -D 将它添加到 wso2server.sh 文件中,现在发生了以下情况。

我添加了一个事件流定义...

{
  "name": "org.wso2.sample.stock.quote.basic",
  "version": "1.0.0",
  "payloadData": [
    {
      "name": "price",
      "type": "DOUBLE"
    },
    {
      "name": "symbol",
      "type": "STRING"
    }
  ]
}

然后添加一个构建器...

<?xml version="1.0" encoding="UTF-8"?>
<eventBuilder name="StrataTestEventStream" statistics="disable"
    trace="disable" xmlns="http://wso2.org/carbon/eventbuilder">
    <from eventAdaptorName="StrataTestInputEvent" eventAdaptorType="jms">
        <property name="transport.jms.Destination">poc_topic7</property>
    </from>
    <mapping customMapping="disable" type="xml"/>
    <to streamName="StrataInputEventStream" version="1.0.0"/>
</eventBuilder>

现在服务器部署并认为它没问题......但它不是......现在它处于我得到的奇怪状态

原因: org.wso2.carbon.event.input.adaptor.core.exception.InputEventAdaptorEventProcessingException: 没有订阅 poc_topic7 的 订阅号:bce96483-76ea-4313-8a0e-bf500ddb3002 在 org.wso2.carbon.event.input.adaptor.jms.JMSEventAdaptorType.unsubscribe(JMSEventAdaptorType.java:246) 在 org.wso2.carbon.event.input.adaptor.core.internal.CarbonInputEventAdaptorService.unsubscribe(CarbonInputEventAdaptorService.java:120) ... 73 更多

并且主题已定义..如果我重新启动服务器,它认为它已经启动但它没有......

【问题讨论】:

    标签: exception configuration jms jndi solace


    【解决方案1】:

    您的 URL 看起来不适合 Solace JNDI。

    尝试将 java.naming.provider.url 从“tcp://10.250.242.89:55555”更改为“smf://10.250.242.89:55555”

    Solace JNDI 通信是通过 Solace 消息格式 (SMF) 有线协议进行的,就像 JMS 客户端连接一样。

    您可能还需要设置 java.naming.security.principal 以指示您的用户名和 message-vpn,例如“robert@myvpnname”,如果您的用户名在默认 message-vpn 上,则只需“robert”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2015-11-16
      • 1970-01-01
      • 2020-03-19
      相关资源
      最近更新 更多