سؤال

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

كما فهمت مواصفات JCA، يتم نشر ملف .rar على خادم التطبيق. يقوم خادم التطبيق بإنشاء تطبيق ملف .rar للواجهة المدمجة. ثم يطلب من ذلك إنتاج مصنع اتصال، وهو الكائن غير المشروع الذي تم نشره على JNDI للمستخدم لاستخدامه للحصول على اتصال بالمورد. (في حالة JDBC، مصنع الاتصال هو javax.sql.datasource.)

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

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

هل هذا كل ما يعني أن تفاعلات JCA من جانب العميل تجاوز مكون جانب الخادم من خادم التطبيق؟ أين توجد حدود الشبكة في api jca؟

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

المحلول

هل هذا كل ما يعني أن تفاعلات JCA من جانب العميل تجاوز مكون جانب الخادم من خادم التطبيق؟ أين توجد حدود الشبكة في api jca؟

afaik، نعم. سيكون هناك JNDI محلي وسيعيد JNDI المحلي الاتصالات المحلية. نفسه إذا كان هذا صحيحا لنوع آخر من الكائن في JNDI، مثل هذه القيمة التكوين (env-entry). بالطبع، إذا كنت تبحث عن EJB، فإن المصنع يعيد وكيلا للفاصوليا عن بعد، لكن JNDI لا يزال محليا لمعرفتي.

يتضمن العميل حمام السباحة الخاص به. هذه الوسيلة، كما أشرت، ستؤدي هذه الاتصالات التي تم الحصول عليها في العميل إلى آلات جانب الخادم.

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

وفقا لفلسفة J2EE، يجب أن لا يستخدم عميل التطبيق المعاملات عادة والحصول على اتصال مباشرة؛ يجب أن تتواصل فقط مع EJB البعيد.

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

ما كتبته هنا ينطبق على Glashfish على الأقل، لكنني لن أعتمد على تنفيذ متسق لهذه الميزات عبر جميع خوادم التطبيقات.

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