Ich verwende die Apache-Webdienst-XML-RPC-Bibliothek, um Anforderungen an einen RPC-Dienst zu senden. Irgendwo in diesem Prozess ist ein XML-Dokument mit einer DTD-Referenz auf http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd, die die Bibliothek versucht, beim Analysieren der XML zu downloaden. Dieser Download schlägt mit einem 503-Statuscode fehl, weil der w3c wiederholte Downloads dieses weitgehend statischen Dokuments von Java-Clients blockiert.Verwenden eines XML-Katalogs mit einer Java-Bibliothek, die intern JAXP verwendet
Die Lösung ist XML-Kataloge, um die DTD lokal zwischenzuspeichern. Während ich jedoch Beispiele finden kann, um einen EntityHandler direkt in einer JAXP SAXParser-Instanz zu setzen, um die Unterstützung von Katalogparsern zu aktivieren, habe ich hier eigentlich keinen Zugriff auf den darunter liegenden Parser. Es wird nur von der XML-RPC-Bibliothek verwendet. Gibt es eine Möglichkeit, eine globale Eigenschaft oder etwas festzulegen, das JAXP XML-Kataloge verwenden wird?
ich diesen Artikel gesehen hatte, und ich habe bereits versucht, xml-Resolver in mein Projekt zu integrieren. Das Problem ist, dass die Systemeigenschaft "xml.catalog.files" nur dann wirksam wird, wenn Sie den XML-Resolver als Entitätsresolver auf Ihrer JAXP-Leserinstanz installiert haben. Mein Problem ist, dass ich keinen Zugriff auf die JAXP-Leserinstanz habe, die intern von der Web-Service-Bibliothek verwendet wird. –
Wenn Sie diese Eigenschaft beim Starten des Programms in der Befehlszeile festlegen, wird sie dann nicht von der Parser-Factory "gesehen"? –