cancel
Showing results for 
Search instead for 
Did you mean: 

org.xml.sax.SAXParseException: Premature end of file.

agey
Champ in-the-making
Champ in-the-making
Hi all,

I am creating an applet to scan a document and save it into Alfresco using Web Service. This is the code what I use to call Alfresco webservice from applet to save the document in Alfresco:


public void saveAlfresco(File file){
    
     String username = "admin";
     String password = "admin";
    
     String serverhost = "http://192.168.2.24:8080/alfresco/api";
     WebServiceFactory.setEndpointAddress(serverhost);
      // Get the content service
         System.out.println("Get the content service");
        ContentServiceSoapBindingStub contentService = WebServiceFactory.getContentService(); 
      try
      {   
         // Start the session
         System.out.println("Start the session");   
         AuthenticationUtils.startSession(username, password);
        
          Store store = new Store(Constants.WORKSPACE_STORE, "SpacesStore");
         String ASSOC_CONTAINS = "{http://www.alfresco.org/model/content/1.0}contains";
         String uuid = properties.getProperty("container").toString();
         String filename = properties.getProperty("scanFile").toString();
         // Create a parent reference, this contains information about the association we are createing to the new content
         // and the parent of the new content (the space retrived from the search)
         ParentReference parentReference = new ParentReference(store, uuid, null, ASSOC_CONTAINS,
                 "{" + Constants.NAMESPACE_CONTENT_MODEL + "}" + filename);
        
         System.out.println("Define the content format new ContentFormat('image/tiff', 'UTF-8')");
         // Define the content format for the content we are adding
         ContentFormat contentFormat = new ContentFormat("image/tiff", "UTF-8");
        
         NamedValue[] properties = new NamedValue[] { new NamedValue() };
         properties[0].setName("{http://www.alfresco.org/model/content/1.0}name");
         properties[0].setValue(filename);
         CMLCreate create = new CMLCreate("1", parentReference, null, null, null, Constants.TYPE_CONTENT, properties);
         CML cml = new CML();
         cml.setCreate(new CMLCreate[]{create});
         UpdateResult[] result = WebServiceFactory.getRepositoryService().update(cml);
         Reference newContentNode = result[0].getDestination();
         System.out.println("Ref new node " + newContentNode.getPath());
        
         FileInputStream fileInputStream = new FileInputStream(file);
         byte[] bytes = ContentUtils.convertToByteArray(fileInputStream);
       
         System.out.println("Add content. Bytes size " + bytes.length);
         Content content = contentService.write(newContentNode, Constants.PROP_CONTENT, bytes, contentFormat);
              
         System.out.println("Saved!!!! " + content.getUrl());
   
      }catch (RemoteException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   } catch (FileNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
   }
      finally
      {
          // End the session
          AuthenticationUtils.endSession();
      }
  }

This code returns an error when it executes the line:

Content content = contentService.write(newContentNode, Constants.PROP_CONTENT, bytes, contentFormat);

The error that appears in java console is:

AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Premature end of file.
faultActor:
faultNode:
faultDetail:
   {http://xml.apache.org/axis/}stackTraceSmiley Surprisedrg.xml.sax.SAXParseException: Premature end of file.
   at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
   at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
   at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
   at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
   at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
   at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
   at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at org.alfresco.webservice.content.ContentServiceSoapBindingStub.write(ContentServiceSoapBindingStub.java:513)
   at uk.co.mmscomputing.application.imageviewer.ImageTab.saveAlfresco(ImageTab.java:412)
   at uk.co.mmscomputing.application.imageviewer.ImageTab.save(ImageTab.java:351)
   at uk.co.mmscomputing.application.imageviewer.ImageTab$3.actionPerformed(ImageTab.java:151)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)

   {http://xml.apache.org/axis/}hostname:smpc04

org.xml.sax.SAXParseException: Premature end of file.
   at org.apache.axis.AxisFault.makeFault(AxisFault.java:101)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:701)
   at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
   at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
   at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
   at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
   at org.apache.axis.client.Call.invoke(Call.java:2767)
   at org.apache.axis.client.Call.invoke(Call.java:2443)
   at org.apache.axis.client.Call.invoke(Call.java:2366)
   at org.apache.axis.client.Call.invoke(Call.java:1812)
   at org.alfresco.webservice.content.ContentServiceSoapBindingStub.write(ContentServiceSoapBindingStub.java:513)
   at uk.co.mmscomputing.application.imageviewer.ImageTab.saveAlfresco(ImageTab.java:412)
   at uk.co.mmscomputing.application.imageviewer.ImageTab.save(ImageTab.java:351)
   at uk.co.mmscomputing.application.imageviewer.ImageTab$3.actionPerformed(ImageTab.java:151)
   at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
   at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
   at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: org.xml.sax.SAXParseException: Premature end of file.
   at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
   at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
   at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
   at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
   at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
   at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
   at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
   at org.apache.xerces.jaxp.SAXParserImpl.parse(Unknown Source)
   at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
   at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
   … 36 more

