मैं कुछ JAX-WS सेवाओं मैं उपभोग करने के लिए कोशिश कर रहा हूँ मिल गया है के लिए XML मान्यता पर ध्यान न दें, लेकिन XML सेवा (जिनमें से मैं नहीं बदल सकते) गलत DTD है (उत्पादन से लौटाए जाने XMLStreamReaderException के रूप में publicId
और systemId
के बीच कोई सफेद रिक्त स्थान नहीं हैं)। मैं ग्राहकों को खराब गठित डीटीडी को अनदेखा कैसे करूं?JAX-WS ग्राहकों
8
A
उत्तर
1
एक WSDL
की अवैध DTD
हिस्सा है? यदि हां, तो आप स्थानीय स्तर पर XML
को पढ़ने के लिए JAXWS catalog
का उपयोग कर सकते हैं और फिर सेवा को ही आमंत्रित कर सकते हैं।
आप WSDL
डाउनलोड, इसे ठीक करने और यह स्थानीय रूप से संग्रहीत की जरूरत है। फिर, Service
उदाहरण बनाते समय अपने स्थानीय स्टोर से WSDL
पढ़ें। endpoint
संपत्ति अपडेट करें और सेवा का आह्वान करें।
+0
ऐसा करने की आवश्यकता थी, दुख की बात है। मुझे लगता है कि यह शर्म की बात है कि जेएक्स ऐसी छोटी सी समस्या के साथ डीटीडी को संभाल नहीं सकता है, खासकर जब यह _exactly_ क्या गलत है और खाली स्ट्रिंग मान के साथ ठीक है। – doctorless
आप किस जैक्स का उपयोग कर रहे हैं? मैं dtds में निपटा jaxws पता नहीं था। – jtahlborn
[यह लिंक] (http://metro.1045641.n5.nabble.com/JAX-WS-RI-2-1-x-susceptible-to-DTD-entity-expansion-attack-td1062920.html) हो सकता है उपयोगी। विवरण डीटी हैंडलिंग के रूप में यह विभिन्न jaxws संस्करण से संबंधित है। – jtahlborn
बहुत आम तौर पर, मैं डब्ल्यूएस को स्थानीय डीटीडी का उपयोग करने के लिए देखता हूं (पता नहीं है कि यह एक जेएक्स सुविधा है), या एक कस्टम हैंडलर में डालें: http://pic.dhe.ibm.com/infocenter/ wasinfo/v7r0/index.jsp? विषय =% 2Fcom.ibm.websphere.express.doc% 2Finfo% 2Fexp% 2Fae% 2Ftwbs_jaxwshandler.html –