2016-10-31 27 views
1

我正在使用JAX-RS提供一个服务器来处理Maven和Java项目中的HTTP POST方法。 的POST身体是空的,他们把参数的URL,比如:JAX-RS当QueryParam大于4KB时,我无法得到参数。如何配置它来解决它?

我用下面的方法来获得两个参数:

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

如果XML是在4 KB,它运作良好。 但是,如果XML大于4KB,我会将XML取为空。

+0

添加一些东西,我不能把xml放在帖子正文中。我们必须将其放入网址中,这是其他公司的要求 –

+0

url的大小有限制。看看这个:http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url-in-different-browsers –

+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或代码配置参数;

相关问题