0

我的 Java Web 应用程序安装在服务器 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 

我的问题是如何处理多个请求,以便每个人都可以转换他们的文档而不会遇到任何问题。

4

1 回答 1

1

一种方法是让您的 Web 应用程序仅将每个传入文档添加到某种队列服务(例如 Gearman 或 Beanstalkd),并运行一个队列工作器,一次执行一个转换。这样,转换将异步完成,无需 Web 应用程序实例等待。

Web 应用程序可以使用来自浏览器的长轮询来查看文档是否已转换,或者只是要求您的用户不时刷新网页以查看它是否已被转换。

于 2014-02-19T21:39:48.940 回答