كيفية الحفاظ على Apache CXF من تحويل المواصفات إلى أنواع الكائنات؟

StackOverflow https://stackoverflow.com/questions/962564

  •  12-09-2019
  •  | 
  •  

سؤال

أقوم بتقييم Apache CXF لمشروع، لذلك كتبت تطبيقا تجريبيا صغيرا لمحاولة بعض الأشياء. بعد دليل مستخدم CXF، كنت قادرا على الحصول على طلبي وتشغيله بسرعة كبيرة.

شيء واحد أردت اختباره كان جيدا CXF قادر على التعامل مع الطريقة التي ترجع مجموعة كبيرة من البدائيات. لذلك تعرفت طريقة "float[] getRandFloats(int count)"والتي ببساطة إرجاع مجموعة من الطول المحدد مليء بأرقام عشوائية. النظر إلى WSDL الناتج عن java2wsdl, ، أرى الطريقة تشير بشكل صحيح إلى نوع عودة من float[]. وبعد فحص الجانب العميل، وأرى أيضا أنني (في النهاية) تلقي أ float[].

لقد لاحظت أنني أزيد عدد العناصر في صفيفي، يعاني أداء العميل. ركضت profiler على جانب العميل ورأيت أن هناك Float الكائنات التي يتم إنشاؤها لكل عنصر في الصفيف المرتجع. يبدو أن هذا يحدث عندما يستدعي CXF Jaxb أثناء تحليل الاستجابة.

أقوم بتقييم CXF لاستخدامها مع تطبيق يحتمل أن يرسل الملايين من أرقام النقطة العائمة، بحيث يكون إنشاء الكائن هذا غير مرغوب فيه للغاية. من أجل استخدام CXF، سأحتاج إلى إيجاد طريقة لمنع حدوث هذا الكائن. لقد تم فحصها من خلال قائمة الوثائق والبريد، لكنها لم تتحقق بطريقة تعمل حول هذا الأمر.

هل واجه أي شخص مشكلة مماثلة باستخدام CXF؟ إذا كان الأمر كذلك كيف كنت تعمل حول هذا؟

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

المحلول

هذا بالتأكيد ليس أي شيء يمكن أن يفعله CXF أي شيء عنه. إنه أكثر من مشكلة Jaxb. أعتقد أن داخليا، يعالج Jaxb الحالات "mancoccors! = 1" كمجموعة جافا، وليس صفيف. فقط يحول إلى مجموعة كخطوة أخيرة في العملية إذا كانت تحتاج إلى ذلك. نظرا لأن مجموعات Java لا يمكن أن تعقد مباراتين، فستكون الأشياء تعويم مخزنة.

في أي حال، يجب أن يتم تناول هذا مع الناس Jaxb. :-(

نصائح أخرى

أنت تقول إن أداء ClierNT يعاني كيمبر عن العناصر في الزيادات في المجموعة. هذا يبدو معقولا بالنسبة لي - المزيد من البيانات، وأقل أداء. ماذا كنت تتوقع هناك؟ طالما أنه ديوني خطي، فإنه يتصرف موافق.

أما بالنسبة لإنشاء ملايين الأشياء، فإن JVM الحديثة ستقوم بذلك دون كسر العرق. أظن أن مصممو CXF يدركون جيدا هذا. كان لدى JVMMS القديمة خوارزميات GC سيئة، وبعد ملايين الأشياء التي بدأت في الواقع تسبب بالفعل مشكلة، ولكن هذا لم يعد الحال، لا سيما مع أشياء قصيرة الأجل للغاية كما لديك هنا.

لذلك من ناحية، لدينا تدهور الأداء الناجم عن الكثير من البيانات، وحقيقة إنشاء ملايين الكائنات. ومع ذلك، ليس هناك دليل على أن الملاحظات ذات الصلة.

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