cancel
Showing results for 
Search instead for 
Did you mean: 

The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired) while uploading large file using java webservice(SOAP))

mrpathi
Champ in-the-making
Champ in-the-making

Actually we are fully integrated alfresco community edition 4.0.d java web service. When i upload large files like 12 Mb and more than this failed because of the following exception

"org.apache.ws.security.WSSecurityException: The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)"

I am scratching my head for solving this problem.  I have pasted code for uploading file.

startAlfrescoSession();

String basefolderPath = TrackerConfiguration.getInstance().getDataDirLocation() + File.separator + documentName;

byte[] content = this.getFileContent(basefolderPath);

this.createDocumentInRepository();

private byte[] getFileContent(String filePath) {

        InputStream file;

        try {

            file = new FileInputStream(filePath);

            return IOUtils.toByteArray(file);

        } catch (FileNotFoundException f) {

            LOG.error("File not found " +

                    filePath + " because:" + f.getMessage());

            // Not necessary to throw the exception back for now.

        } catch (IOException e) {

            LOG.error("Exception while reading the document from filesystem from " +

                    filePath + " because:" + e.getMessage());

            LOG.error(LoggingUtils.getStackTraceAsString(e));

            // Not necessary to throw the exception back for now.

        }

        return new byte[0];

    }

private Reference createDocumentInRepository(

            String accountId,

            String projectId,

            String parentDirId,

            String contentType,

            DocumentType docType,

            byte[] content) throws ConnectorException {

        Reference createdReference = null;

        UpdateResult[] results = null;

        ParentReference parentRef =

                this.getParentReference(

                        accountId, projectId, parentDirId, docType.getName());

        if (parentRef != null) {

            // set directory properties

            NamedValue[] properties = this.getDocumentProperties(docType);

           

            // Create the space using CML (Content Manipulation Language)

            CMLCreate create =

                    new CMLCreate(

                            "1", parentRef, null, null, null, Constants.TYPE_CONTENT, properties);

            CML cml = new CML();

            cml.setCreate(new CMLCreate[]{create});

          

            try {

                RepositoryServiceSoapBindingStub service = this.getRepositoryService();

                results = service.update(cml);

            } catch (RepositoryFault e) {

                LOG.error("Cannot create the document "

                        + docType.getGuid() + " in account: " + accountId + " project: "+ projectId 

                        + " because : " + e.getMessage());

                LOG.error(LoggingUtils.getStackTraceAsString(e));

                throw new ConnectorException("Cannot create the document "

                        + docType.getGuid() + " in account: " + accountId +

                        " project: "+ projectId + " because: "+ e.getMessage(), e);

            } catch (RemoteException e) {

                LOG.error("Cannot create the document "

                        + docType.getGuid() + " in account: " + accountId + " project: "+ projectId 

                        + " because : " + e.getMessage());

                LOG.error(LoggingUtils.getStackTraceAsString(e));

                throw new ConnectorException("Cannot create the document "

                        + docType.getGuid() + " in account: " + accountId +

                        " project: "+ projectId + " because: "+ e.getMessage(), e);

            }

            if (results != null) {

                createdReference = results[0].getDestination();

            }

           

            // Set the Content format

            ContentFormat format = new ContentFormat();

            format.setEncoding("UTF-8");

            format.setMimetype(contentType);

                       

            try {

                this.getContentService().write(createdReference, Constants.PROP_CONTENT, content, format);

            } catch (ContentFault e) {

                LOG.error("Could not write the content of the newly created document "

                        + docType.getGuid() + " in account: " + accountId + " project: "+ projectId 

                        + " because : " + e.getMessage());

                LOG.error(LoggingUtils.getStackTraceAsString(e));

                throw new ConnectorException("Could not write the content of the newly created document "

                        + docType.getGuid() + " in account: " + accountId +

                        " project: "+ projectId + " because: "+ e.getLocalizedMessage(), e);

            } catch (RemoteException e) {

                LOG.error("Could not write the content of the newly created document "

                        + docType.getGuid() + " in account: " + accountId + " project: "+ projectId 

                        + " because : " + e.getMessage());

                LOG.error(LoggingUtils.getStackTraceAsString(e));

                throw new ConnectorException("Could not write the content of the newly created document "

                        + docType.getGuid() + " in account: " + accountId +

                        " project: "+ projectId + " because: "+ e.getLocalizedMessage(), e);

            }

        }

        // Add the versionable aspect to the newly created content. This

        // will allows the content to be versioned

        if (content.length != 0 && contentType != null) {

            this.makeVersionable(createdReference, docType);

        }

        return createdReference;

    }

Exception stack trace;

org.apache.ws.security.WSSecurityException: The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)

2016-10-15 17:36:28,795 ERROR AlfrescoDocumentConnectorImpl - AxisFault

faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.generalException

faultSubcode:

faultString: WSDoAllReceiver: security processing failed; nested exception is:

    org.apache.ws.security.WSSecurityException: The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)

faultActor:

faultNode:

faultDetail:

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

WSDoAllReceiver: security processing failed; nested exception is:

    org.apache.ws.security.WSSecurityException: The message has expired (WSSecurityEngine: Invalid timestamp The security semantics of message have expired)

    at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)

    at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)

    at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)

    at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)

    at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)

    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

    at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(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 com.nadhi.tracker.server.connector.impl.alfresco.AlfrescoDocumentConnectorImpl.createDocumentInRepository(AlfrescoDocumentConnectorImpl.java:3161)

    at com.nadhi.tracker.server.connector.impl.alfresco.AlfrescoDocumentConnectorImpl.addDocument(AlfrescoDocumentConnectorImpl.java:7853)

    at com.nadhi.tracker.AlfrescoMigrationHelper.uploadDocument(AlfrescoMigrationHelper.java:369)

    at com.nadhi.tracker.AlfrescoMigrationHelper.renderDocument(AlfrescoMigrationHelper.java:504)

    at com.nadhi.tracker.AlfrescoMigrationHelper.getAllChildren(AlfrescoMigrationHelper.java:266)

    at com.nadhi.tracker.AlfrescoMigrationHelper.renderDirectory(AlfrescoMigrationHelper.java:481)

    at com.nadhi.tracker.AlfrescoMigrationHelper.getAllChildren(AlfrescoMigrationHelper.java:263)

    at com.nadhi.tracker.AlfrescoMigrationHelper.renderDocuments(AlfrescoMigrationHelper.java:218)

    at com.nadhi.tracker.AlfrescoMigrationHelper.getDocuments(AlfrescoMigrationHelper.java:112)

    at com.nadhi.tracker.AlfrescoMigrationHelper.main(AlfrescoMigrationHelper.j

Can someone help me to fix this issue? Or Is there any work around to over come this issue.

Waiting for your suggestions?

Thanks in advance.

1 REPLY 1

openpj
Elite Collaborator
Elite Collaborator

Notice that you are using a deprecated API of Alfresco.

This was the first remote api provided by Alfresco but please don't use it anymore it is not supported by Alfresco.

Anyway for solving your issues I suggest to reimplement your upload feature using the CMIS protocol or the ContentUploadServlet or using an Alfresco WebScript.

CMIS:

http://docs.alfresco.com/4.0/concepts/cmis-about.html

WebScripts / REST API:

RESTful API reference | Alfresco Documentation

UploadContentServlet:

Uploading using UploadContentServlet [Solved] 

Hope this helps.

Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.