JVM will create two sockets to send two requests for 1.jar and 2.jar at the same time.
However, we see problems if the web server is single-threaded and can only process requests one by one. Then if JVM wait for response on socket B first, our web server will timeout in 30s and JVM can only receive a partial Jar file on socket A.
Web Server JVM
| |
| request 1.jar |
|<-------------------------------------------------|
| on socket A |
| |
| request 2.jar |
|<-------------------------------------------------|
| on socket B |
| |
| |
| Send 1.jar |
|--------------------------> Socket A |
| | | |
| | | | Waiting for response
| | | | on socket B
| Send Timeout(30s) | | |
|<--------------------------/ | |
| (only sent part of file) | |
| | |
| | |
| | |
| Send 2.jar | |
|---------------------> Socket B -+--------------->| Receive 2.jar
| | |
| | |
| | | Waiting for response
| | | on socket A
| | |
| | |
| | |
| | |
| ---------------->| Receive part of 1.jar
| | from socket A
| |
| Close socket A after 15s | Receive socket A close,
display timeout
We request JVM to wait for response according to the request sequence. In this case, it should wait for response of 1.jar first, then wait for response of 2.jar.
This problem did not occur on JRE 1.4.2 and 1.5.
This impacts our product in that our customers cannot use Remote Control applets under JRE 1.6.
However, we see problems if the web server is single-threaded and can only process requests one by one. Then if JVM wait for response on socket B first, our web server will timeout in 30s and JVM can only receive a partial Jar file on socket A.
Web Server JVM
| |
| request 1.jar |
|<-------------------------------------------------|
| on socket A |
| |
| request 2.jar |
|<-------------------------------------------------|
| on socket B |
| |
| |
| Send 1.jar |
|--------------------------> Socket A |
| | | |
| | | | Waiting for response
| | | | on socket B
| Send Timeout(30s) | | |
|<--------------------------/ | |
| (only sent part of file) | |
| | |
| | |
| | |
| Send 2.jar | |
|---------------------> Socket B -+--------------->| Receive 2.jar
| | |
| | |
| | | Waiting for response
| | | on socket A
| | |
| | |
| | |
| | |
| ---------------->| Receive part of 1.jar
| | from socket A
| |
| Close socket A after 15s | Receive socket A close,
display timeout
We request JVM to wait for response according to the request sequence. In this case, it should wait for response of 1.jar first, then wait for response of 2.jar.
This problem did not occur on JRE 1.4.2 and 1.5.
This impacts our product in that our customers cannot use Remote Control applets under JRE 1.6.