A problem we've had in the past with not stopping endpoints early as part of graceful shutdown is the invocation has returned from the deployment code, so the deployment and its CL are unloaded. But the invocation is still alive on it's return path, it hasn't passed yet through the response marshalling logic in the endpoint. As a result, when it hits the response marshalling logic, calls are made to the unloaded CL, and they fail.
This is more of an issue with EJBs. Web requests happily don't do any marshalling in the connectors. :)