public T invoke(T msg) throws WebServiceException {
    if (log.isLoggable(Level.FINEST)) log.finest("AbstractDispatch.invoke(" + msg + ")");

    ResponseImpl<T> response = new ResponseImpl<T>();

    invokeNow(msg, response);

    try {
      return response.get();
    } catch (Exception e) {
      throw new WebServiceException(e);
    }
  }