Reputation: 1
I am running Libreoffice in docker container on top of ubuntu:24.04
in headless mode.
And running a Java Spring Boot server with jodconverter-spring-boot-starter
, jodconverter-core
and jodconverter-remote
of version 4.4.8
. But I am getting error: java.net.SocketTimeoutException: Read timed out
.
Can you please do let me know how can I resolve the error?
pom.xml
<jodconverter.version>4.4.8</jodconverter.version>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-spring-boot-starter</artifactId>
<version>${jodconverter.version}</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-core</artifactId>
<version>${jodconverter.version}</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-remote</artifactId>
<version>${jodconverter.version}</version>
</dependency>
Code:
private final DocumentConverter documentConverter;
private File convertOfficeToPdf(
@NonNull final MultipartFile file) {
final File inputFile = new File("/tmp", requireNonNull(file.getOriginalFilename()));
final File outputFile = new File("/tmp", "output.pdf");
try {
file.transferTo(inputFile);
this.documentConverter.convert(inputFile).to(outputFile).execute();
} catch (OfficeException | IOException e) {
log.error("Failed to convert office file into pdf: message={} ", e.getMessage(), e);
}
}
Dockerfile:
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y \
libreoffice \
&& apt-get clean
EXPOSE 2002
CMD ["libreoffice", "--headless", "--accept=socket,host=0.0.0.0,port=2002;urp;StarOffice.Service", "--nologo", "--nolockcheck", "--nodefault", "--nofirststartwizard", "--invisible"]
docker-compose.yml:
services:
app:
container_name: documents-server
build:
context: .
dockerfile: Dockerfile
ports:
- "2002:2002"
Configuration:
jodconverter:
local:
enabled: false
remote:
enabled: true
url: http://localhost:2002
socket-timeout: 300000
connect-timeout: 300000
Error:
java.net.SocketTimeoutException: Read timed out
at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:278) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:304) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346) ~[na:na]
at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796) ~[na:na]
at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099) ~[na:na]
at org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:280) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:157) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125) ~[httpcore-4.4.16.jar:4.4.16]
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.14.jar:4.5.14]
at org.apache.http.client.fluent.Request.internalExecute(Request.java:173) ~[fluent-hc-4.5.14.jar:4.5.14]
at org.apache.http.client.fluent.Executor.execute(Executor.java:262) ~[fluent-hc-4.5.14.jar:4.5.14]
at org.jodconverter.remote.task.RemoteConversionTask.execute(RemoteConversionTask.java:148) ~[jodconverter-remote-4.4.8.jar:4.4.8]
at org.jodconverter.remote.office.RemoteOfficeManagerPoolEntry.doExecute(RemoteOfficeManagerPoolEntry.java:302) ~[jodconverter-remote-4.4.8.jar:4.4.8]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.lambda$execute$0(AbstractOfficeManagerPoolEntry.java:81) ~[jodconverter-core-4.4.8.jar:4.4.8]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]
org.jodconverter.core.office.OfficeException: Task did not complete within timeout (120000 ms): RemoteConversionTask{source=SourceDocumentSpecsFromFile{file=docx_input.docx, format=docx}, target=TargetDocumentSpecsFromFile{file=output.pdf, format=pdf}}
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.waitTaskCompletion(AbstractOfficeManagerPoolEntry.java:120) ~[jodconverter-core-4.4.8.jar:4.4.8]
at org.jodconverter.core.office.AbstractOfficeManagerPoolEntry.execute(AbstractOfficeManagerPoolEntry.java:86) ~[jodconverter-core-4.4.8.jar:4.4.8]
at org.jodconverter.core.office.AbstractOfficeManagerPool.execute(AbstractOfficeManagerPool.java:216) ~[jodconverter-core-4.4.8.jar:4.4.8]
at org.jodconverter.remote.RemoteConverter$RemoteConversionJob.doExecute(RemoteConverter.java:121) ~[jodconverter-remote-4.4.8.jar:4.4.8]
at org.jodconverter.core.job.AbstractConversionJob.execute(AbstractConversionJob.java:63) ~[jodconverter-core-4.4.8.jar:4.4.8]
at com.mtab.halo.documents.service.converter.function.OfficeFileToPdfConverter.convertOfficeToPdf(OfficeFileToPdfConverter.java:52) ~[classes/:na]
at com.mtab.halo.documents.service.converter.function.OfficeFileToPdfConverter.accept(OfficeFileToPdfConverter.java:41) ~[classes/:na]
at com.mtab.halo.documents.service.converter.ConverterServiceV1.convertToPdf(ConverterServiceV1.java:20) ~[classes/:na]
at com.mtab.halo.documents.controller.ConverterController.postConvertToPdf(ConverterController.java:27) ~[classes/:na]
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:257) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:190) ~[spring-web-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:986) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:891) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:978) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014) ~[spring-webmvc-6.2.1.jar:6.2.1]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914) ~[spring-webmvc-6.2.1.jar:6.2.1]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590) ~[tomcat-embed-core-10.1.34.jar:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.2.1.jar:6.2.1]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.34.jar:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.34.jar:10.1.34]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140) ~[tomcat-embed-core-10.1.34.jar:10.1.34]
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108) ~[spring-web-6.2.1.jar:6.2.1]
Does anyone know how to resolve the above error?
Upvotes: 0
Views: 29