في Tomcat كيف يمكن لـ servlet الخاص بي تحديد الموصلات التي تم تكوينها؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

في Tomcat 5.5، يمكن أن يحتوي server.xml على العديد من الموصلات، عادةً ما يكون المنفذ 8080 فقط، ولكن بالنسبة لتطبيقي، قد يقوم المستخدم بتكوين servlet.xml الخاص به بحيث يكون لديه منافذ أخرى مفتوحة أيضًا (على سبيل المثال 8081-8088).أرغب في أن يقوم servlet الخاص بي بمعرفة منافذ اتصالات المقبس التي ستكون صالحة (أثناء Servlet.init()، لم يبدأ Tomcat الموصلات بعد.)

يمكنني العثور على server.xml وتحليله بنفسي (grotty)، ويمكنني إلقاء نظرة على أسماء سلاسل الرسائل (بعد بدء تشغيل Tomcat - ولكن كيف أعرف متى يكون الوقت مناسبًا للقيام بذلك؟) لكنني أفضل الحل الذي يمكن تنفيذه في servlet.init() الخاص بي وتحديد نطاق المنفذ الصالح.أيه أفكار؟يمكن ربط الحل بإحكام بـ Tomcat لطلبي، فلا بأس بذلك.

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

المحلول

في Tomcat 6.0 يجب أن يكون شيئًا مثل:

org.apache.catalina.ServerFactory.getServer().getServices 

للحصول على الخدمات.بعد ذلك يمكنك استخدام

Service.findConnectors

الذي يُرجع موصلًا يحتوي أخيرًا على الطريقة

Connector.getPort

انظر JavaDocs للحصول على التفاصيل.

نصائح أخرى

لماذا؟

إذا كنت بحاجة أثناء إنشاء الصفحة إلى عنوان URL لصورة أو ملف CSS، فما المشكلة ServletRequest.getLocalPort() أو الأفضل من ذلك، HttpServletRequest.getContextPath() لشيبانج كله؟

أيًا كان ما أنت على وشك فعله - فلن أسلك الطريق المحدد للقطط.

إذا كنت تريد حقًا تحديد موقع منافذ مختلفة، فقم بتكوينها لتطبيق الويب الخاص بك من خلال وسائل التكوين المعتادة - على سبيل المثال.تحديد القيم.لن يكون لديك أي اكتشاف تلقائي، ولكنه أيضًا لن يتعطل عند التحديث التالي لـ Tomcats.

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

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