From my experiences testing, full publish only ever fails if your deployment (such as an EJB) has no xml descriptor defined. The JBoss runtime seems to have difficulty noticing changes if there are no xml descriptors in the deployment.
I recognize this as a significant downfall, but I've been unable to find any way to push to the runtime that these changes have occurred. THe workaround that I've found is to include the non-required xml descriptor in your project so that the App server can actually recognize the change.