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
}
The following did the trick