What do you mean exactly with your app never ending? Could you start it in debug mode so you can check where it is waiting exactly? Looking at your sample code, it seems that your application should simply continue after calling startProcess.
Your process instance however, if it includes a human task, is probably in a wait state, waiting for the human task to be completed (as the human task node will only continue if the task has been completed. So in that case you can say that it is kinda waiting on the CommandBasedWSHumanTaskHandler to notify the process engine when the task has been completed. If you want your process instance to continue, you should use a task client to complete the task (either one of the UIs or using code directly).