Restore to Shared Mailbox fails

  • 7023473
  • 25-Oct-2018
  • 16-Jan-2019

Environment

Retain 4.1+
Groupwise 2014+

Situation

When logging into Retain and accessing a shared folder, you try to restore a message back to Groupwise.  It looks like it restored, but when you check the client, the message body says:

"Error [ea1d] downloading item from remote server - "Error from third-party.""

If you check the RetainServer logs, you may also notice this line:


        [http-bio-48080-exec-3] FATAL com.gwava.workerutils.ErrorHandle - reportError: readItemRequest :: com.gwava.gwarchive.GroupWiseArchiveImpl.readItemRequest:2152 :: EXCEPTION : com.thoughtworks.xstream.io.StreamException:  : Error on line 9: The markup in the document following the root element must be well-formed. com.thoughtworks.xstream.io.StreamException:  : Error on line 9: The markup in the document following the root element must be well-formed.
        at com.thoughtworks.xstream.io.xml.JDomDriver.createReader(JDomDriver.java:76)
        at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1049)
        at com.gwava.gwarchive.GroupWiseArchiveImpl.readItemFromRetain(GroupWiseArchiveImpl.java:2304)
        at com.gwava.gwarchive.GroupWiseArchiveImpl.readItemRequest(GroupWiseArchiveImpl.java:2101)
        at sun.reflect.GeneratedMethodAccessor1157.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
        at sun.reflect.GeneratedMethodAccessor1129.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
        at sun.reflect.GeneratedMethodAccessor1128.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.sun.xml.ws.api.server.MethodUtil.invoke(MethodUtil.java:83)
        at com.sun.xml.ws.api.server.InstanceResolver$1.invoke(InstanceResolver.java:250)
        at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:149)
        at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:88)
        at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:1136)
        at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:1050)
        at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:1019)
        at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:877)
        at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:419)
        at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:868)
        at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:422)
        at com.sun.xml.ws.transport.http.servlet.ServletAdapter.invokeAsync(ServletAdapter.java:225)
        at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doGet(WSServletDelegate.java:161)
        at com.sun.xml.ws.transport.http.servlet.WSServletDelegate.doPost(WSServletDelegate.java:197)
        at com.sun.xml.ws.transport.http.servlet.WSServlet.doPost(WSServlet.java:81)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        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:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.jdom.input.JDOMParseException: Error on line 9: The markup in the document following the root element must be well-formed.
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:533)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:865)
        at com.thoughtworks.xstream.io.xml.JDomDriver.createReader(JDomDriver.java:71)
        ... 50 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 11; The markup in the document following the root element must be well-formed.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
        at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1437)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver.next(XMLDocumentScannerImpl.java:1397)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
        at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
        at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
        at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
        at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
        at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
        at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
        ... 52 more

Resolution

In order for the restore to work properly you will need to browse to this specific file on the Retain Server:
~/RetainServer/WEB-INF/classes/config/misc.properties

You will need to edit this file and at the very bottom, you will need to add this line:
disable.stub.uuid.check=1

Once you have that line in the file, save it and then restart tomcat.  This will allow the restores to a shared folder work properly.

Cause

The problem is that the user restoring the message to someone else's mailbox instead of their own.  Since it's a shared folder but not a shared mailbox, the restoration can have problems.  Therefore, the setting in the Resolution is the only way around the problem.