WSO2Con 2013 CFP Banner

Local transport fails to reply back when using Axis2 Stub in mediator

werdex86.yahoo.com's picture
Hi, I am having axis2 stub inside mediator which calls proxy on localhost. I switched to local transport in stub and request successfully arrives to proxy but proxy fails to send response back: [2011-07-07 10:32:17,261] ERROR - AxisEngine Message Receiver not found for Axis Operation: {http://ws.openam.identity.services.kitdigital.com}isAuthorized org.apache.axis2.AxisFault: Message Receiver not found for AxisOperation: {http: //ws.openam.identity.services.kitdigital.com}isAuthorized         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:177)         at org.apache.axis2.transport.local.LocalResponder.handleResponse(LocalR esponder.java:214)         at org.apache.axis2.transport.local.LocalResponder.invoke(LocalResponder .java:111)         at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)         at org.apache.synapse.core.axis2.Axis2Sender.sendBack(Axis2Sender.java:1 59)         at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.send(Axis2Synap seEnvironment.java:255)         at org.apache.synapse.mediators.builtin.SendMediator.mediate(SendMediato r.java:84)         at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractLis tMediator.java:60)         at org.apache.synapse.mediators.filters.FilterMediator.mediate(FilterMed iator.java:112)         at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractLis tMediator.java:60)         at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMe diator.java:114)         at org.apache.synapse.core.axis2.ProxyServiceMessageReceiver.receive(Pro xyServiceMessageReceiver.java:154)         at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)         at org.apache.axis2.transport.local.LocalTransportReceiver.processMessag e(LocalTransportReceiver.java:166)         at org.apache.axis2.transport.local.LocalTransportReceiver.processMessag e(LocalTransportReceiver.java:79)         at org.apache.axis2.transport.local.LocalTransportSender.finalizeSendWit hToAddress(LocalTransportSender.java:102)         at org.apache.axis2.transport.local.LocalTransportSender.invoke(LocalTra nsportSender.java:77)         at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443)         at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisO peration.java:406)         at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(Out InAxisOperation.java:229)         at org.apache.axis2.client.OperationClient.execute(OperationClient.java: 165)         at com.kitdigital.services.esb.security.ws.authorization.AuthorizationSe rviceStub.isAuthorized(AuthorizationServiceStub.java:851)         at com.kitdigital.services.esb.security.OpenAMAuthorizationMediator.proc essMediate(OpenAMAuthorizationMediator.java:219)         at com.kitdigital.services.esb.security.OpenAMAuthorizationMediator.medi ate(OpenAMAuthorizationMediator.java:166)         at org.apache.synapse.mediators.ext.ClassMediator.mediate(ClassMediator. java:78) To reproduce this: 1) Generate EchoStub for echo service (or some other hello world service on esb) 2) Create proxy which replies with some hardcoded response 3) Create class mediator which uses stub to call proxy: public boolean mediate(MessageContext mc) {  Axis2MessageContext axis2Context = (Axis2MessageContext) mc;   ConfigurationContext context=axis2Context.getAxis2MessageContext().getConfigurationContext(); EchoStub stub=new EchoStub(context,"local://localhost/services/MyProxy"); stub.echo(3);//fails to get response }  
werdex86.yahoo.com's picture

The following did the trick

The following did the trick with Axis2 Stub in mediator in axis2.xml: <transportSender name="local" class="org.apache.axis2.transport.local.NonBlockingLocalTransportSender"/> <transportSender name="local2" class="org.apache.axis2.transport.local.LocalTransportSender"/> I added "local2" transport. So axis2 stub need to use "local2://localhost/services/MyProxy"