سؤال

ولدي بريمج يعمل في خادم أوراكل OCCAS. حاليا أنا الخريطة بعض البيانات في قاعدة بيانات لفئة كيان في طلبي باستخدامEntity annotaion. لا أستطيع أن حقن EntityManager (PersistenceContext) على الرغم من وفهمي فذلك لأنه يعمل في إطار بريمج بلدي وليس بوصفه EJB الكيان منفصلة. إنشاء إدارة من خلال أعمال EntityManagerFactory، ورغم ذلك هذا هو ما يمكنني استخدام في الوقت الراهن.

والآن، وبعد عدد من تشغيل التطبيق، أحصل على خطأ من الفضاء PermGen. I هذا الرقم غير ذي صلة لاستمرار بطريقة أو بأخرى. هناك دعوة إلى EntityManager.close () في بلدي طريقة وضع الصيغة النهائية، لكنه لم يظهر في السجل.

وهذا هو وسيلة سيئة للقيام بهذه الأمور؟ - أنا "مطلوب" لدينا كيان منفصل فول، أو كيف لي أن تنظيف EntityManager

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

المحلول

وكان لي مشكلة مشابهة وحلها باستخدام ThreadLocal ومرشح بريمج.

هنا وظيفة على بلدي بلوق بالتفصيل ما عليك القيام به . في الأساس مرشح بريمج الخاص بإعداد مدير كيان ثم يغلق عليه بعد اكتمال دعوة بريمج. فهو يجعل مدير كيان متاحة للمتغير محلي موضوع (لكل توصية السبات و). تحتاج أيضا إلى تصفية الاستثناءات في الترشيح والقيام العودة.

وراجع للشغل، وضع اللمسات الأخيرة ليست مضمونة ليتم استدعاؤها في الطريقة التي تفكر. finalize <م> يجب أن يطلق قبل إنهاء JVM، ولكن خارج ذلك، فإنه يمكن أن يكون منذ فترة طويلة.

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