我的 Java Web 应用程序安装在 server 2008 中。 基本上应用程序使用 jodCOnverter 库(使用 openoffice 服务)将 doc 文件转换为 pdf。 我正在使用以下代码来转换文档。
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
我的问题是如何处理多个请求,以便每个人都可以转换他们的文档而不会出现任何问题。
最佳答案
一种方法是让您的 Web 应用程序将每个传入文档添加到某种队列服务(例如 Gearman 或 Beanstalkd),然后运行一个队列工作线程来一次执行一个转换。这样,转换将异步完成,无需 Web 应用程序实例等待。
网络应用程序可以使用浏览器的长轮询来查看文档是否已转换,或者只是要求用户时不时刷新网页以查看文档是否已转换。
关于java - JodConverter 处理转换文档的多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18630557/