code: public void checkServerState(final AsyncCallback<Boolean> callback, final String standBy, final String success) {
  
          // :read-attribute(name=process-type)
          final ModelNode operation = new ModelNode();
          operation.get(OP).set(READ_ATTRIBUTE_OPERATION);
          operation.get(NAME).set("server-state");
          operation.get(ADDRESS).setEmptyList();
  
          dispatchAsync.execute(new DMRAction(operation), new SimpleCallback<DMRResponse>() {
  
              @Override
              public void onSuccess(DMRResponse result) {
  
                  ModelNode response = result.get();
  
                  if (response.isFailure()) {
                      callback.onFailure(new RuntimeException("Failed to poll server state"));
                  } else {
                      // TODO: only works when this response changes the reload state
                      String outcome = response.get(RESULT).asString();
                      boolean keepRunning = !outcome.equalsIgnoreCase("running");//reloadState.isStaleModel();
  
                      if (!keepRunning) {
  
                          // clear state
                          reloadState.reset();
  
                          Console.info(Console.MESSAGES.successful(success));
  
                          // clear reload state
                          eventBus.fireEvent(new ReloadEvent());
                      }
  
                      callback.onSuccess(keepRunning);
                  }
              }
  
              @Override
              public void onFailure(Throwable caught) {
                  Console.getMessageCenter().notify(new Message(standBy, caught.getMessage(), Message.Severity.Warning));
              }
          });
      }
docs: Simply query the process state attribute to get to the required headers