2014-08-31 7 views
6

आरईएसटी सेवाओं के साथ जंगली उड़ान 8.1 में, मैं सीओआरएस कंटेनररक्वैस्टफिल्टर और कंटेनर रिस्पॉन्सफिल्टर को कार्यान्वित करना चाहता था।कंटेनर रिस्पॉन्सफिल्टर काम नहीं कर रहा

मेरा अनुरोध फिल्टर ठीक से काम कर रहा है, लेकिन ContainerResponseFilter भरी हुई है और न ही

package org.test.rest; 

import java.io.IOException; 

import javax.ws.rs.container.ContainerRequestContext; 
import javax.ws.rs.container.ContainerResponseContext; 
import javax.ws.rs.container.ContainerResponseFilter; 
import javax.ws.rs.container.PreMatching; 
import javax.ws.rs.ext.Provider; 

@Provider 
@PreMatching // <-- EDIT : This was my mistake ! DO NOT ADD THIS 
public class CorsResponseFilter implements ContainerResponseFilter { 
    public CorsResponseFilter() { 
     System.out.println("CorsResponseFilter.init"); 
    } 

    @Override 
    public void filter(ContainerRequestContext req, 
      ContainerResponseContext resp) throws IOException { 
     System.out.println("CorsResponseFilter.filter"); 
     resp.getHeaders().add("Access-Control-Allow-Origin", "*"); 
     resp.getHeaders().add("Access-Control-Allow-Credentials", "true"); 
     resp.getHeaders().add("Access-Control-Allow-Methods", 
       "GET, POST, DELETE, PUT"); 
     resp.getHeaders().add("Access-Control-Allow-Headers", 
       "Content-Type, Accept"); 
    } 

} 

कहा जाता है यह एक Wildfly/resteasy बग के रूप में मुझे लगता है हो जाता है कभी नहीं। क्या आपके पास कोई और विचार है/क्या मुझे कुछ याद आ रहा है?

उत्तर

5

आप अपने प्रश्न में ContainerRequestFilter और ContainerResponseFilter मिश्रण कर रहे हैं। जैसा कि आप ग्राहक को अतिरिक्त शीर्षलेख भेजना चाहते हैं ContainerResponseFilter सही है।

@PreMatching एनोटेशन ContainerRequestFilter पर लागू किया जा सकता है "यह इंगित करने के लिए कि वास्तविक संसाधन मिलान होने से पहले इस तरह के फ़िल्टर को एप्लिकेशन में सभी संसाधनों पर विश्व स्तर पर लागू किया जाना चाहिए"।

इसे ContainerResponseFilter में जोड़ना समझ में नहीं आता है। बस एनोटेशन हटा दें और आपके फ़िल्टर को काम करना चाहिए।

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