Вопрос или проблема
Я установил LibreOffice на сервер Ubuntu. Я хочу использовать его с приложениями Jmix, работающими на сервере. Согласно документации Jmix, одной установки должно быть достаточно для этого. Я следовал шагам установки в документации Jmix, но ошибка остается:
ReportingException: Не удалось конвертировать в calc_pdf_Export. Все попытки не удались. Имя отчета [Сводная таблица по зарплате]
Не удалось создать компоненты Open Office.
io.jmix.reports.yarg.formatters.impl.doc.connector.BootstrapException: Не удалось подключиться к процессу OO
Не удалось подключиться к процессу OO
java.net.ConnectException: Подключение отвергнуто
Подробности ошибки приведены ниже:
o.jmix.reports.exception.ReportingException: Не удалось конвертировать в calc_pdf_Export. Все попытки не удались. Имя отчета [Сводная таблица по зарплате]
Не удалось создать компоненты Open Office.
io.jmix.reports.yarg.formatters.impl.doc.connector.BootstrapException: Не удалось подключиться к процессу OO
Не удалось подключиться к процессу OO
java.net.ConnectException: Подключение отвергнуто
в io.jmix.reports.runner.impl.ReportRunnerImpl.createReportDocumentInternal(ReportRunnerImpl.java:161)
в io.jmix.reports.runner.impl.ReportRunnerImpl.run(ReportRunnerImpl.java:82)
в io.jmix.reportsflowui.runner.impl.UiReportRunnerImpl.runAndShow(UiReportRunnerImpl.java:111)
в io.jmix.reportsflowui.runner.FluentUiReportRunner.runAndShow(FluentUiReportRunner.java:184)
в io.jmix.reportsflowui.view.run.InputParametersDialog.onPrintReportButtonClick(InputParametersDialog.java:154)
в com.vaadin.flow.component.ComponentEventBus.fireEventForListener(ComponentEventBus.java:239)
в com.vaadin.flow.component.ComponentEventBus.handleDomEvent(ComponentEventBus.java:488)
в com.vaadin.flow.component.ComponentEventBus.lambda$addDomTrigger$dd1b7957$1(ComponentEventBus.java:298)
в com.vaadin.flow.internal.nodefeature.ElementListenerMap.lambda$fireEvent$2(ElementListenerMap.java:447)
в java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
в com.vaadin.flow.internal.nodefeature.ElementListenerMap.fireEvent(ElementListenerMap.java:447)
в com.vaadin.flow.server.communication.rpc.EventRpcHandler.handleNode(EventRpcHandler.java:62)
в com.vaadin.flow.server.communication.rpc.AbstractRpcInvocationHandler.handle(AbstractRpcInvocationHandler.java:74)
в com.vaadin.flow.server.communication.ServerRpcHandler.handleInvocationData(ServerRpcHandler.java:475)
в com.vaadin.flow.server.communication.ServerRpcHandler.lambda$handleInvocations$5(ServerRpcHandler.java:456)
в java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
в com.vaadin.flow.server.communication.ServerRpcHandler.handleRpc(ServerRpcHandler.java:324)
в com.vaadin.flow.server.communication.UidlRequestHandler.synchronizedHandleRequest(UidlRequestHandler.java:114)
в com.vaadin.flow.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40)
в com.vaadin.flow.server.VaadinService.handleRequest(VaadinService.java:1577)
в com.vaadin.flow.server.VaadinServlet.service(VaadinServlet.java:398)
в com.vaadin.flow.spring.SpringServlet.service(SpringServlet.java:106)
в jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
в org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:642)
в org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:408)
в org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:313)
в org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:277)
в org.springframework.web.servlet.mvc.ServletForwardingController.handleRequestInternal(ServletForwardingController.java:142)
в org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.handleRequest(AbstractController.java:178)
в org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:51)
в org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
в org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
в org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
в org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:914)
в jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
в org.springframework.web.servlet.FrameworkServlet.service(HttpServlet.java:885)
в jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205)
в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
в org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
в io.jmix.core.impl.logging.LogMdcFilter.doFilterInternal(LogMdcFilter.java:28)
в org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174)
в org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149)
в org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1740)
в org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
в org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
в org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
в org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
в java.base/java.lang.Thread.run(Thread.currentThread().getName());
Что можно сделать, чтобы решить эту проблему?
Я надеялся, что после установки смогу использовать LibreOffice для преобразования Excel в PDF. Я пытался сделать это после установки, но вышеупомянутая ошибка остается. Я переустановил его, удалил OpenOffice, но проблема остается.
Ответ или решение
Чтобы устранить проблему с использованием LibreOffice в приложениях Jmix на сервере Ubuntu, необходимо учесть несколько важных моментов. Ошибка, которую вы видите ("Unable to connect to the OO process"), связана с невозможностью приложения Jmix подключиться к процессу LibreOffice для выполнения преобразования документов.
Вот несколько шагов, которые могут помочь вам решить эту проблему:
-
Проверьте наличие OpenOffice/LibreOffice: Убедитесь, что вы установили LibreOffice правильно. Вы можете использовать следующую команду, чтобы проверить, установлен ли LibreOffice на сервере:
libreoffice --version
Если LibreOffice не установлен, установите его с помощью:
sudo apt update sudo apt install libreoffice
-
Проверьте конфигурацию: Убедитесь, что ваша конфигурация Jmix правильно настроена для работы с LibreOffice. Вам нужно убедиться, что вы указываете верный порт и путь к исполняемому файлу LibreOffice в конфигурации вашего приложения. Обычно это можно сделать в файле
application.properties
:jmix.reports.open-office-host=localhost jmix.reports.open-office-port=2002
-
Запустите LibreOffice в режиме сервера: LibreOffice должен быть запущен в режиме сервера для работы с приложениями, которые хотят использовать его в качестве компонента. Это можно сделать с помощью следующей команды:
libreoffice --headless --accept="socket,port=2002;urp;" --nofirststartwizard
Обратите внимание, что вы можете изменить порт (2002) на любой другой свободный порт, но он должен соответствовать настройкам в
application.properties
. -
Проверка соединения: Убедитесь, что ваш Jmix-приложение может подключиться к процессу LibreOffice. Используйте утилиту
telnet
илиcurl
для проверки соединения:telnet localhost 2002
Если соединение не устанавливается, проверьте, запущен ли процесс LibreOffice и корректно ли настроены брандмауэр и сетевые разрешения.
-
Логи и отладка: Если проблема сохраняется, просмотрите логи вашего Jmix приложения для выявления дополнительных подсказок. Также проверьте системные логи (например,
/var/log/syslog
), чтобы увидеть, есть ли там ошибки, связанные с LibreOffice. -
Проверка прав доступа: Убедитесь, что ваш пользователь, от имени которого запускается приложение, имеет необходимые права доступа для запуска LibreOffice и доступа к его ресурсам.
Если после выполнения всех этих шагов проблема все еще сохраняется, возможно, вам следует рассмотреть переустановку LibreOffice или консолидацию конфигурации вашего приложения Jmix. Смело обращайтесь за помощью к сообществу Jmix или LibreOffice для получения дополнительных советов.