我试图将消息从本地客户机发送到ESB,并将其重定向到同一服务器上的MB。客户端正在等待响应,直到应用服务器抛出错误。
我的环境如下WSO2 ESB 4.8.0(端口偏移量1)WSO2 mb2.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>
应用服务器错误日志
. io .Async IO操作失败(3),reason: 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[2014-03-26 22:17:23,0353]从IP地址null试图验证访问服务StatisticsAdmin时的非法访问尝试2014-03-26 22:17:23,354 [-] [http-nio-9443- exc -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] ERROR StatisticsAdminClient无法获取服务SMSQProdProxy的服务统计信息。后端服务器可能不可用。org.apache.axis2。AxisFault:传入消息的输入流为空。
有一个类似的问题https://wso2.org/jira/browse/WSAS-1214
您可以将OUT_ONLY属性添加到您的in序列之后,以返回到客户端。此属性将强制ESB使用HTTP 202响应客户端。
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
似乎您遇到的新错误与MB集成流程无关。是否在会话超时后访问管理控制台?你能不断重复这个问题吗?或者这只是一次发生?
当您将OUT_ONLY
属性设置为true时,您正在说,您不等待代理结束后的响应。因此,在outSequence
中去除send
介质。
如果要强制代理向客户端发送响应,请删除Out_Only
属性,并且在inSequence
节中将此设置在endPoint
中介人之后。
property name="FORCE_SC_ACCEPTED" value="true" scope="axis2" type="STRING"
在outSequence
部分保留<send/> mediator
…