What is your question? But from your description the webservice itself is not async. In a java webapp, i would implement a simple webapp like this:
- a webservice storing the data, starting a thread and returning the guid
- the thread does the long term task and stores the result for its guid
- a webservice returning the result for an guid or a fould if not finished yet.
Best practice would be to use an own deamon thread group for the long term tasks, each thread named with the guid. Override the uncaughtException() method of the group to store the exception as result for the guid on any error.