2012-01-24 18 views
5

पर बाहरी संसाधन जोड़ना मेरे पास एक जीडब्ल्यूटी है जिसे कुछ स्थिर संसाधनों तक पहुंचने की आवश्यकता है। मैं इन संसाधनों को वास्तविक/src/main/webapp निर्देशिका (नोट: मेवेन और इसी लेआउट का उपयोग करके) में रखना नहीं चाहता क्योंकि वे ऐप का हिस्सा नहीं हैं, बल्कि डेटा का हिस्सा हैं।जीडब्ल्यूटी देव मोड सर्वर (जेटी)

मेरी समस्या यह नहीं है कि तैनाती के समय इन संसाधनों को एप्लिकेशन तक पहुंच कैसे दी जाए; टॉमकैट कॉन्फ़िगरेशन के माध्यम से करना आसान होना चाहिए। बल्कि समस्या यह है कि मेरे ऐप को विकास के दौरान कुछ परीक्षण डेटा तक पहुंच कैसे दी जाए। मेरे पास मेरे जीडब्ल्यूटी ऐप पेड़ के बाहर एक निर्देशिका में कुछ टेस्ट स्थैतिक फाइलें हैं, और उन संसाधनों तक पहुंचने के लिए जीडब्ल्यूटी के देव मोड जेटी सर्वर को कॉन्फ़िगर करना चाहते हैं। यही है, मैं mvn gwt कहने में सक्षम होना चाहता हूं: चलाएं (या ग्रहण से देव मोड में ऐप चलाएं या डीबग करें), और सर्वर उन स्थिर संसाधनों की सेवा करता है।

मुझे dev मोड-नोसेवर विकल्प के बारे में पता है (और उपयोग)। हालांकि, चूंकि मैं सर्वर-साइड कोड को संशोधित कर रहा हूं, क्लाइंट कोड के साथ, सर्वर कोड को हर बार सर्वर को पुन: नियोजित करना व्यावहारिक नहीं है।

अब तक जो भी मैं कोशिश कर रहा हूं वह है मेरी वेब-आईएनएफ निर्देशिका में जेटी-वेब.एक्सएमएल फ़ाइल बनाना, और एक नया संदर्भ जोड़ें ताकि सर्वर मेरे संसाधनों की सेवा करेगा। यहाँ मेरी विफल रही घाट-web.xml प्रयास कर रहे हैं:

<Configure id="parentHandler" class="org.mortbay.jetty.handler.ContextHandler"> 
    <Set name="contextPath">/static_resources</Set> 
    <Set name="resourceBase">/real/filesystem/path/to/static/resources/</Set> 
    <Set name="handler"> 
    <New class="org.mortbay.jetty.handler.ResourceHandler"> 
     <Set name="cacheControl">max-age=3600,public</Set> 
    </New> 
    </Set> 
</Configure> 

अगर मैं डाल घाट-web.xml में है, तो जब मैं देव मोड शुरू, घाट मेरी बाह्य संसाधनों की सेवा करता है, लेकिन मेरे GWT की सेवा नहीं है एप्लिकेशन।

दूसरी ओर, यदि मैं यह कर ...

<Configure id="parentHandler" class="org.mortbay.jetty.handler.ContextHandler"> 
    <New id="newHandler" class="org.mortbay.jetty.handler.ContextHandler" > 
     <Set name="contextPath">/static_resources</Set> 
     <Set name="resourceBase">/real/filesystem/path/to/static/resources/</Set> 
     <Set name="handler"> 
      <New class="org.mortbay.jetty.handler.ResourceHandler"> 
       <Set name="cacheControl">max-age=3600,public</Set> 
      </New> 
     </Set> 
    </New> 
    <Get id="server" name="server"> 
     <Call name="setHandler"> 
      <Arg><Ref id="newHandler" /></Arg> 
     </Call> 
    </Get> 
    <Ref id="newHandler"> 
     <Set name="server"><Ref id="server" /></Set> 
    </Ref> 
</Configure> 

... जेट्टी न मेरी स्थिर सामान है और न ही मेरी GWT एप्लिकेशन कार्य करता है।

कोई सुझाव? मैं क्या गलत कर रहा हूं?

(नोट: GWT देव मोड का उपयोग करता संस्करण 6 [या 6.something] घाट की है, और यह सेट प्रोग्राम के रूप में है, तो जहाँ तक मैं देख सकता हूँ, कोई अन्य जेट्टी config फाइल में पढ़ रहे हैं।)

