我正在尝试从本地客户端向ESB发送消息,并将其重定向到同一服务器上的MB。 消息传达了MB。客户端正在等待响应,直到应用程序服务器抛出错误。
我的环境如下 WSO2 ESB 4.8.0(端口偏移1) WSO2 MB 2.1.1(端口偏移2) IBM WebSphere Application Server 8.5.5.1
ESB的代理服务配置
<proxy name="SMSQProdProxy" transports="http" startOnLoad="true" trace="enable">
<target>
<inSequence>
<property name="OUT_ONLY" value="true"/>
<send>
<endpoint>
<address uri="jms:/SMSQ?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&java.naming.provider.url=repository/conf/jndi.properties&transport.jms.DestinationType=queue"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<publishWSDL key="gov:/trunk/services/SendToSMSQProxy.wsdl">
<resource location="SMSWSService_schema1.xsd"
key="gov:/trunk/services/SMSWSService_schema1.xsd"/>
</publishWSDL>
</proxy>
jndi.properties
connectionfactory.QueueConnectionFactory = amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5674'
connectionfactory.TopicConnectionFactory = amqp://admin:admin@carbon/carbon?brokerlist='tcp://localhost:5674'
queue.SMSQ = SMSQ
WSO2-ESB-errors.log
2014-03-21 14:18:54,276 [ - ] [HTTP-Listener I / O dispatcher-1] WARN SourceHandler读取请求后的连接超时:http-incoming-3
WSO2-ESB-trage.log
INFO TRACE_LOGGER Proxy Service SMSQProdProxy
received a new message from : xx.xx.xx.xx
INFO TRACE_LOGGER Message To: /services/SMSQProdProxy
INFO TRACE_LOGGER SOAPAction:
INFO TRACE_LOGGER WSA-Action:
INFO TRACE_LOGGER Using the anonymous in-sequence of the proxy service for mediation
INFO TRACE_LOGGER Start : Sequence <anonymous>
INFO TRACE_LOGGER Sequence <SequenceMediator> :: mediate()
INFO TRACE_LOGGER Mediation started from mediator position : 0
INFO TRACE_LOGGER Start : Property mediator
INFO TRACE_LOGGER Setting property : OUT_ONLY at scope : default to : true (i.e. constant : true)
INFO TRACE_LOGGER End : Property mediator
INFO TRACE_LOGGER Start : Send mediator
INFO TRACE_LOGGER Sending message through endpoint : null resolving to address = jms:/SMSQ?transport.jms.ConnectionFactoryJNDIName=QueueConnectionFactory&java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&java.naming.provider.url=repository/conf/jndi.properties&transport.jms.DestinationType=queue
INFO TRACE_LOGGER SOAPAction:
INFO TRACE_LOGGER WSA-Action:
INFO TRACE_LOGGER End : Send mediator
INFO TRACE_LOGGER End : Sequence <anonymous>
应用程序服务器的错误日志
java.io.IOException:异步IO操作失败(3),原因:RC:55
感谢您的任何想法。
添加<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
后,我收到另一条错误消息
2014-03-26 22:17:23,354 [ - ] [http-nio-9443-exec-15] WARN AuthenticationHandler来自IP地址的[2014-03-26 22:17:23,0353]非法访问尝试尝试验证对服务StatisticsAdmin的访问权限时为null 2014-03-26 22:17:23,354 [ - ] [http-nio-9443-exec-15] ERROR AUDIT_LOG尝试[2014-03-26 22:17:23,0353]从IP地址的非法访问尝试null验证对StatisticsAdmin服务的访问 2014-03-26 22:17:23,355 [ - ] [http-nio-9443-exec-15]错误StatisticsAdminClient无法获取服务SMSQProdProxy的服务统计信息。后端服务器可能不可用。 org.apache.axis2.AxisFault:传入消息的输入流为空。
答案 0 :(得分:0)
您可以在OUT_ONLY属性之后依次添加以下内容以返回到客户端。此属性将强制ESB使用HTTP 202响应客户端。
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
答案 1 :(得分:0)
勒芒, 您遇到的新错误似乎与MB集成流程无关。会话超时后您是否访问过管理控制台?你能不断重现这个问题吗?或者这只是一次?
答案 2 :(得分:-1)
当您将OUT_ONLY
属性设置为true时,是在说,在代理结束后,您不必等待响应。因此,在outSequence
中删除send
中介者。
如果要强制代理将响应发送到客户端,请删除
Out_Only
属性,并在inSequence
中介者之后的endPoint
部分中进行设置。
property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"
在outSequence
部分中保留<send/> mediator
...