0
I have a Java webservice that is triggered to perform integrations via exchange of XML files with an ERP, it worked perfectly from the day I developed it. Yesterday morning, it went on to generate empty XML files without any change of its source code. Any request made to it generates empty files, making the interface between platforms impossible. Analyzing the server log, the following error appears:
ERROR: 'Input/output error'
javax.xml.transform.TransformerException: org.xml.sax.SAXException: Input/output error
java.io.IOException: Input/output error
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:743)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:345)
at br.com.allis.XMLFiles.RequisicaoReembolso.createXML(RequisicaoReembolso.java:252)
at br.com.allis.XMLFiles.XMLParser.generateXML(XMLParser.java:63)
at br.com.allis.ws.AllisWS.generateXML(AllisWS.java:1126)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:121)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:221)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:107)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:76)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:934)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:90)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1015)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:646)
at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1576)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1534)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.xml.sax.SAXException: Input/output error
java.io.IOException: Input/output error
at com.sun.org.apache.xml.internal.serializer.ToStream.flushWriter(ToStream.java:304)
at com.sun.org.apache.xml.internal.serializer.ToXMLStream.endDocument(ToXMLStream.java:213)
at com.sun.org.apache.xml.internal.serializer.ToUnknownStream.endDocument(ToUnknownStream.java:829)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:139)
at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:98)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:687)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:731)
... 38 more
Caused by: java.io.IOException: Input/output error
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:345)
at com.sun.org.apache.xml.internal.serializer.WriterToUTF8Buffered.flushBuffer(WriterToUTF8Buffered.java:450)
at com.sun.org.apache.xml.internal.serializer.WriterToUTF8Buffered.flush(WriterToUTF8Buffered.java:469)
at com.sun.org.apache.xml.internal.serializer.ToStream.flushWriter(ToStream.java:285)
... 44 more
I already tried to deploy the webservice again, since there was no change of its code but without success. When I run the application locally, it works...
public ReturnMsg createXML(String paramsJson) {
ReturnMsg retorno = new ReturnMsg();
try {
JsonParser parser = new JsonParser();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element root = doc.createElement("DEMANDA");
doc.appendChild(root);
JsonObject requisicao = parser.parse(paramsJson).getAsJsonObject();
String numDemanda = requisicao.get("NUM_DEM").getAsString();
int numRequisicao = Integer.parseInt(numDemanda);
this.log.setNumeroDemanda(numRequisicao);
String tpDemanda = requisicao.get("TIP_DEM").getAsString();
String codEmpresa = requisicao.get("COD_EMP").getAsString();
String cnpj = requisicao.get("CNPJ_FOR").getAsString();
String cpf = requisicao.get("CPF_FOR").getAsString();
String dtFaturamento = requisicao.get("DAT_FAT").getAsString();
String textExp = requisicao.get("TEX_EXP").getAsString();
String textCab = requisicao.get("TEX_CAB").getAsString();
String destRecurso = requisicao.get("DEST_REC").getAsString();
String motivoDespesa = requisicao.get("MOT_DESP").getAsString()
int numDestRecurso = Integer.parseInt(destRecurso);
int numMotivoDespesa = motivoDespesa != "" ? Integer.parseInt(motivoDespesa) : 0;
Element src = doc.createElement("SRC");
String txtSrc = "fluig";
Element nDemanda = doc.createElement("NUM_DEM");
Element tDemanda = doc.createElement("TIP_DEM");
Element cEmpresa = doc.createElement("COD_EMP");
Element cnpjF = doc.createElement("CNPJ_FOR");
Element cpfF = doc.createElement("CPF_FOR");
Element dtFat = doc.createElement("DAT_FAT");
Element txtExp = doc.createElement("TEX_EXP");
Element txtCab = doc.createElement("TEX_CAB");
Element itens = doc.createElement("ITENS");
src.appendChild(doc.createTextNode(txtSrc));
nDemanda.appendChild(doc.createTextNode(numDemanda));
tDemanda.appendChild(doc.createTextNode(tpDemanda));
cEmpresa.appendChild(doc.createTextNode(codEmpresa));
cnpjF.appendChild(doc.createTextNode(cnpj));
cpfF.appendChild(doc.createTextNode(cpf));
dtFat.appendChild(doc.createTextNode(dtFaturamento));
txtExp.appendChild(doc.createTextNode(textExp));
txtCab.appendChild(doc.createTextNode(textCab));
root.appendChild(src);
root.appendChild(nDemanda);
root.appendChild(tDemanda);
root.appendChild(cEmpresa);
root.appendChild(cnpjF);
root.appendChild(cpfF);
root.appendChild(dtFat);
root.appendChild(txtExp);
root.appendChild(txtCab);
JsonArray itensJson = requisicao.get("ITENS").getAsJsonArray();
for (int i = 0, size = itensJson.size(); i < size; i++) {
JsonObject obj = (JsonObject) itensJson.get(i);
Element item = doc.createElement("ITEM");
Element tipDes = doc.createElement("TIP_DES");
Element valLin = doc.createElement("VAL_LIN");
Element cCusto = doc.createElement("C_CUSTO");
Element ePep = doc.createElement("E_PEP");
if( i == 0 ){
String cenCusto = !obj.get("C_CUSTO").getAsString().isEmpty() ? obj.get("C_CUSTO").getAsString() : obj.get("E_PEP").getAsString();
}
item.appendChild(doc.createTextNode(obj.get("ITEM").getAsString()));
tipDes.appendChild(doc.createTextNode(obj.get("TIP_DES").getAsString())); valLin.appendChild(doc.createTextNode(obj.get("VAL_LIN").getAsString())); cCusto.appendChild(doc.createTextNode(obj.get("C_CUSTO").getAsString())); ePep.appendChild(doc.createTextNode(obj.get("E_PEP").getAsString()));
item.appendChild(tipDes);
item.appendChild(valLin);
item.appendChild(cCusto);
item.appendChild(ePep);
itens.appendChild(item);
}
root.appendChild(itens);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,"yes");
transformer.setOutputProperty(OutputKeys.METHOD,"xml");
StreamResult result = new StreamResult(new File(this.getNomeArq()));
transformer.transform(source, result); // linha do erro
retorno.setSuccess(true);
retorno.setMotivo("Sucesso");
retorno.setObs("Arquivo gerado com sucesso");
retorno.setTipoRetorno("ok");
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
retorno.setSuccess(false);
retorno.setMotivo("Erro");
retorno.setObs("Erro criação do arquivo XML");
retorno.setTipoRetorno("exc");
} catch (TransformerException te) {
te.printStackTrace();
retorno.setSuccess(false);
retorno.setMotivo("Erro");
retorno.setObs("Erro criação do arquivo XML");
retorno.setTipoRetorno("exc");
} catch (Exception e) {
e.printStackTrace();
retorno.setSuccess(false);
retorno.setMotivo("Erro");
retorno.setObs("Erro criação do arquivo XML");
retorno.setTipoRetorno("exc");
}
return retorno;
}
Expected output file
<DEMANDA>
<SRC></SRC>
<NUM_DEM></NUM_DEM>
<TIP_DEM></TIP_DEM>
<COD_EMP></COD_EMP>
<CNPJ_FOR></CNPJ_FOR>
<CPF_FOR></CPF_FOR>
<DAT_FAT></DAT_FAT>
<TEX_EXP></TEX_EXP>
<TEX_CAB></TEX_CAB>
<ITENS>
<ITEM>
<TIP_DES></TIP_DES>
<VAL_LIN></VAL_LIN>
<C_CUSTO></C_CUSTO>
<E_PEP></E_PEP>
</ITEM>
</ITENS>
</DEMANDA>
Some North to be followed to solve this case?
No lib update? There is disk space to burn these xmls?
– Filipe L. Constante
@Filipel.Constant, yes has disk space, quite until... I have also cleaned the temporary folder of the server, without any success
– Humberto Bera
@Filipel.Constant also there was no lib change, the application had no republication until the moment the error was noticed, if I do not fail the memory, the last update happened in December or January
– Humberto Bera
There has been no change of permission these things? If the code has not changed, it is interesting to investigate the environment..
– Filipe L. Constante