यहां बताया गया है कि मैंने यह कैसे किया, और मुझे प्रत्येक साइट के लिए अलग-अलग SSL certs भी सेट किए गए (दिखाया नहीं गया)। मैं जो कुछ जानता हूं उसे समझने का दावा नहीं करता लेकिन यह कई प्रतिष्ठानों में मेरे लिए काम कर रहा है। आपको प्रत्येक उदाहरण के लिए "jetty.xml" और "contexts.xml" फ़ाइल की आवश्यकता है।
मान लें घाट/opt/जेट्टी ...
लॉन्च स्थापित किया गया है सर्वर jetty.xml के दो संस्करणों (यह, एकल स्क्रिप्ट में किया जा सकता दिखाया गया है, या दो अलग-अलग में संदर्भित के दो उदाहरणों लांच स्क्रिप्ट)
start.sh ...
cd /opt/Jetty
java -jar start.jar etc/jetty.xml etc/jetty2.xml
आप एकाधिक आईपी के आप प्रत्येक घाट के कनेक्टर अनुभाग में विभिन्न आईपी के या होस्टनाम निर्दिष्ट करने के लिए context.xml फ़ाइलों का उपयोग कर सकते हैं के साथ एक सर्वर है, तो। एक्सएमएल फ़ाइल। यदि आपके पास केवल एक आईपी है, तो आप दो उदाहरणों के बीच अंतर करने के लिए संदर्भ xml में संदर्भ पथ सेटिंग का उपयोग करेंगे।
jetty.xml में
, आईपी या मेजबान, और निर्देशिका का उल्लेख 1 उदाहरण के लिए context.xml को रोकने के लिए:,
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host">HOST OR IP FOR FIRST INSTANCE</Set>
<Set name="port"><SystemProperty name="jetty.port" default="80"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts/directory_for_FIRST_instance</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
jetty.xml में
को देखें आईपी या मेजबान, और निर्देशिका 2 उदाहरण के लिए context.xml को रोकने के लिए:
<Call name="addConnector">
<Arg>
<New class="org.mortbay.jetty.nio.SelectChannelConnector">
<Set name="host">HOST OR IP FOR SECOND INSTANCE</Set>
<Set name="port"><SystemProperty name="jetty.port" default="80"/></Set>
<Set name="maxIdleTime">30000</Set>
<Set name="Acceptors">2</Set>
<Set name="statsOn">false</Set>
<Set name="confidentialPort">443</Set>
<Set name="lowResourcesConnections">5000</Set>
<Set name="lowResourcesMaxIdleTime">5000</Set>
</New>
</Arg>
</Call>
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.ContextDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="configurationDir"><SystemProperty name="jetty.home" default="."/>/contexts/directory_for_SECOND_instance</Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
यदि ऊपर दिखाए गए अनुसार परिभाषित किया गया है, तो आप युद्ध फ़ाइल को पुनः लोड कर सकते हैं और संदर्भ xml फ़ाइल को स्पर्श करके एप्लिकेशन को पुनरारंभ कर सकते हैं।
संदर्भ निर्देशिका की अलग-अलग उप-निर्देशिकाओं में अलग संदर्भ फ़ाइलों को रखें, प्रत्येक एक ही युद्ध फ़ाइल को इंगित करता है, लेकिन विभिन्न संदर्भ पथ और विभिन्न वर्चुअल होस्ट के साथ।
/opt/Jetty/contexts/subdirectory_for_first_instance/context_first.xml
/opt/Jetty/contexts/subdirectory_for_second_instance/context_second.xml
context_first.xml में
- यदि आप एक नोड (firstapp) निर्दिष्ट कर सकते हैं कि हमेशा होगा अपने पहले ऐप से लिंक
<Set name="contextPath">/firstapp</Set>
संदर्भ_सेकंड में लिंक।एक्सएमएल - यदि आप एक नोड (firstapp) कि हमेशा अपने दूसरे एप्लिकेशन से लिंक करेगा निर्दिष्ट कर सकते हैं
<Set name="contextPath">/secondapp</Set>
(ऊपर आवश्यक (दो अलग संदर्भ पथ है) करता है, तो आप उन्हें एक ही आईपी से चलाना चाहते हैं, मेरा मानना है)
फिर दो आभासी मेजबान को परिभाषित अलग संदर्भ फ़ाइलों में (यूआरएल जो ब्राउज़र द्वारा किया जा रहा है नक्शा चाहिए):
context_first.xml में:
<Set name="virtualHosts">
<Array type="String">
<Item>www.my_first_app.com</Item>
</Array>
</Set>
और context_second.xml
में
<Set name="virtualHosts">
<Array type="String">
<Item>www.my_second_app.com</Item>
</Array>
</Set>
नोट: अगर आप दो आईपी या मेजबान के नाम है, तो आप दोनों क्षुधा के संदर्भ पथ सेट "/"
यदि आप केवल एक आईपी है, संदर्भ पथ का निर्धारण करेगा करने के लिए जो आवेदन
पहुँचा जा सकता है कर सकते हैं
इसके अलावा, और महत्वपूर्ण बात यह है कि आप अपने आवेदन में संदर्भ पैरामीटर भेज सकते हैं ताकि यह निर्धारित हो सके कि यदि आवश्यक हो तो यह कौन सा उदाहरण है।
संदर्भ मानकों का उदाहरण प्रत्येक उदाहरण के लिए अद्वितीय मान भेजने का:
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Custom context configuration -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<Set name="initParams">
<New class="java.util.HashMap">
<Put name="customer">Joes Fish Store</Put>
<Put name="ShowPanelNames">N</Put>
<Put name="FiscalYearStartMonth">10</Put>
<Put name="LiveEmail">Y</Put>
</New>
</Set>
मान लिया जाये कि आप लागू कर सकते हैं एकाधिक संदर्भों में एक एकल युद्ध फ़ाइल, आप विभिन्न कॉन्फ़िगरेशन कैसे लोड कर रहे हैं? पथ के आधार पर? क्या होगा यदि उपयोगकर्ता http: // myhost/magazines /../ books/... जैसे यूआरएल में प्रवेश करता है? – mrk
ऐसा लगता है कि आप जेटी को यातायात के लिए टॉमकैट कनेक्टर का उपयोग करके अपाचे फ्रंट एंड के माध्यम से मतभेदों को संभालने का प्रयास करना बेहतर हो सकते हैं। – Griff