2013-09-05 4 views
0

Мое веб-приложение Java, установленное на сервере 2008. В основном приложение конвертирует файлы документов в pdf с использованием библиотеки jodCOnverter (используя службу openoffice). Я использую следующий код для преобразования документа.JodConverter обрабатывает несколько запросов на преобразование документов

String OpenOfficeConnString="C:\\Program Files (x86)\\OpenOffice 4\\program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\" -nofirststartwizard"; 
    Runtime rt = Runtime.getRuntime(); 
    Process pSoffice = rt.exec(OpenOfficeConnString); 

    File inputFile = srcDoc; 

    String destDoc = srcDoc.getAbsolutePath().substring(0, 
         srcDoc.getAbsolutePath().lastIndexOf(".")) 
         + "." + outputFileExt; 

    outputFile = new File(destDoc); 

       // connect to an OpenOffice.org instance running on port 8100 
    OpenOfficeConnection connection = new SocketOpenOfficeConnection(
         8100); 
    connection.connect(); 

       // convert 
    DocumentConverter converter = new OpenOfficeDocumentConverter(
         connection); 
    converter.convert(inputFile, outputFile); 

       // close the connection 
    connection.disconnect(); 

При успешном конвертации документа с одним запросом.

Но когда несколько пользователей пытаются преобразовать документ в то же время огонь ошибка:

ошибки что-то вроде этого:

com.artofsolving.jodconverter.openoffice.connection.abstractopenofficeconnection disposing info disconnected 

Мой вопрос, как я могу справиться с множественного запроса поэтому каждый один могут конвертировать свои документы без каких-либо проблем.

ответ

1

Одним из способов было бы, чтобы ваш веб-приложение просто добавлял каждый входящий документ в какой-то сервис очереди (например, Gearman или Beanstalkd) и запускал одного сотрудника очереди, который выполняет конверсии по одному. Таким образом, конверсии будут выполняться асинхронно, без необходимости ждать веб-приложения.

Веб-приложение может использовать длительный опрос в браузере, чтобы узнать, еще ли преобразован документ или просто попросите своих пользователей обновить веб-страницу сейчас и затем, чтобы узнать, было ли оно преобразовано.

+0

Спасибо sockmonk, лучше для меня, если вы предоставите некоторый код. –

Смежные вопросы