سؤال

أرغب في إرسال ملفات كبيرة من الخادم إلى العميل باستخدام MTOM و Spring WS. أدرك أن هذا ليس أفضل نهج لهذا النوع من الأشياء، لكنه متطلبات. لقد تم إعداد MTOM ويعمل بشكل رائع على الملفات الصغيرة حوالي 50 ميغابايت. أعاني من أخطاء الذاكرة للحصول على ملفات أكبر وتغيير أحجام الفضاء الكومة المختلفة، يمكنني إرسال ملفات أكبر قليلا، ولكن لا شيء قريب من 1GB. 1GB هو حالة الاختبار لي لهذا. كيف يمكنني دفق أو قطع خدمة MTOM من الخادم إلى العميل؟ أنا أستخدم Java 6 Update 17، Tomcat 6، و Spring WS 1.5.7 مع SaajsoapmessAgfactory.

لقد وجدت مثالا على البث مع JAX-WS، لكنني لست متأكدا من كيفية دمج هذا في نقطة نهاية ربيع WS.

تحسين انتقال البيانات الثنائية باستخدام MTOM / XOP

هل كانت مفيدة؟

المحلول

بالأمس، أواجه نفس المشكلة مع تحميل الملفات الكبيرة. وأخيرا كنت قادرا على العثور على الحل لذلك. WS Spring WS لديه رسالة مخصصة AXIOM org.springframework.ws.soap.axiom.AxiomSoapMessageFactory والتي يمكن استخدام الملف بدلا من الذاكرة أثناء تحميل الملفات الكبيرة. التغيير الوحيد الذي يجب القيام به في التكوين الخاص بك هو تحديد الفول مع خصائصك المخصصة.

<bean id="messageFactory" class="org.springframework.ws.soap.axiom.AxiomSoapMessageFactory">
    <property name="payloadCaching" value="false" />
    <property name="attachmentCaching" value="true" />
    <property name="attachmentCacheThreshold" value="1024"/>
</bean>

بمجرد أن يكون لديك فئات التكوين والآسيان المتوفرة في ClassPath، يستخدم Spring-WS تلقائيا ملفات مؤقتة لإجراء تحميلات وثيقة كبيرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top