У меня проблема с слишком быстрым закрытием соединения Socket
. Мне сказали, что мне нужно временно загрузить данные из Socket
и проанализировать их. Вот мой код:
ServerSocket listen = new ServerSocket(this.port);
Socket server;
while(i < this.maxConnections)
{
server = listen.accept();
processRequest(server);
i++;
}
ProcessRequest
protected void processRequest(Socket server) throws IOException
{
ProcessXML response = new ProcessXML(server.getInputStream());
new PrintWriter(server.getOutputStream(), true).println("response text");
}
processXML
public ProcessXML(InputStream is)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(false);
factory.setNamespaceAware(false);
Document doc = factory.newDocumentBuilder().parse(new InputSource(is));
....
}
ошибка
[Fatal Error] :2:1: Premature end of file.
org.xml.sax.SAXParseException: Premature end of file.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at ProcessXML.<init>(ProcessXML.java:22)
at Bank.processRequest(Bank.java:41)
at Bank.listen(Bank.java:25)
at BankStart.main(BankStart.java:6)
Теперь я могу сохранить содержимое server.GetInputStream()
в файл и затем передать его в DocumentBuilder
, но я думаю, что это плохое решение. Как я могу хранить контент во временном хранилище, а также иметь возможность передавать его в .parse()
, не закрывая сокет?