बहुत धन्यवाद!

+1

FWIW, जब मुझे सर्वर को कस्टमाइज़ करने की आवश्यकता होती है, तो मैं होस्टेड मोड जेटी इंस्टेंस से परेशान नहीं होता, लेकिन एक अलग सर्वर सेट करता हूं और जेटी को शुरू करने से रोकने के लिए उपयोग नहीं करता। –

+0

ठीक है, मैं कभी-कभी उस विकल्प का उपयोग करता हूं। लेकिन इसका मतलब यह है कि सर्वर सर्वर में हर बार पैकेजिंग और अन्य सर्वर में .war को तैनात करना, नहीं? और फिर अन्य सर्वर पर भी डिबगिंग सेट अप करना? मेरा मतलब है, मैं कल्पना कर सकता हूं कि यह संभव है और इसे स्वचालित करने के तरीके हैं, लेकिन यह सबसे प्रत्यक्ष विकल्प की तरह प्रतीत नहीं होता है। – Andrew

+0

मेरा सामान्य दृष्टिकोण वहां (टिप्पणियां क्योंकि यह वास्तव में समस्या को ठीक नहीं करता है) दूसरे सर्वर को मेरे विचार से बाहर चलाने के लिए है। 'एमवीएन युद्ध का उपयोग करना: विस्फोटित' सही डीआईआर के लिए सभी महत्वपूर्ण बिट्स की प्रतिलिपि बनाता है, जबकि अभी भी मुझे सामान्य के रूप में डीबग करने देता है। मुख्य अंतर यह है कि दो डीबग सत्र चल रहे हैं, और दो बटन एक के बजाय चीजों को शुरू करने के लिए क्लिक करने के लिए क्लिक करते हैं, हालांकि मुझे सर्वर से अधिक gwt dev मोड को पुनरारंभ करने की आवश्यकता है। –

उत्तर

0

जिस दृष्टिकोण का मैं उपयोग करना चाहता हूं वह एक साधारण सर्वलेट लिखना है जो किसी भी फ़ाइल को स्ट्रीम कर सकता है: http://www.exampledepot.com/egs/javax.servlet/GetImage.html, और इसे मेरे वेब.एक्सएमएल में कुछ यूआरएल पैटर्न में मैप करें।

फिर मैं अपनी कॉन्फ़िगरेशन फ़ाइलों में से किसी एक के माध्यम से कॉन्फ़िगर करने योग्य स्थिर फ़ाइलों के लिए बेस निर्देशिका आसानी से कर सकता हूं। मैं कई निर्देशिकाओं को एक साथ मिलाकर, या डीबी से फ़ाइल सामग्री प्राप्त करने जैसे मनमानी सामान भी कर सकता हूं ...

मैं इस दृष्टिकोण को पसंद करता हूं, क्योंकि यह किसी भी पर्यावरण में सभी सर्वलेट कंटेनरों के साथ काम करता है।

-1

मेरा एक काम कर:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 

<Configure class="org.mortbay.jetty.webapp.WebAppContext"> 
     <New id="sampleDS" class="org.mortbay.jetty.plus.naming.Resource">    
      <Arg>java:jboss/datasources/sampleDS</Arg> 
      <Arg> 
       <New class="oracle.jdbc.pool.OracleConnectionPoolDataSource"> 
       <Set name="URL">jdbc:oracle:thin:@127.0.0.1:1521:ORCL</Set>     
       <Set name="User">user</Set> 
       <Set name="Password">pass</Set> 
       </New> 
      </Arg> 
     </New> 
</Configure> 
  1. तहत WEB-INF
  2. डाउनलोड [jetty-naming-6.1.12.jar][1] और [jetty-plus-6.1.12.jar][2] यह लगाएं और उन्हें `वेब-INF \ lib 'के तहत रखा

पुनः प्रारंभ ग्रहण और फिर से चलाने के चाल करना चाहिए

+0

बहुत बहुत धन्यवाद! मैं इसका परीक्षण करूंगा (और उम्मीद है कि, उत्तर को सही के रूप में चिह्नित करें) जल्द ही! – Andrew

+1

-1 वह एक्सएमएल दिखाता है कि बाहरी फाइलों को स्थैतिक फाइलों के लिए संसाधन आधार के रूप में कैसे जोड़ना है, बस एक डेटासोर्स। – n3k0

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