2013-10-09 6 views
7

मेरे पास जर्सी रीस्टफुल वेब सेवा प्रोजेक्ट है। मैंने जर्सी कंटेनर को वेब.xml में कॉन्फ़िगर किया है और सब कुछ ठीक काम करता है।जर्सी कंटेनर में स्वागत फ़ाइल (एचटीएमएल/जेएसपी) को कॉन्फ़िगर कैसे करें

उसी प्रोजेक्ट में, मैंने एक HTML पृष्ठ पेश किया है और <welcome-file-list> में कुछ अन्य गैर-आरईएसटी अनुरोध को संभालने के लिए शामिल किया है। लेकिन जब मैं यूआरएल तक पहुंच रहा हूं, स्वागत फ़ाइल प्रदर्शित नहीं होती है।

मैंने वेब.xml में जर्सी कंटेनर कॉन्फ़िगरेशन पर टिप्पणी करने के बाद और एप्लिकेशन को तैनात किया, इस बार मैं स्वागत फ़ाइल तक पहुंचने में सक्षम हूं।

टॉमकैट 7, जेडीके 7, जर्सी 2.2 और ग्रहण जूनो का उपयोग कर रहा हूं। जब जर्सी ने कॉन्फ़िगर किया है तो स्वागत फ़ाइल कैसे काम करें? क्या जर्सी के साथ कोई सीमाएं हैं या क्या मुझे इसे प्राप्त करने के लिए अलग-अलग तरीके से कॉन्फ़िगर करने की आवश्यकता है?

मेरे web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com /xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>My Service</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.my.rest.service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup>  
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping>  
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    </welcome-file-list> 
</web-app> 
+1

Have की तरह कुछ हो सकता है आपने जोड़ने की कोशिश की web.xml पर स्वागत-फ़ाइल-सूची टैग। यह काम करना चाहिए। नीचे की तरह कुछ .. \t <स्वागत-फ़ाइल-सूची><स्वागत-फ़ाइल> index.html \t \t <स्वागत-फ़ाइल> index.htm \t \t <का स्वागत करते हैं -फाइल> index.jsp \t

+1

कृपया अपना वेब.एक्सएमएल कॉन्फ़िगरेशन भी साझा करें – Jk1

+0

पोस्ट किया गया web.xml, मैंने सूची में भी स्वागत फ़ाइल जोड़ दी है। – Murugesh

उत्तर

9
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>com.webservice.services</display-name> 
    <servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.webservice.services</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/service/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 


कोशिश URL पैटर्न। जब सर्वर शुरू होता है तो यह फ़ाइल प्रदर्शित करता है और स्वागत करता है।

+0

हां, मैंने इसे बदल दिया है। सभी आरईएसटी सेवा अनुरोध पथ http: // /<संदर्भ रूट>/सेवा में संभाले जाएंगे और स्वागत फ़ाइल को सामान्य तरीके से एक्सेस किया जाएगा। यह ठीक काम कर रहा है। आरईएसटी कंटेनर में रखते हुए/* स्वागत पृष्ठ को उपलब्ध संसाधन के रूप में नहीं बनाता है। और सभी अनुरोध जर्सी कंटेनर पर जाएंगे। – Murugesh

0

आप जर्सी उपयोग करते हैं, सभी अनुरोधों जर्सी सर्वलेट अर्थात ServletContainer करने के लिए निर्देशित कर रहे हैं। तो यदि कोई अनुरोध जो किसी भी मैप किए गए आराम वर्ग से मेल नहीं खाता है, तो यह 404 फेंकता है। लेकिन आप आने वाले अनुरोध को रोकने के लिए हमेशा सर्वलेट फ़िल्टर जोड़ सकते हैं। भेजे HTTP अनुरोध यूआरएल (डिफ़ॉल्ट रूप/स्वागत आदि) के आधार पर आप यह weclome पृष्ठ पर रीडायरेक्ट करने का निर्णय ले सकते हैं:

HttpServletResponse httpResponse = (HttpServletResponse) response; 
httpResponse.sendRedirect("/welcome.jsp"); 
0

मैं सिर्फ जानने के लिए उत्सुक हूँ, नीचे दिए गए उदाहरण में काम करेंगे?

HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendRedirect("/welcome.jsp"); यदि यह होगा, तो यह sendRedirect() कहलाएगा? एक सर्वलेट में, इसलिए यदि मैं गलत नहीं हूं, तो एक सर्वलेट होना चाहिए, जो redirects पृष्ठ का अनुरोध है, है ना? बाकी के लिए ऊपर दिए गए की तरह अलग अलग पथ (/ सेवा/*) से

5

अपने वर्तमान सर्वलेट मानचित्रण

<servlet-mapping> 
<servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/*</url-pattern> 

जो जर्सी के लिए हर अनुरोध रीडायरेक्ट कर देता है। तो स्वागत पृष्ठ दृश्यमान बनाने के लिए आप

<servlet-mapping> 
<servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/rest</url-pattern> 

इस पैटर्न की तरह प्रवेश की तरह

http://localhost:8080/rest/

और इस तरह यूआरएल केवल यूआरएल के लिए जर्सी कॉल करेंगे बनाने की जरूरत है

http://localhost:8080/index.html

को जर्सी सर्वलेट पर रीडायरेक्ट नहीं किया जाएगा।

एक ही परिदृश्य लक्ष्यीकरण एक परियोजना https://github.com/skohli0302/jims

+0

हां मैंने यह बिल्कुल किया है। धन्यवाद – Murugesh

3

पर होस्ट की है web.xml में:

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/somethinghere/*</url-pattern> 
</servlet-mapping> 
बजाय

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
0

आप

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/index.html</url-pattern> 
</servlet-mapping> 
संबंधित मुद्दे