Thanks for the response, but I just wanted to add that including the DTDs in the embedded jar (which we do in Wonderland) is not sufficient. In the case where the Glassfish server is behind a proxy, it will still not run properly even with the DTDs included.
I think the server tries to resolve the DTDs externally first, and doesn't try the local versions until the external connection fails (which can take 2 - 3 minutes with proxies). I don't know if this happens with regular GFv3, but it definitely happens with embedded.
[Message sent by forum member 'kaplanj' (jonathankap_at_gmail.com)]
http://forums.java.net/jive/thread.jspa?messageID=386216