I am trying to integrate with a 3rd party application by allowing it to check-in documents remotely via SOAP using the CheckIn WSDL that comes out of the box with the UCM install. The problem we are having is that some of our documents are very large (30mb+) and it's proving very slow to encode the documents into base64 format before building and sending the service to UCM.
The document is already stored as a BLOB in the 3rd party application's database. Is there a more efficient method that doesn't require us to encode the document? I have read that MTOM might prove more efficient. Is this supported by UCM and if so does anyone have an example of how I would implement?
Thanks in advance.
You could also create you own custom service, wrap it via WSDL Generator and call it via SOAP.
Note that the service, which runs as a server-side Java code, would have to have its own link to an external database. There is a sample component (DatabaseProvider) among how-to-components http://bexhuff.com/2011/03/howto-component-samples-for-oracle-ucm-11g that you could take as a starting point.
Alternatively, you could also try to zip the doc (I think there is an OOTB feature that supports that), but it will help you only on condition that compression ratio is large.
Jiri, thanks for your response. Let me confirm I understand. My custom service would be called via SOAP and one of the parameters would be some kind of primary key pointing to the correct row for the document in the external database? It would retrieve the document from the external database provider and perform the check-in?
Yes, you got it. Note that a custom service that you have to create is not a web service. It is a piece of Java code (or even just SQL/idocsript/html) that you may call via its URL (and also provide its parameters). If you want to call it via SOAP you need to wrap it - the easiest way is to use a standard component called WSRP Generator, which will create a WSRP file for you.