मैं जर्सी & Google गुइस 3.0 का उपयोग करके, एक ही सर्वलेट में 2 अलग-अलग यूआरएल पैटर्न मैप करने के लिए कोशिश कर रहा हूं और इनमें से प्रत्येक यूआरएल पैटर्न को अलग-अलग पर लागू किया जा सकता है मेरे प्रोजेक्ट में पैकेज।Google गुइस और जर्सी एकाधिक यूआरएल पैटर्न
स्पष्ट होने के लिए मैं नीचे दिए गए कोड का हिस्सा चिपका रहा हूं और मैं समझाऊंगा।
web.xml
<listener>
<listener-class>com.abc.web.listeners.GuiceContextListener</listener-class>
</listener>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
GuiceContextListener
public final class GuiceContextListener extends GuiceServletContextListener {
...
private JerseyServletModule getJerseyServletModule() {
JerseyServletModule jerseyModule = new JerseyServletModule() {
@Override
protected void configureServlets() {
filter("/*").through(WebServerStateFilter.class);
final Map<String, String> params = new HashMap<String, String>();
StringBuilder sb = new StringBuilder();
sb.append("com.abc.web.stats.services");
params.put(PackagesResourceConfig.PROPERTY_PACKAGES, sb.toString());
serve("/api/v1/*").with(GuiceContainer.class, params);
final Map<String, String> params1 = new HashMap<String, String>();
StringBuilder sb1 = new StringBuilder();
sb1.append("com.abc.web.stats.otherservices");
params1.put(PackagesResourceConfig.PROPERTY_PACKAGES, sb1.toString());
serve("/api/*").with(GuiceContainer.class, params1);
}
}
}
...
}
तो बुनियादी तौर पर मैं चाहता हूँ:
- यूआरएल के साथ "/ API/v1/*" शुरू करने पैकेज "com.abc.web.stats" में सेवाओं द्वारा servlet GuiceContainer के माध्यम से संभाला जाएगा। सेवाओं/api/* " पैकेज में सेवाओं द्वारा एक ही सर्वलेट GuiceContainer माध्यम से नियंत्रित किया जा करने के लिए" com.abc.web.stats "
- के साथ शुरू यूआरएल"। otherservices "
मैं कोड से ऊपर थे, लेकिन यह काम करने के लिए, ऐसा लगता है कि केवल पहले प्रतीत नहीं होता है" सेवा "कॉल इस मामले में तो ध्यान में रखा ही URL को मिलान"/API/v1/* "परोसा जाता है। मैं हार्डकोड नहीं करना चाहता" "मेरी सेवाओं में के बाद से संस्करण (करने के लिए बदल सकता है" v1 भविष्य में वी 2 ")।
किसी ने मुझसे मदद कर सकते हैं?
धन्यवाद, पॉल