Невозможно найти DTD, исключение ConnectException
Наше корпоративное приложение не работало в помещениях клиента с:
Severe: Exception while deploying the app [v24testear] : Unable to locate the DTD to validate your deployment descriptor file [META-INF/sun-ejb-jar.xml] in archive [V24Handler-ejb_jar]. Please make sure the DOCTYPE is correct (no typo in public ID or system ID) and you have proper access to the Internet.
java.net.ConnectException: Connection timed out: connect
Это произошло потому, что у них была параноидальная настройка сети, и в качестве обходного пути нам пришлось удалить следующее объявление из sun-ejb-jar.xml
:
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//
DTD GlassFish Application Server 3.0 EJB 3.1//EN"
"http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_1-0.dtd">
Мой вопрос заключается в следующем. Glassfish на самом деле обладает локальной копией этого dtd в glassfish/lib/dtds/sun-ejb-jar_3_1-0.dtd
, Здравый смысл подсказывает, что Glassfish должен предоставлять собственный распознаватель сущностей, который будет отображать стандартные схемы в локальные файлы. Однако я не вижу попыток открыть этот локальный файл. С другой стороны, процесс Java обращается к sun-web-app_2_5-0.dtd
, Этот механизм существует, но сломан? Иначе, с какой целью dtds/
справочник служить?