मुझे जेएक्स-डब्ल्यूएस में एक जावा वेब सेवा मिली है जो एक अन्य विधि से आउटपुटस्ट्रीम लौटाती है। मुझे यह पता लगाना प्रतीत नहीं होता है कि आउटपुटस्ट्रीम को लौटाए गए डेटाहैंडलर में अस्थायी फ़ाइल बनाने के अलावा किसी भी अन्य तरीके से स्ट्रीम करने के लिए, इसे लिखें, फिर इसे एक इनपुटस्ट्रीम के रूप में फिर से खोलें। यहाँ एक उदाहरण है:आप स्ट्रीमिंगडेटा हैंडलर को आउटपुटस्ट्रीम कैसे पाइप कर सकते हैं?
@MTOM
@WebService
class Example {
@WebMethod
public @XmlMimeType("application/octet-stream") DataHandler service() {
// Create a temporary file to write to
File fTemp = File.createTempFile("my", "tmp");
OutputStream out = new FileOutputStream(fTemp);
// Method takes an output stream and writes to it
writeToOut(out);
out.close();
// Create a data source and data handler based on that temporary file
DataSource ds = new FileDataSource(fTemp);
DataHandler dh = new DataHandler(ds);
return dh;
}
}
मुख्य मुद्दा यह है कि writeToOut() विधि डेटा है कि कंप्यूटर की स्मृति की तुलना में कहीं बड़े होते हैं लौट सकते है। यही कारण है कि विधि डेटा स्ट्रीम करने के लिए पहली जगह एमटीओएम का उपयोग कर रही है। मैं आउटपुटस्ट्रीम से सीधे डेटा को स्ट्रीम करने के तरीके के बारे में अपने सिर को लपेट नहीं सकता हूं, जिसे मुझे लौटाए गए डेटाहैंडलर (और अंत में क्लाइंट, जो स्ट्रीमिंगडेटा हैंडलर प्राप्त करता है) को प्रदान करने की आवश्यकता है।
मैंने PipedInputStream और PipedOutputStream के साथ खेलने की कोशिश की है, लेकिन मुझे काफी कुछ नहीं लगता है, क्योंकि PipedOutputStream को लिखने के बाद डेटाहैंडलर को वापस करने की आवश्यकता होगी।
कोई विचार?
भी देखें [इस सवाल] (http: // stackoverflow।कॉम/प्रश्न/2830561/कैसे-टू-कन्वर्ट-ए-इनपुटस्ट्रीम-टू-ए-डाटाहैंडलर) – schnatterer