While we don't specifically talk about migrating from App Server X to App Server Y, we do take great pains to make our application as server-neutral as possible. We sidebar areas that are JBoss specific in each chapter.
The good news is the code tends to be container-neutral. It is the deployment descriptors that tend to be container-specific. You can mitigate much of this through the use of XDoclet.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com