if (!endpointUrl.equals(mexEndpointUrl)) {
partnerEndpoint.setAddress(mexEndpointUrl);
}
OperationClient opClient = getOperationClient(isTwoWay, mctx);
mctx.getOptions().setParent(opClient.getOptions());
/*
Else we assume that the epr is not changed by the process.
In this case there's a limitation we cannot invoke the epr in the wsdl
(by assingning that epr by partnerlink assign) if there is a endpoint
configuration available for that particular service
*/
opClient.addMessageContext(mctx);
Options operationOptions = opClient.getOptions();
if (partnerEndpoint.isAddressingEnabled()) {
//Currently we set the action manually, but this should be handled by
// addressing module it-self?
String action = getAction(partnerRoleMessageExchange.getOperationName());
if (log.isDebugEnabled()) {
log.debug("Soap action: " + action + " found");
}
operationOptions.setAction(action);
//TODO set replyto as well
//operationOptions.setReplyTo(mctx.getReplyTo());
}
operationOptions.setTo(partnerEndpoint);
if (bindingType instanceof HTTPBinding) {
operationOptions.setProperty(Constants.Configuration.ENABLE_REST,
Constants.VALUE_TRUE);
}
if (messageTraceLog.isDebugEnabled()) {
messageTraceLog.debug("Invoking service: MEXId: " +
partnerRoleMessageExchange.getMessageExchangeId() +
" :: " + serviceName + "." +
partnerRoleMessageExchange.getOperationName());
if (messageTraceLog.isTraceEnabled()) {
messageTraceLog.trace("Request message: MEXId: " +
partnerRoleMessageExchange.getMessageExchangeId() +
" :: " +
partnerInvocationContext.getInMessageContext().
getEnvelope());
}
}
opClient.execute(true);
if (messageTraceLog.isDebugEnabled()) {
messageTraceLog.debug("Service invocation completed: MEXId: " +
partnerRoleMessageExchange.getMessageExchangeId() +
" :: " + serviceName + "." +
partnerRoleMessageExchange.getOperationName());
}
if (isTwoWay) {
final Operation operation = partnerRoleMessageExchange.getOperation();
MessageContext response = opClient.getMessageContext(
WSDLConstants.MESSAGE_LABEL_IN_VALUE);
partnerInvocationContext.setInMessageContext(response);
MessageContext flt = opClient.getMessageContext(
WSDLConstants.MESSAGE_LABEL_FAULT_VALUE);
if (messageTraceLog.isTraceEnabled()) {
messageTraceLog.trace("Response message: MEXId: " +
partnerRoleMessageExchange.getMessageExchangeId() +
" :: " + response.getEnvelope());