And in Alfresco.log

ERROR [org.apache.axis.Message] java.io.IOException:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException
faultSubcode:
faultString:
faultActor:
faultNode:
faultDetail:
   {http://xml.apache.org/axis/}exceptionNameSmiley Surprisedrg.alfresco.repo.webservice.content.ContentFault
   {http://xml.apache.org/axis/}stackTrace:
   at org.alfresco.repo.webservice.content.ContentWebService.write(ContentWebService.java:233)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   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:191)
   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:845)
   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)

   {http://xml.apache.org/axis/}hostname:smpc04


   at org.alfresco.repo.webservice.content.ContentWebService.write(ContentWebService.java:233)
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
   at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
   at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
   at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
   at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
   at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
   at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
   at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
   at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
   at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   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:191)
   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:845)
   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)

Can anybody help me with this issue? I can see a document node created in Alfresco but without content. Why returns an error when writes content into node? The file exists on the local machine where the applet is executed and the saveAlfresco function takes the content of file properly. I try to write content into node using 'writeWithAttachment' but returns the same error. I use Alfresco 3.0 and MySQL on Windows XP.




Thanks a lot in advance,
3 REPLIES 3

gyro_gearless
Champ in-the-making
Champ in-the-making
Maybe hook in Membrane SOAP monitor and see what your client is *really* sending - i love this, this tool has saved my life several times 🙂

–> http://www.membrane-soa.org/soap-monitor/

HTH
Gyro

BTW, how large are your uploaded files? I remember some problems uploading files via SOAP when filesize was some 20..50 MB or more…

agey
Champ in-the-making
Champ in-the-making
Hi Gyro,

Thank you very much for your advice. I downloaded Membrane SOAP monitor and installed and configured it to listen the messages between client and server. I´m newbie in these tools but I think that this is the message that client send to server (appears in Request - SOAP tab):

POST /alfresco/api/ContentService HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.4
Host: localhost:8080
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://www.alfresco.org/ws/service/content/1.0/write"
Content-Length: 8700030
Cookie: JSESSIONID=B035199A8F55CEB80FDDFA15817B7170
X-Forwarded-For: 127.0.0.1

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<wsseSmiley Frustratedecurity xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
   <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
      <wsu:Created>2010-07-21T11:27:18.921Z</wsu:Created>
      <wsu:Expires>2010-07-21T11:32:18.921Z</wsu:Expires>
   </wsu:Timestamp>
   <wsse:UsernameToken>
      <wsse:Username>ticket</wsse:Username>
      <wsseSmiley Tongueassword Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">TICKET_d09e38f56d537502bbc0d817c8b1835942e8e885</wsseSmiley Tongueassword>
   </wsse:UsernameToken>
</wsseSmiley Frustratedecurity>
</soapenv:Header>
<soapenv:Body>
   <write xmlns="http://www.alfresco.org/ws/service/content/1.0">
      <node>
         <ns1:store xmlns:ns1="http://www.alfresco.org/ws/model/content/1.0">
            <ns1:scheme>workspace</ns1:scheme>
            <ns1:address>SpacesStore</ns1:address>
         </ns1:store>
         <ns2:uuid xmlns:ns2="http://www.alfresco.org/ws/model/content/1.0">19bad9e5-996d-46c5-9be9-07251b840cb0</ns2:uuid>
         <ns3Smiley Tongueath xmlns:ns3="http://www.alfresco.org/ws/model/content/1.0">/app:company_home/cm:Entrada_Facturas/cmSmiley Frustratedimply_x0020_Smart/cmSmiley Frustratedubir_Facturas/cm:scan__2162010132530_.tiff</ns3Smiley Tongueath>
      </node>
<property>{http://www.alfresco.org/model/content/1.0}content</property>
<content>SUkqAJCKYwD///////////////////////////////////////////////////////////////////////////////////</content>
<format>
         <ns4:mimetype xmlns:ns4="http://www.alfresco.org/ws/model/content/1.0">image/tiff</ns4:mimetype>
         <ns5:encoding xmlns:ns5="http://www.alfresco.org/ws/model/content/1.0">UTF-8</ns5:encoding>
      </format>
   </write>
</soapenv:Body>
</soapenv:Envelope>

In Response - Raw tab appears:

HTTP/1.1 500 Error Interno del Servidor
Server: Apache-Coyote/1.1
Content-Type: text/xml;charset=utf-8
Date: Wed, 21 Jul 2010 11:27:27 GMT
Connection: close

I tried to upload files of 6 and 19 MB in size. Can you help me to undertand this result?

agey
Champ in-the-making
Champ in-the-making
Hi Gyro,

I found the problem  Smiley Very Happy . I set in log4j.properties in Alfresco:

log4j.logger.org.alfresco.repo.webservice=debug

After, I have executed the applet again and the alfresco.log has registered an error in a rule executed when uploading a tiff file. I disabled this rule and now the code works fine.

Thanks a lot for your time,