Tüketmeye çalıştığım birkaç JAX-WS hizmetim var, ancak hizmetten (değiştiremediğim) XML'nin geçersiz bir DTD'si var. publicId
ve systemId
arasında beyaz boşluk olmadığından XMLStreamReaderException). Müşterilerin kötü biçimlendirilmiş DTD'leri görmezden nasıl çıkartacağım?JAX-WS istemcileri için XML Doğrulamasının Yoksayılması
8
A
cevap
1
WSDL
ürününün bir parçası mı? Evet ise, XML
'u yerel olarak okumak için JAXWS catalog
'u kullanabilir ve ardından servisi çağırırsınız.
WSDL
'u indirmeniz, düzeltmeniz ve yerel olarak saklamanız gerekiyor. Daha sonra, bir Service
örneğini oluştururken, yerel mağazanızdan WSDL
'u okuyun. endpoint
özelliğini güncelleyin ve hizmeti çağırın.
+0
Bu yapılması gereken, ne yazık ki. JAX'in DTD'leri bu kadar küçük bir problemle halledememesi, özellikle de _exactly_'in neyin yanlış olduğunu ve boş bir dize değeriyle iyi bir şey yapması gibi bir utanç duyuyorum. – doctorless
jaxws hangi sürümünü kullanıyorsunuz? Jaxws'ın dtds içinde olduğunu bilmiyordum. – jtahlborn
[bu bağlantı] (http://metro.1045641.n5.nabble.com/JAX-WS-RI-2-1-x-susceptible-to-DTD-entity-expansion-attack-td1062920.html) olabilir işe yarar. Çeşitli jaxws sürümleri ile ilgili olarak dtd işleme ayrıntıları. – jtahlborn
Genelde, WS'nin yerel bir DTD kullanmasına (bunun bir JAX özelliği olup olmadığını bilmemesine) ya da özel bir işleyiciye girdiğine bakardım: http://pic.dhe.ibm.com/infocenter/ wasinfo/v7r0/index.jsp? topic =% 2Fcom.ibm.websphere.express.doc% 2Finfo% 2Fexp% 2Fae% 2Ftwbs_jaxwshandler.html –