У нас есть набор служебных программ, которые читают файл .xlsx для некоторых входных данных и создают отчеты, для этой цели используется Apache POI. Файл Excel получил 8 листов со средним числом 50 строк и 20 столбцами данных. Все нормально работало в обычном окне Windows 7 (читайте разработчику машину). Чтение файла закончится через несколько секунд.Apache POI в Window Server 2012 R2
Недавно мы переместили эти задания в окно Windows Server 2012 R2, и мы заметили, что последний лист в файле excel занимает много времени, чтобы закончить чтение. Я дублировал последний лист, чтобы подтвердить, что это не проблема с данными и выполнение задания, второй последний лист (был последним в предыдущем исполнении) получил завершенное чтение за миллисекунды, а последний (дублированный лист) снова получил застрял в течение 15 минут. Мое лучшее предположение заключается в том, что это может быть связано с тем, что время, затраченное на закрытие файла, становится слишком высоким, но это просто предположение и никаких конкретных доказательств, подтверждающих это, также, если это так, я не уверен, почему так. Только разница между рабочими окнами Windows и нерабочими ящиками - это ОС, остальные конфигурации одинаковы. Я проанализировал кучу и свалку нитей, и проблем не обнаружено.
Есть ли какие-либо известные проблемы совместимости с полями POI и Windows Server? Или это связано с кодом? Мы используем реализацию POI-XSSF.
'Apache POI' - это программное обеспечение' Java'. Поэтому он не запускается в «Windows Box» напрямую, а в виртуальной машине Java в среде выполнения Java. Поэтому я бы сравнил версии Java JRE между системами Windows и посмотрел на выполнение [системных требований для Java] (https://www.java.com/en/download/help/sysreq.xml). –
Я сделал сравнение, и виртуальные машины такие же, как и на Java 1.8. Нет проблем при работе с виртуальной машиной Java, как я упоминал в своей проблеме, чтение файла Excel всегда застряло на последнем листе. – Rajeev
Тогда следующее, что я сделал бы, это создать наименьший возможный пример, который только читает '* .xlsx', содержащий несколько листов так же, как вы делаете это в своей текущей программе. Только без всякой вещи вокруг этой простой задачи. Тогда я проверил бы это в обеих системах. Если производительность отличается даже в самой маленькой форме, вы можете опубликовать здесь код и спросить, почему он отличается. В противном случае добавьте дополнительный материал, который вы делаете в своей текущей программе, и повторите тест. Делайте это до тех пор, пока не произойдет различие в производительности. В большинстве случаев вы знаете, в чем причина. Если нет, вы можете опубликовать код –