Hi,
with CXF 2.6 I am posting a SOAP messages to the https based web service using client side SSL certificates.
When the SOAP messages is 11 KB or less, I observed no problems and SSL communication(negotiation) + http request end successfully.
When my post is bigger than 16KBs server returns error 500. I have no such errors with HTTP POST (for requestes 16kb and bigger) when using different tools such as 'curl' or 'wget' so I assume there is no problem with the web service but rather with the way I use CXF.
I tried with JDK 6, and 7 from Oracle and IBM JDK and the issue was reproducible.
I used then tracing SSL mechanism from JDK.
http://docs.oracle.com/javase/1.5.0/docs/guide/security/jsse/ReadDebug.html
Trace shows that SSL negotiation is successful and then following happens, first HTTP header, then POST request:
%% Cached client session: [Session-1, SSL_RSA_WITH_3DES_EDE_CBC_SHA]
[read] MD5 and SHA1 hashes: len = 16
0000: 14 00 00 0C DA 1B DE DA 3C B6 D0 78 03 B0 C6 B7 ........<..x....
Padded plaintext before ENCRYPTION: len = 840
0000: 50 4F 53 54 20 2F 42 32 42 5F 4F 50 53 5F 31 37 POST /B2B_OPS_17
Content-type: text/xml
Content-Lengt: 16840
default-workqueue-2, WRITE: TLSv1 Application Data, length = 840
[Raw write]: length = 845
then I have binary information of the HTTP header
then
Padded plaintext before ENCRYPTION: len = 16408
And SOAP body starts.
...
Before I see whole SOAP body in the ascii output at almost the end of the SOAP message (but not complete) I have:
default-workqueue-2, WRITE: TLSv1 Application Data, length = 16408
[Raw write]: length = 16413
then binary SOAP debug information follows.
and then
Padded plaintext before ENCRYPTION: len = 480
and I see the rest of my SOAP request followed by:
default-workqueue-2, WRITE: TLSv1 Application Data, length = 480
[Raw write]: length = 485
Looks like if SOAP body is smaller (for example 11 kb) I do not observe such http body 'split' to two sections in the JVM debug output.
What could be the reason of such behavior?
I observed that if body is split in the JVM debug output then I get http 500 error from my remote web service. If the SOAP message is complete in one section of the JVM debug then HTTP post is successful.
Cheers,
