0

サーバー2008にインストールされた私のJava Webアプリケーション。基本的に、アプリケーションは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

1 つの方法は、Web アプリケーションが各着信ドキュメントをある種のキュー サービス (たとえば Gearman や Beanstalkd など) に追加し、一度に 1 つずつ変換を行う 1 つのキュー ワーカーを実行することです。このようにして、Web アプリ インスタンスを待機させることなく、変換が非同期で行われます。

Web アプリケーションは、ブラウザーからのロング ポーリングを使用して、ドキュメントがまだ変換されているかどうかを確認するか、ユーザーに Web ページを時々更新してから、変換されたかどうかを確認するように依頼することができます。

于 2014-02-19T21:39:48.940 に答える