إدارة الوصول المتزامن إلى قاعدة بيانات أباتشي ديربي

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

سؤال

ولدي قاعدة بيانات أباتشي ديربي تشغيل (في الوضع المتشابك) داخل تطبيق جافا سوينغ، والاتصال به من خلال JDBC الدعوات المباشرة عبر تطبيق عميل جافا.

وهذا هو كل شيء جيد جدا ويعمل كبيرة ولكن أنا أعرف لها متطلبات إضافية لتنفيذ التراخيص المتزامنة لهذا التطبيق العميل / الخادم.

ومثالي على المستخدم مع واحد ترخيص المستخدم يجب أن يكون قادرا على أن يكون 1 التطبيق العميل يعمل على جهاز كمبيوتر محمول، وكذلك التطبيق العميل الثاني يعمل على سطح المكتب وتكون قادرة على الاتصال بالخادم من كليهما.

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

إذا أترك الملكية timeslice إلى 0 ثم فإن الدعوة إلى getConnection مهلة حتى أستطيع أن عرض رسالة إلى المستخدم موضحا أنها تحتاج إلى فصل واحد من تطبيقات العميل.

هل المواضيع اتصال وسيلة يمكن الاعتماد عليها للقيام بذلك؟

وأنا في عداد المفقودين حل آخر؟

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

المحلول

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

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

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

إذا كنت مثل هذه الفكرة، أعتقد أنه من خلال أبعد من عندي. أستطيع أن أرى بعض الأخطاء في منطق تأمين المستخدمين بشكل دائم :-)

نصائح أخرى

ويبدو أنك تريد أن تجعل عمل "التسجيل في" و "تسجيل الخروج" من قاعدة بيانات واضحة، لذلك ربما كنت قد تريد أن يكون لها جدول خاص في قاعدة البيانات حيث يكتب طلبك سجل عند تسجيل الدخول أو الخروج منه.

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

وأنت قد ترغب في تضمين حقول إضافية في الجدول لتتبع التاريخ / الوقت عندما قمت بتسجيل داخل / خارج، اسم المضيف وIP عنوان العميل الذي أجرى الدخول / الخروج، وما إلى ذلك.

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