2012-08-23 61 views
0

我的程序應該向https站點發出多個POST請求,並且每次執行新請求時都需要它執行SSL握手。 但是,它似乎只是第一次握手,然後使用現有連接來執行其他請求而無需新的握手。我確信它以後不會進行握手,因爲第一次需要大約700毫秒來完成請求並接收響應,但後來只需要大約30毫秒。如何使用Jersey客戶端爲每個POST請求建立新的連接

下面是如何初始化客戶端:(我在這裏缺少一些財產?)

SSLContext context = SSLContext.getInstance("SSL"); 
    context.init(kms, trustAllCerts, null); 
    SSLContext.setDefault(context); 

    ClientConfig config = new DefaultClientConfig(); 
    config.getProperties().put(ClientConfig.PROPERTY_READ_TIMEOUT, timeout * 1000); 
    config.getProperties().put(ClientConfig.PROPERTY_FOLLOW_REDIRECTS, false); 
    config.getFeatures().put(ClientConfig.FEATURE_DISABLE_XML_SECURITY, true); 
    client = Client.create(config); 

這裏就是我做的實際要求:

ClientResponse cr = service.type(MediaType.APPLICATION_XML).accept(MediaType.APPLICATION_XML).post(ClientResponse.class, batch); 

(服務變量是生成器類,創建ClientRequest。它是指定URL的地方。)

有什麼想法嗎?

+1

「我需要它在每次執行新請求時都進行SSL握手。」爲什麼? –

+0

用於測試服務器如何處理請求。 – user1619880

回答

0

HTTP具有持續連接,並且SSL具有可恢復的會話,這兩者都專門用於防止您試圖完成的任務。

如果您深入瞭解服務器的內部功能,您可能會將它們都以某種方式關閉以用於測試目的,但我真的沒有看到測試您將在生產環境中部署的配置的問題。

+0

感謝您的澄清。看起來我可能不得不使用Jersey以外的東西,因爲我無法找到在Jersey框架中關閉的正確設置。 – user1619880

相關問題