سؤال

I'm trying to send a message from a local client to ESB and redirect it to MB on the same server. The message delieved MB. The client is waiting for response until application server throws error.

My environment as below WSO2 ESB 4.8.0 (port offset 1) WSO2 MB 2.1.1 (port offset 2) IBM WebSphere Application Server 8.5.5.1

The proxy service configuration of 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&amp;java.naming.factory.initial=org.wso2.andes.jndi.PropertiesFileInitialContextFactory&amp;java.naming.provider.url=repository/conf/jndi.properties&amp;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 Connection time out after request is read: 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>

error log of application server

java.io.IOException: Async IO operation failed (3), reason: RC: 55

Thanks for any idea.

After added <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/> I get another error message

2014-03-26 22:17:23,354 [-] [http-nio-9443-exec-15] WARN AuthenticationHandler Illegal access attempt at [2014-03-26 22:17:23,0353] from IP address null while trying to authenticate access to service StatisticsAdmin 2014-03-26 22:17:23,354 [-] [http-nio-9443-exec-15] ERROR AUDIT_LOG Illegal access attempt at [2014-03-26 22:17:23,0353] from IP address null while trying to authenticate access to service StatisticsAdmin 2014-03-26 22:17:23,355 [-] [http-nio-9443-exec-15] ERROR StatisticsAdminClient Cannot get service stats for service SMSQProdProxy. Backend server may be unavailable. org.apache.axis2.AxisFault: The input stream for an incoming message is null.

There is a similar problem https://wso2.org/jira/browse/WSAS-1214

هل كانت مفيدة؟

المحلول

You can add the following after the OUT_ONLY property to your in sequence to return back to the client. This property will force the ESB to respond back to the client with HTTP 202.

<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>

نصائح أخرى

Yohan, It seems the new error you are experiencing is not related to the MB integration flow. Have you accessed the management console after session timed out? Can you reproduce this problem continuously? OR is this just one time occurrence?

When you set the OUT_ONLY property to true you are saying that, you are not waiting the response after the proxy end. So, in outSequence remove the send mediator.

If you want to force the proxy to send the response to the client, remove the Out_Only property and, in inSequence section set this after endPoint mediator.

property name="FORCE_SC_ACCEPTED"  value="true"  scope="axis2"  type="STRING"

In outSequence section keep the <send/> mediator...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top