Привет All! не получается распарсить xml-файл который загружается на сервер через web-форму. для обработки загрузки файла использую пакет org.apache.commons.fileupload Подскажите плз знающие, куда копать.
PS: парсер отдельно от сервлета работает (причем с тем же xml-файлом который я пытаюсь загрузить через форму).
выдается ошибка:
| Код | 02.07.2008 15:32:13 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet RecepientsImporter threw exception org.xml.sax.SAXParseException: Premature end of file. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174) at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388) at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1411) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1037) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) at my.package.rimporter.RecepientsImporterServlet.processRequest(RecepientsImporterServlet.java:60) at my.package.rimporter.RecepientsImporterServlet.doPost(RecepientsImporterServlet.java:99) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:619)
|
вот код метода processRequest сервлета:
| Код | protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=cp1251");
PrintWriter out = response.getWriter(); try { out.println("<html>"); out.println("<head>"); out.println("<title>Servlet RecepientsImporter</title>"); out.println("</head>"); out.println("<body>");
if (ServletFileUpload.isMultipartContent(request)) { Object description_attr = request.getAttribute("description"); String description = null; if (description_attr != null) description = description_attr.toString(); RecipientsXMLParser parser = new RecipientsXMLParser(description); ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory()); FileItem uploadedFile = null; try { uploadedFile = (FileItem) servletFileUpload.parseRequest(request).get(0); XMLReader xr = XMLReaderFactory.createXMLReader(); xr.setContentHandler(parser); xr.setErrorHandler(parser); InputStream in = uploadedFile.getInputStream(); InputSource source = new InputSource(in); source.setEncoding("Windows-1251"); xr.parse(source); } catch (SAXException xml_e) { throw new ServletException(xml_e); } catch (FileUploadException ex) { throw new IOException(ex); } //uploadedFile.getInputStream(); out.println("<h1>" + uploadedFile.getName() + "</h1>"); } else {// сервлету переданна неправильная форма throw new ServletException("Form must be multipart!"); }
out.println("</body>"); out.println("</html>"); } finally { out.close(); } }
|
|