2012-10-30 18 views
7

मैंने प्राइमफेस के साथ एक एप्लिकेशन बनाया है और इसे अपाचे रिवर्स प्रॉक्सी के पीछे चलाने के लिए चाहते हैं।सबडोमेन में रिवर्स प्रॉक्सी के पीछे प्राइमफेस कैसे चलाएं?

मेरा लक्ष्य यूआरएल इस http://myserverurl.org:8080/myapplication/ जैसा दिखता है।

मैं इस http://myapplication.myserverurl.org जैसे सबडोमेन के माध्यम से एप्लिकेशन तक पहुंचना चाहता हूं।

मैं अपाचे में एक VirtualHost कॉन्फ़िगर किया है:

<VirtualHost *:80> 
    ServerName myapplication.myserverurl.org 
    ProxyPass/http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse/http://myserverurl.org:8080/myapplication/ 
</VirtualHost> 

यही नहीं इतनी अच्छी तरह से काम करता है। मैं जेएसएफ पेज देख सकता हूं, लेकिन कोई सीएसएस लागू नहीं है आदि। मैं देख सकता हूं कि पहला अनुरोध सही तरीके से रीडायरेक्ट किया गया है, लेकिन निम्न अनुरोध (jQuery, सीएसएस, आदि लोड करने के लिए) नहीं हैं।

वे http://myapplication.myserverurl.org/myapplication/faces/javax.faces.resource/primefaces.js?ln=primefaces जैसे यूआरएल तक पहुंचने का प्रयास करते हैं जो स्पष्ट रूप से गलत है। उन्हें /myapplication/ पथ फिर से शामिल नहीं करना चाहिए, क्योंकि प्रॉक्सी पहले से ही उस पथ पर रीडायरेक्ट करता है।

मैं इस मुद्दे को कैसे हल कर सकता हूं? क्या यह प्राइमफेस समस्या है या मेरी रिवर्स प्रॉक्सी कॉन्फ़िगरेशन में कोई समस्या है?

उत्तर

0

यह एप्लिकेशन सर्वर के आधार पर भिन्न हो सकता है लेकिन, मुख्य नियम के रूप में, आपको प्रॉक्सी के लिए एजेपी का उपयोग करना चाहिए।
पहला कदम ओएस के आधार पर एजेपी मॉड्यूल को सक्षम करना है। उबंटू इस तरह दिखता है।

ProxyPass/ajp://localhost:8009/myapplication 
ProxyPassReverse/ajp://localhost:8009/myapplication 

चरण 3 आवेदन सर्वर पर सक्षम करने के लिए है:

sudo a2enmod proxy proxy_ajp 

चरण 2, की तरह कुछ करने के लिए अपाचे conf में प्रॉक्सी परिभाषा बदल जाते हैं। फिर, यह आपके द्वारा उपयोग किए जाने वाले व्यक्ति के आधार पर भिन्न होता है। टोमकैट ने server.xml में एक सेक्शन आउट किया है। ग्लासफ़िश में व्यवस्थापक कंसोल में एक चेक-बॉक्स है और एक asadmin कमांड है (लेकिन मुझे यह याद नहीं है)

4

एजेपी का उपयोग (या उपयोग नहीं) का उपयोग इस विशिष्ट मुद्दे को हल करने पर कोई असर नहीं है।

प्राइमफ़ेस आंतरिक रूप से संदर्भ पथ चर का उपयोग सीएसएस और जावास्क्रिप्ट संसाधनों को शामिल करने के लिए करता है। यहां तक ​​कि AJP का उपयोग कर आप के साथ खत्म हो जाएगा:

/unwantedAppContext/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces

आप इस संभाल करने के लिए एक और प्रॉक्सी पास जोड़ने को हल करने कर सकता है क्या अवांछित संदर्भ। यह सबसे अच्छा समाधान नहीं हो सकता है, लेकिन यह काम करता है।

<VirtualHost *:80> 

    ServerName myapplication.myserverurl.org 

    ProxyPass /myapplication/ http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse /myapplication/ http://myserverurl.org:8080/myapplication/ 

    ProxyPass/http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse/http://myserverurl.org:8080/myapplication/ 
</VirtualHost> 

पास मामलों का आदेश।

यह समस्या भी icefaces मंच http://www.icesoft.org/JForum/posts/list/4433.page#sthash.h1qSqiYg.dpbs

0

mod_proxy_html मॉड्यूल से ProxyHTMLURLMap निर्देश उपयोग करने पर विचार में सूचना मिली थी। यह मॉड्यूल आउटपुट HTML लिंक को सही स्थान पर इंगित करने के लिए उपयोग करता है। आपके मामले में सभी लिंक http://myapplication.myserverurl.org/ जरूरत बताओ, वापस/करने के लिए परिवर्तित किया जाना अर्थात

ProxyHTMLURLMap http://myapplication.myserverurl.org//

इस तरह से आप किसी भी कॉल-बैक लिंक को गलत स्थान को इंगित कर रहे संशोधित कर सकते हैं।

+0

इस HTML लिंक के लिए काम करता है, लेकिन कुछ लिंक क्लाइंट साइड जे एस और 'पीआर के माध्यम से उत्पन्न कर रहे हैं oxyHTMLURLMap' उन्हें ठीक नहीं करता है। – liadmat

0

jjhavokk काम करता है के जवाब लेकिन ग्राफिक्स के लिए आप webapp में request.contextPath के माध्यम से उन्हें संदर्भ के लिए

<img src="#{request.contextPath}/resources/yourfolder/yourpng.png" /> 

प्लेस इसकी आवश्यकता/संसाधन/yourfolder/yourpng.png मेरी .css फ़ाइल के साथ यह आवश्यक नहीं था

h:outputStylesheet name="css/screen.css" 
webapp/संसाधन/सीएसएस में

संबंधित मुद्दे