public void testEchoXMLASync() throws Exception {
    OMElement payload = createPayload();
    Options clientOptions = new Options();
    clientOptions.setTo(targetEPR);
    clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);

    AxisCallback callback =
        new AxisCallback() {

          public void onMessage(MessageContext msgContext) {
            SOAPEnvelope envelope = msgContext.getEnvelope();

            OMElement data = (OMElement) envelope.getBody().getFirstElement().getFirstOMChild();
            compareWithCreatedOMText(data.getText());
            finish = true;
          }

          public void onFault(MessageContext msgContext) {
            SOAPEnvelope envelope = msgContext.getEnvelope();

            OMElement data = (OMElement) envelope.getBody().getFirstElement().getFirstOMChild();
            compareWithCreatedOMText(data.getText());
            finish = true;
          }

          public void onError(Exception e) {
            log.info(e.getMessage());
            finish = true;
          }

          public void onComplete() {}
        };

    ConfigurationContext configContext =
        ConfigurationContextFactory.createConfigurationContextFromFileSystem(
            TestingUtils.prefixBaseDirectory("target/test-resources/integrationRepo"), null);
    ServiceClient sender = new ServiceClient(configContext, null);
    sender.setOptions(clientOptions);

    sender.sendReceiveNonBlocking(payload, callback);

    int index = 0;
    while (!finish) {
      Thread.sleep(1000);
      index++;
      if (index > 10) {
        throw new AxisFault("Server was shutdown as the async response take too long to complete");
      }
    }
  }