Common might be a little bit different situation. Since there doesn't seem to be a need for aggregate releases of common, the parts are treated like separate projects. So they each have their own trunk/branches/tags. I'm thinking of removing the aggregate build part of common altogether.
For javaee, if you want to have both individual component releases and aggregate, svn should be fine the way it is now. Subversion doesn't have a problem with tagging sub directories into the tags and branches directories. So you could have:
tags/ |--jboss-ejb-api-3.0/ |--jboss-jacc-api-1.1/ |--jboss-perisistence-api-1.0/ \--jboss-javaee-1.0
And you could do the same thing with the branches directory.
Maven can also handle this pretty easily. If you put the svn URL in the parent project, the subprojects will inherit this, and they will all point to the same place. Then the release plugin can create the tags for you when you do a release.