【发布时间】: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