2011-07-13 2 views
1

Мы модифицируем офис feng (открытый исходный код, групповой продукт в PHP, Apache и MySQL). Мы пытаемся реализовать несколько функций загрузки файлов. Это поток:Странная загрузка файлов между Sun Java и Oracle с использованием SwingWorker и HttpClient-4.1.1

(1) Пользователь нажимает кнопку (на веб-странице), загружается JNLP (2), из-за чего появляется диалоговое окно «Выбрать файл». Пользователь выбирает несколько файлов и нажимает «Загрузить», (3), затем файлы загружаются в цикле, а индикатор выполнения обновляется после каждого файла.

Теперь внутри mfu.jar (ядро для загрузки нескольких файлов). Мы используем apache httpclient-4.1.1 вместе с SwingWorker для загрузки файлов и обновления индикатора выполнения [многопоточность, я сказал вам, насколько мы круты? ;-)]. Странно, что на машинах, использующих Sun's java (появляется логотип Sun), все работает отлично. На машинах, использующих Open JDK или Oracle Java (появляется логотип Oracle, либо Linux, либо Windows, 32 бит или 64 бит) вместо того, чтобы загружать разные файлы ровно один раз, мы заканчиваем тем, что один из них загружается несколько раз (одно имя, то же содержимое)!

любые подсказки?

P.S: Я прошу прощения, если данных недостаточно, я попытался сосредоточиться на проблеме в отношении моего понимания факторов, способствующих этому.

EIDT: Очевидно, что httpclient-4.1.1 использует какой-то механизм кэширования, все еще не может найти строгих отношений.

+0

До сих пор отключение многопоточного материала могло бы решить проблему. Мы проверяем это. –

ответ

0

Решение проблемы. Как-то мы забыли рассмотреть некоторые из основных принципов многопоточности, и все то, что SwingWorker s пытались использовать один и тот же uploader одновременно. Мы дали каждому SwingWorkrer свои uploader, и все работает отлично.