2016-05-15 8 views
8

का उपयोग कर आरईएसटी वेब सेवा में सेवा कक्षाओं के लिए एकाधिक पैकेज नामों को कैसे निर्दिष्ट करें, मैं दिए गए <param-name> के लिए दिए गए <param-value> को सर्वलेट के <init-param> टैग के अंतर्गत कैसे निर्दिष्ट करूं।जर्सी

<?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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 
    <display-name>com.vogella.jersey.first</display-name> 
<servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <!-- Register resources and providers under com.vogella.jersey.first package. --> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.vogella.jersey.first</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

पैरामीटर jersey.config.server.provider.packages को परिभाषित करता है, जिसमें पैकेज जर्सी वेब सेवा कक्षाओं के लिए दिखेगा: के बाद मेरे web.xml फ़ाइल है।

मैं यहां कई पैकेज नाम निर्दिष्ट करना चाहता हूं, क्योंकि मेरी सेवा कक्षाएं अलग-अलग पैकेजों में हैं। निम्नलिखित की तरह कुछ है, लेकिन उनमें से कोई भी काम करता है:

1) एकाधिक <param-value>

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>com.vogella.jersey.first</param-value> 
    <param-value>com.vogella.jersey.second</param-value> 
</init-param> 

2) एकाधिक <init-param>

<servlet> 
    ... 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.vogella.jersey.first</param-value> 
    </init-param> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.vogella.jersey.second</param-value> 
    </init-param> 

मैं यह कैसे करते हो?

+0

एफवाईआई, स्कैनिंग रिकर्सिव है। यानी 'com.vogella.jersey' उपरोक्त पैकेज दोनों को स्कैन करेगा –

उत्तर

14

आप एक <param-name> के लिए एकाधिक <param-value> निर्दिष्ट नहीं कर सकते हैं।

उपयोग इस बजाय:

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>com.pack.first;com.pack.rest.second</param-value> 
</init-param> 

;, , seperators रूप में इस्तेमाल किया जा सकता है।

+0

+1 बिल्कुल सही, धन्यवाद। क्या आप कृपया सुझाव दे सकते हैं कि इस तरह के अधिक विवरण प्राप्त करने के लिए मैं कौन से ट्यूटोरियल का अनुसरण/पढ़ सकता हूं? क्या यह सर्वलेट ट्यूटोरियल के तहत कवर किया जाएगा? – Learner

+0

@Learner सर्वश्रेष्ठ स्थान [जर्सी प्रलेखन] है (https://jersey.java.net/documentation/latest/index.html) –

+0

@Learner https://www.youtube.com/user/koushks/playlists, वहां जैक्स-आरएस के लिए यहां 2 उत्कृष्ट प्लेलिस्ट हैं। – Ramanlfc

1

रामान्ल्फ़ के उत्तर में क्रेडिट, आप पैकेज विभाजक के रूप में भी "," का उपयोग कर सकते हैं। उदाहरण के लिए:

<init-param> 
    <param-name>jersey.config.server.provider.packages</param-name> 
    <param-value>com.pkg.first,com.pkg.second</param-value> 
</init-param> 

, Ubuntu 16.04.2 के तहत परीक्षण किया बिल्ला-8.5.11

0

ऐसे कई तरीके आप जर्सी का उपयोग कर बाकी वेब सेवा में सेवा कक्षाओं के लिए कई पैकेज के नाम निर्दिष्ट करने के लिए के लिए कर रहे हैं। Ramanlfc द्वारा वर्णित उत्तर के अलावा, \n भी काम करता है।

<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.demo1.resources 
      com.demo2.resources 
     </param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping>