6

RESTEasy非同期サポートを使用しています。しかし、それは私のJSONPfilterを壊します。

public class JSONPFilter implements Filter {

    private static final Logger logger = LoggerFactory.getLogger(JSONPFilter.class);

    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {

        String callbackName = request.getParameter("callback");

        if (callbackName != null) {

            ServletOutputStream sos = response.getOutputStream();
            sos.print(callbackName + "(");
            chain.doFilter(request, response);
            sos.print(");");
        } else {

            chain.doFilter(request, response);
        }
    }


curl http://localhost:8088/v0/chat?callback=jsonp
jsonp();{"data":"hello world: 53","timestamp":"2012-11-26T05:04:26.000Z"}

正しい結果は次のようになります。

jsonp({"data":"hello world: 53","timestamp":"2012-11-26T05:04:26.000Z"});

フィルタは、非同期サーブレットでは正常に機能します。@WebFilterを追加してみました

@WebFilter(urlPatterns = "/*", asyncSupported = true)
public class JSONPFilter implements Filter {

しかし、サーバーが@WebFilterを認識していないようです。これは、web.xmlのエントリを削除すると、フィルターがまったく機能しなくなったためです。

追加してみました

<async-supported>true</async-supported>

今のところ運がない。

ちなみに私は組み込みのJettyv8.13を使用しています

4

0 に答える 0