Come aumentare il timeout transazione nel server di LiveCycle di Adobe? chiamata di servizio lungo non riesce con un'eccezione di timeout
Domanda
Siamo la conversione di file PDF di grandi dimensioni utilizzando il servizio ConvertPDF Adobe LiveCycle.
Questo funziona bene per i file PDF più piccoli, ma non riesce quando si cerca di convertire un file PDF di grandi dimensioni (circa 150 MB - non chiedere)
.Sembra che Adobe imposta il timeout di una transazione di circa 14 minuti (?). Per quanto tempo di elaborazione per il nostro enorme PDF supera questa volta, l'operazione viene interrotta. Abbiamo provato più file PDF, quindi questo non è probabile che sia causato da file di input danneggiato.
Ecco l'output che un'eccezione produce:
com.adobe.livecycle.convertpdfservice.exception.ConvertPdfException: ALC-DSC-000-000: com.adobe.idp.dsc.DSCException: Internal error.
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2WithSMT(ConvertPdfServiceImpl.java:117)
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2(ConvertPdfServiceImpl.java:93)
[...]
Caused by: ALC-DSC-000-000: com.adobe.idp.dsc.DSCException: Internal error.
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl$1.doInTransaction(ConvertPdfServiceImpl.java:110)
at com.adobe.idp.dsc.transaction.impl.ejb.adapter.EjbTransactionBMTAdapterBean.doRequiresNew(EjbTransactionBMTAdapterBean.java:218)
[...]
Caused by: com.adobe.livecycle.convertpdfservice.exception.ConvertPdfException: Cannot convert PDF file to PostScript.
Exception: "Transaction timed out: Couldn't connect to Datamanager Service"
at com.adobe.convertpdf.ConvertPdfBmcWrapper.convertPdftoPs(ConvertPdfBmcWrapper.java:207)
at com.adobe.convertpdf.ConvertPdfServer.convertPdftoPs(ConvertPdfServer.java:121)
at com.adobe.convertpdf.docservice.ConvertPdfServiceImpl.toPS2InTxn(ConvertPdfServiceImpl.java:129)
[...]
Finora -. Sembra logico
Tuttavia, non riesco a trovare dove la lunghezza della transazione è configurato. Credo che se abbiamo aumentato il timeout a qualcosa come 30 minuti, il nostro problema sarebbe andato via. (Anche il problema sarebbe andato via se avessimo modo di invocare questa operazione senza eventuali operazioni ...)
Diciamo che stiamo semplicemente correndo in questo modo:
ServiceClientFactory factory = com.adobe.idp.dsc.clientsdk.ServiceClientFactory.createInstance(connectionProps);
ConvertPdfServiceClient convertPDFClient = new com.adobe.livecycle.convertpdfservice.client.ConvertPdfServiceClient(factory);
// ... set-up details skipped ...
com.adobe.idp.Document result_postscript = convertPDFClient.toPS2(inPdf,options);
result_postscript.copyToFile(new File("c:/Adobe/output.ps"))
Tuttavia, o non stiamo allestendo ServiceClientFactory correttamente, o forse non leggere JBoss config correttamente, non riusciamo a trovare modo per rendere la transazione vivono più a lungo. (È il tempo di transazione per vivere veramente il problema?)
Soluzione
In LiveCycle console di amministrazione semplicemente andare a Home> Servizi> Servizi e Applicazioni> Gestione del Servizio> ConvertPdfService
Il timeout di servizio può essere cambiata lì.
Durante il test con la conversione da PDF (generato da iText) che contiene 39k pagine (13 iniziali, ciascuno clonati 3000 volte, dimensioni ~ 15Mb) -Final file PostScript di output era ~ 1,25Gb. Tutta opera voluti circa 2 ore. Ma ha funzionato, nessun problema.
(immagino che questa risposta rende la questione non-programmazione relativa, ma hey.)
Altri suggerimenti
Questa voce nel blog LiveCycle prodotto potrebbe anche aiutare: http://blogs.adobe.com/livecycle/2008/10/livecycle_processing_big_docum. html