|
|
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Столкнулся с какой-то загадочной проблемой. Конечно, все загадочные проблемы обычно имеют простое решение, но что-то до меня пока не доходит. Итак, имеется sax parser и validator. Также имеются xml и xsd. На вход подается InputStream. Он прогоняется через validator, зачем через unmarshaller, где создаются объекты на основе xml. Сделал тест, тест проходит на ура, все отлично. Дальше интересней. Сделал форму, через нее отправляю xml. В сервлете использую org.apache.commons.fileupload для того, чтобы взять контент файла. Далее inputSource уходит к валидатору - валидация проходит. В момент же parse вылетает ошибка: org.xml.sax.SAXParseException: Premature end of file. Я уже и не знаю что думать. Подскажите, в какую сторону копать? Смотрел полученный файл - в нем все нормально. Тем более, он проходит xsd валидацию в коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 11:23:04 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Who am I В сервлете использую org.apache.commons.fileupload для того, чтобы взять контент файла. Покажи кусок кода, который берет InputStream через org.apache.commons.fileupload. Попробуй сперва считать весь файл в некий байтовый буфер, и только после этого создавать inputSource - уже из буфера, что будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 11:52:55 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
OOsalivanWho am I В сервлете использую org.apache.commons.fileupload для того, чтобы взять контент файла. Покажи кусок кода, который берет InputStream через org.apache.commons.fileupload. Попробуй сперва считать весь файл в некий байтовый буфер, и только после этого создавать inputSource - уже из буфера, что будет? Пробовал. Брал контент в виде String и отдавал ByteArrayInputStream. 1. boolean isMultipart = ServletFileUpload.isMultipartContent(request); 2. List<FileItem> items = upload.parseRequest(request); 3. processor.processWebFormIncoming(item.getInputStream()) Я думаю все в порядке с этим, ведь валидацию xsd проходит.. Начал гуглить на тему tomcat + apache xerses. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 12:00:36 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Who am I Сделал тест, тест проходит на ура, все отлично. Раз с локальным файлом все происходит на отлично, то дело именно в загрузке файла через org.apache.commons.fileupload. Почему и спросил про кусок кода. Как вариант - попробуй для инстанса ServletFileUpload (если используется он) установить максимальный размер this.setSizeMax(maxSize). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 12:19:16 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Не помогает. Сейчас попробую просто через Post без формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 12:25:09 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
В общем, попробовал через обычный Post запрос - та же самая ошибка. Тесты по-прежнему проходят. Валидатор тоже успешно справляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 13:48:05 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Забавно. ) Ошибка проявляется тогда, когда я предварительно валидирую документ. Если валидацию убираю - все проходит успешно. Возможно, он что-то делает с InputSource у себя внутри.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 14:11:15 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
В общем, проблема временно решена следующим дурацким образом: В метод отдаю String. Для валидатора и маршаллера создаю два разных InputStream. Теперь все ок. Остается вопрос - что такое творит валидатор... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 14:18:09 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Тем, кому интересно, валидатор: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2009, 14:19:54 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
Судя по коду, валидатор успешно читает входной поток - после его работы следующему, естественно, ничего не остается ... Надо либо дальше передавать InputSource и объекта DOM созданного в валидаторе, либо, что лучше - включить валидацию прямо в маршаллере. Tomcat использует Xerces, смотри документацию и примеры, как включить валидацию в парсере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2009, 10:02:06 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
пролетевшийСудя по коду, валидатор успешно читает входной поток - после его работы следующему, естественно, ничего не остается ... Надо либо дальше передавать InputSource и объекта DOM созданного в валидаторе, либо, что лучше - включить валидацию прямо в маршаллере. Tomcat использует Xerces, смотри документацию и примеры, как включить валидацию в парсере. Понял, спасибо. Открыл для себя новое в Java IO =) Хотя это всегда было моей слабой стороной ввиду малочисленного использования данного API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2009, 10:05:25 |
|
||
|
Premature end of file ?
|
|||
|---|---|---|---|
|
#18+
пролетевшийСудя по коду, валидатор успешно читает входной поток - после его работы следующему, естественно, ничего не остается ... Надо либо дальше передавать InputSource и объекта DOM созданного в валидаторе, либо, что лучше - включить валидацию прямо в маршаллере. Tomcat использует Xerces, смотри документацию и примеры, как включить валидацию в парсере. Только что столкнулась с этой же проблемой: InputStream нужно было использовать три раза в различных функциях, два из них - валидатор и парсер. По сему сначала сохранила InputStream в byte[] и уже после этого работала с ним столько сколько хотела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2013, 13:40:23 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=36110862&tid=2129694]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 263ms |
| total: | 406ms |

| 0 / 0 |
