JAX-RS当QueryParam大于4KB时,我无法得到参数。如何配置它来解决它?

时间:2016-10-31 06:39:17

标签: java jax-rs

我正在使用JAX-RS提供服务器来处理Maven和Java项目中的HTTP POST方法。 POST正文为空,他们将参数放在网址中,如:

http://IP:PORT/url?source=aaa&xml=*********

我使用以下方法获得两个参数:

(@QueryParam("source") String source, @QueryParam("xml") String xml)

如果XML小于4 KB,则效果很好。 但是如果XML大于4KB,我将XML视为null。

1 个答案:

答案 0 :(得分:0)

我发现它不是jax-rs的限制。它受到jetty的限制。 我修改了它的JettyHttpServer.class中的dubbox

public static final String JETTY_HEADERBUFFERSIZE = "dubbo.jetty.headerBufferSize";
public static final String JETTY_REQUESTBUFFERSIZE = "dubbo.jetty.requestBufferSize";
public static final String JETTY_RESPONSEBUFFERSIZE = "dubbo.jetty.responseBufferSize";
     /**
         * you can set this values by -D when you start jvm
         * for example : -Ddubbo.jetty.headerBufferSize=32768  ( 32 * 1024 = 32768)
         * default values:
         * _headerBufferSize=4*1024;
         * _requestBufferSize=8*1024;
         * _responseBufferSize=24*1024;
         */
 SelectChannelConnector connector = new SelectChannelConnector();
        String headerBufferSize = System.getProperty(JETTY_HEADERBUFFERSIZE);
                if (headerBufferSize!=null && !headerBufferSize.isEmpty()){
                    logger.info("YOU CONFIGED THE JETTY_HEADERBUFFERSIZE:"+headerBufferSize);
                    connector.setHeaderBufferSize(Integer.parseInt(headerBufferSize));
                }
                String requestBufferSize = System.getProperty(JETTY_REQUESTBUFFERSIZE);
                if (requestBufferSize!=null && !requestBufferSize.isEmpty()){
                    logger.info("YOU CONFIGED THE JETTY_REQUESTBUFFERSIZE:"+requestBufferSize);
                    connector.setRequestBufferSize(Integer.parseInt(requestBufferSize));
                }
                String responseBufferSize = System.getProperty(JETTY_RESPONSEBUFFERSIZE);
                if (responseBufferSize!=null && !responseBufferSize.isEmpty()){
                    logger.info("YOU CONFIGED THE JETTY_RESPONSEBUFFERSIZE:"+responseBufferSize);
                    connector.setResponseBufferSize(Integer.parseInt(responseBufferSize));
                }

     server = new Server();
     server.addConnector(connector);

如果你只使用jetty或tomcat,你也可以用xml或代码配置params;