كيف يمكنني استخدام OpenOffice في وضع الخادم كخدمة متعددة الخيوط؟

StackOverflow https://stackoverflow.com/questions/625241

سؤال

ما هي تجربة العمل مع مكتب مفتوح في وضع الخادم؟أعلم أن OpenOffice ليس متعدد مؤشرات الترابط وأحتاج الآن إلى استخدام خدماته في خادمنا.
ماذا يمكنني أن أفعل للتغلب على هذه المشكلة؟

أنا أستخدم جافا.

هل كانت مفيدة؟

المحلول

نعم، أنا أستخدم أوبن أوفيس كخادم وثيقة التحويل.

وللأسف، فإن الحل لمشكلتك هو تفرخ مجموعة من العمليات أوبن أوفيس.

العموم بركة فرع JODConverter (قبل أن ينتقل إلى code.google.com) تنفيذ هذا خارج المربع، بالنسبة لك.

نصائح أخرى

ومع الإصدار الحالي من JODConverter (3.0 لقطة)، فإنه من السهل جدا للتعامل مع مواضيع متعددة من أوبن في مقطوعة الرأس واسطة، كمكتبة الآن يدعم بدأت تصل عدة حالات وابقائها في بركة، فقط عن طريق توفير عدة أرقام المنافذ أو أنابيب الاتصال المسماة عند بناء مثيل OfficeManager:

final OfficeManager om = new DefaultOfficeManagerConfiguration()
  .setOfficeHome("/usr/lib/openoffice")
  .setPortNumbers(8100, 8101, 8102, 8103)
  .buildOfficeManager();

om.start();

ويمكنك بعد ذلك لنا المكتبة على سبيل المثال لتحويل الوثائق دون الحاجة للتعامل مع مجموعة من الحالات أوبن في الخلفية:

OfficeDocumentConverter converter = new OfficeDocumentConverter(om);
converter.convert(new File("src/test/resources/test.odt"), new File("target/test.pdf"));

باستيان . لقد وجدت وسيلة أخرى، على أساس الإجابة باستيان. فتح عدة منافذ فإنه يوفر الوصول إلى إنشاء multithreads. ولكن من دون العديد من الموانئ (عدة enought) يمكننا تحسين performence من زيادة task queue timeout <لأ href = "https://docs.exoplatform.org/public/index.jsp؟topic=٪2FPLF41٪2FPLFAdminGuide.Configuration.JODConverter.html" يختلط = "noreferrer نوفولو"> هنا هو الوثائق . وشيء واحد مرة أخرى، قررنا عدم start وstop officeManager على كل التحويل process.At النهاية، أنا تحل هذه المهمة هذا النهج:

public class JODConverter {

    private static volatile OfficeManager officeManager;
    private static volatile OfficeDocumentConverter converter;

    public static void startOfficeManager(){
        try {

            officeManager = new DefaultOfficeManagerConfiguration()
                    .setOfficeHome(new File('libre office home path'))
                    .setPortNumbers(8100, 8101, 8102, 8103, 8104 )  
                    .setTaskExecutionTimeout(600000L)    // for big files
                    .setTaskQueueTimeout(200000L)        // wait if all port were busy
                    .buildOfficeManager();
            officeManager.start();

            // 2) Create JODConverter converter
            converter = new OfficeDocumentConverter(officeManager);

        } catch (Throwable e){
            e.printStackTrace();
        }
    }

    public static void convertPDF(File inputFile, File outputFile) throws Throwable {

        converter.convert(inputFile, outputFile);
    }

    public static void stopOfficeManager(){
        officeManager.stop();
    }

}

وأدعو JODConverter convertPDF عند التحويل هو الحاجة. سيتم إيقاف فقط عندما كان التطبيق.

يمكن استخدام OpenOffice في الوضع بدون رأس، لكنه لم يتم تصميمه للتعامل مع الكثير من الطلبات في بيئة إنتاج مرهقة.

يتضمن استخدام OpenOffice في وضع مقطوعة الرأس العديد من المشكلات:

  • قد تموت/تصبح العملية غير متاحة.
  • هناك العديد من مشكلات تسرب الذاكرة.
  • إن فتح العديد من "عمال" OpenOffice لا يتوسع كما هو متوقع، ويحتاج إلى بعض التغيير والتبديل للحصول على عمليات مفتوحة مختلفة (وجود عدة نسخ من OpenOffice، والعديد من الخدمات، تعمل تحت مستخدمين مختلفين.)

كما هو مقترح، يمكن استخدام jodconverter للوصول إلى عملية OpenOffice.

http://code.google.com/p/jodconverter/wiki/GettingStarted

كان فلاد محقًا بشأن الاضطرار إلى تشغيل مثيلات متعددة من OpenOffice على منافذ مختلفة.

أود فقط أن أضيف أن OpenOffice لا يبدو مستقرًا.نقوم بتشغيل 10 مثيلات منه في بيئة إنتاج ونقوم بإعداد الكود لإعادة المحاولة باستخدام مثيل آخر في حالة فشل المحاولة الأولى.بهذه الطريقة عندما يتعطل أحد خوادم OpenOffice (أو لا يتعطل ولكن لا يستجيب أيضًا) لا يتأثر الإنتاج.نظرًا لصعوبة الاستمرار في إعادة تشغيل الخوادم بشكل يومي، فإننا نقوم بتحويل جميع مستنداتنا ببطء إلى تقارير جاسبر (راجع التقرير الإلكتروني للحصول على التفاصيل).لست متأكدًا من كيفية استخدامك لخادم OpenOffice؛نستخدمه لدمج البريد (ملء النماذج للعملاء).إذا كنت بحاجة إلى تحويل الأشياء إلى PDF، أنصحك بذلك iText.

ويمكنك أن تجرب هذا:

http://www.jopendocument.org/

وفي مكتبة مقرها مفتوحة المصدر جافا الذي يسمح لك العمل مع المستندات المكتبية مفتوحة دون فتح مكتب، وبالتالي إزالة الحاجة إلى OOserver.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top