Когда файл загружается с медленным (только) соединением, используя мой CXF REST API, я получаю ошибку Couldn't find MIME boundary
. Поэтому я отладил основной код CXF, чтобы понять, почему. Теперь я смотрю на этот код CXF Core [1].
private static boolean readTillFirstBoundary(PushbackInputStream pbs, byte[] bp) throws IOException {
// work around a bug in PushBackInputStream where the buffer isn't
// initialized
// and available always returns 0.
int value = pbs.read();
pbs.unread(value);
while (value != -1) {
value = pbs.read();
Когда соединение клиента с сервером очень медленное, первое значение входного потока почти всегда -1
. Это приводит к ошибке Couldn't find MIME boundary
на более позднем этапе потока.
Если я изменю код, чтобы пропустить первый байт, если он -1, как показано ниже, он будет работать плавно.
private static boolean readTillFirstBoundary(PushbackInputStream pbs, byte[] bp) throws IOException {
// work around a bug in PushBackInputStream where the buffer isn't
// initialized
// and available always returns 0.
int value = pbs.read();
if (value == -1) { <<<<<< if the first byte is -1,
value = pbs.read(); <<<<<< ignore that and read the
} <<<<<< next byte
pbs.unread(value);
while (value != -1) {
value = pbs.read();
Есть идеи, в чем может быть причина?
[1] https://github.com/apache/cxf/blob/cxf-3.2.8/core/src/main/java/org/apache/cxf/attachment/AttachmentDeserializer.java#L264