We had exactly the same problem here. In the end we used the VAADIN framework for all the webapp frontend. There is a special extension for VAADIN called vol (vOpenLayers) which makes embedding maps very easy and a smooth job.
We tried many different approaches and for us vaadin with vol is one of the best and fastest developable packages.
In the backend we use a Mapnik/TileCache server for Tile handling and caching, AND we use python to interact between Java and Mapnik (printing, generating PDF etc.)
I'm pretty sure, that it is the kind of framework you are looking for, you can handle all the Java dev. as you used to and you need just the vol library to enable the mapabilty.