2016-10-31 26 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或代碼配置參數;

相關問題