कहलाता है, मैं एक छोटी सी रेस्ट सर्विस सेवा बनाकर जर्सी सीखने की कोशिश कर रहा हूं। मैं विशिष्ट कारणों से फ़िल्टर का उपयोग करना चाहता हूं (जैसे कि कंटेनर रिस्पॉन्सफ़िल्टरCORS शीर्ष डोमेन अनुरोधों को अनुमति देने के लिए शीर्षलेखों का उपयोग करना चाहते हैं)। हालांकि, मैं इन फ़िल्टरों को मेरी कॉल को अवरुद्ध करने में सक्षम नहीं हूं। मैंने इस समस्या के लिए सभी पोस्ट देखी हैं और उनमें से अधिकतर एनोटेशन प्रदाता या web.xml में पंजीकरण करने के लिए कहते हैं। मैं कंटेनरकंटेनररक्वेटफिल्टर कंटेनर रीस्पॉन्सफिल्टर डोजेंट
यहाँ के लिए एक @Provider
एनोटेशन दे रही है और साथ ही web.xml में फ़ाइलों को पंजीकृत करने की कोशिश की है मेरे web.xml है
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e194 -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/spring/config/BeanLocations.xml</param-value>
</context-param>
<servlet>
<servlet-name>Jersey Web Application</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.rest.example</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.rest.example.cors</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerResponseFilters</param-name>
<param-value>com.rest.example.CORSFilter</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.rest.example.RequestFilter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webresources/*</url-pattern>
</servlet-mapping>
</web-app>
यहाँ मेरी फिल्टर कर रहे हैं:
package com.rest.example.cors;
import javax.ws.rs.ext.Provider;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerResponse;
import com.sun.jersey.spi.container.ContainerResponseFilter;
@Provider
public class CORSFilter implements ContainerResponseFilter {
public ContainerResponse filter(ContainerRequest creq,
ContainerResponse cresp) {
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "*");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS, HEAD");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
return cresp;
}
}
package com.rest.example.cors;
import javax.ws.rs.ext.Provider;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
@Provider
public class RequestFilter implements ContainerRequestFilter {
public ContainerRequest filter(ContainerRequest request) {
System.out.println("request filter");
return request;
}
}
Link मेरी जिथब परियोजना में।
मैं यहां 2 दिनों के लिए फंस गया हूं।
धन्यवाद
जर्सी का कौन सा कंटेनर/ऐप सर्वर और संस्करण आप उपयोग कर रहे हैं? साथ ही, क्या आपने अपने जर्सी एप्लिकेशन क्लास में अपने फ़िल्टर पंजीकृत करने का प्रयास किया है? – Baldy
मैं जर्सी संस्करण 1.8 का उपयोग कर रहा हूँ। मैं वीएमवेयर वीएफएब्रिक का उपयोग कर रहा हूं जो एसटीएस के साथ आता है। हम जर्सी एप्लिकेशन क्लास में फ़िल्टर कैसे पंजीकृत करते हैं? – user2973475
अपने फ़िल्टर पंजीकृत करने के लिए, उन्हें अपने 'javax.ws.rs.core.Aplication' ऑब्जेक्ट में 'getClasses' विधि' में जोड़ें, हालांकि ऐसा लगता है कि आपका web.xml आपके लिए इसे संभालना चाहिए। क्या आपकी आरईएसटी विधियों को बुलाया जा रहा है? आप कैसे जानते हैं कि आपके फ़िल्टर नहीं बुलाए जा रहे हैं? – Baldy