Skip to content
Snippets Groups Projects
Commit 82db03a0 authored by uhensler's avatar uhensler
Browse files

OO-5305: Commit before open a http connection to OnlyOffice

parent a3419b64
No related branches found
No related tags found
No related merge requests found
...@@ -25,6 +25,8 @@ import java.util.Collections; ...@@ -25,6 +25,8 @@ import java.util.Collections;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.olat.core.commons.services.doceditor.DocEditor.Mode; import org.olat.core.commons.services.doceditor.DocEditor.Mode;
import org.olat.core.configuration.AbstractSpringModule; import org.olat.core.configuration.AbstractSpringModule;
...@@ -94,6 +96,13 @@ public class OnlyOfficeModule extends AbstractSpringModule implements ConfigOnOf ...@@ -94,6 +96,13 @@ public class OnlyOfficeModule extends AbstractSpringModule implements ConfigOnOf
@Value("${onlyoffice.thumbnails.enabled:false}") @Value("${onlyoffice.thumbnails.enabled:false}")
private boolean thumbnailsEnabled; private boolean thumbnailsEnabled;
@Value("${onlyoffice.http.connect.timeout:30000}")
private int httpConnectTimeout;
@Value("${onlyoffice.http.connect.request.timeout:30000}")
private int httpConnectRequestTimeout;
@Value("${onlyoffice.http.connect.socket.timeout:30000}")
private int httpSocketTimeout;
@Autowired @Autowired
private OnlyOfficeModule(CoordinatorManager coordinateManager) { private OnlyOfficeModule(CoordinatorManager coordinateManager) {
super(coordinateManager); super(coordinateManager);
...@@ -320,5 +329,26 @@ public class OnlyOfficeModule extends AbstractSpringModule implements ConfigOnOf ...@@ -320,5 +329,26 @@ public class OnlyOfficeModule extends AbstractSpringModule implements ConfigOnOf
this.thumbnailsEnabled = thumbnailsEnabled; this.thumbnailsEnabled = thumbnailsEnabled;
setStringProperty(ONLYOFFICE_THUMBNAILS_ENABLED, Boolean.toString(thumbnailsEnabled), true); setStringProperty(ONLYOFFICE_THUMBNAILS_ENABLED, Boolean.toString(thumbnailsEnabled), true);
} }
public int getHttpConnectTimeout() {
return httpConnectTimeout;
}
public int getHttpConnectRequestTimeout() {
return httpConnectRequestTimeout;
}
public int getHttpSocketTimeout() {
return httpSocketTimeout;
}
public HttpClientBuilder httpClientBuilder() {
RequestConfig requestConfig = RequestConfig.copy(RequestConfig.DEFAULT)
.setConnectTimeout(getHttpConnectTimeout())
.setConnectionRequestTimeout(getHttpConnectRequestTimeout())
.setSocketTimeout(getHttpSocketTimeout())
.build();
return HttpClientBuilder.create().setDefaultRequestConfig(requestConfig);
}
} }
...@@ -32,8 +32,6 @@ import org.apache.http.client.methods.HttpPost; ...@@ -32,8 +32,6 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeConversionService; import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeConversionService;
...@@ -78,6 +76,8 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ ...@@ -78,6 +76,8 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ
@Autowired @Autowired
private OnlyOfficeSecurityService onlyOfficeSecurityService; private OnlyOfficeSecurityService onlyOfficeSecurityService;
@Autowired @Autowired
private OnlyOfficeHttpClientCreator httpClientCreator;
@Autowired
private MapperService mapperService; private MapperService mapperService;
@Override @Override
...@@ -172,7 +172,7 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ ...@@ -172,7 +172,7 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ
request.setEntity(requestEntity); request.setEntity(requestEntity);
ConversionResult conversionResult = null; ConversionResult conversionResult = null;
try (CloseableHttpClient client = HttpClientBuilder.create().build(); try (CloseableHttpClient client = httpClientCreator.create();
CloseableHttpResponse response = client.execute(request)) { CloseableHttpResponse response = client.execute(request)) {
int statusCode = response.getStatusLine().getStatusCode(); int statusCode = response.getStatusLine().getStatusCode();
log.debug("Status code of create thumbnail request: {}", statusCode); log.debug("Status code of create thumbnail request: {}", statusCode);
...@@ -199,7 +199,7 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ ...@@ -199,7 +199,7 @@ public class OnlyOfficeConversionServiceImpl implements OnlyOfficeConversionServ
boolean thumbnailCreated = false; boolean thumbnailCreated = false;
HttpGet downLoadRequest = new HttpGet(fileUrl); HttpGet downLoadRequest = new HttpGet(fileUrl);
try (CloseableHttpClient httpClient = HttpClients.createDefault(); try (CloseableHttpClient httpClient = httpClientCreator.create();
CloseableHttpResponse httpResponse = httpClient.execute(downLoadRequest);) { CloseableHttpResponse httpResponse = httpClient.execute(downLoadRequest);) {
if (httpResponse.getStatusLine().getStatusCode() == 200) { if (httpResponse.getStatusLine().getStatusCode() == 200) {
InputStream content = httpResponse.getEntity().getContent(); InputStream content = httpResponse.getEntity().getContent();
......
/**
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at the
* <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a>
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Initial code contributed and copyrighted by<br>
* frentix GmbH, http://www.frentix.com
* <p>
*/
package org.olat.core.commons.services.doceditor.onlyoffice.manager;
import org.apache.http.impl.client.CloseableHttpClient;
import org.olat.core.commons.persistence.DB;
import org.olat.core.commons.services.doceditor.onlyoffice.OnlyOfficeModule;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
*
* Initial date: 23 Feb 2021<br>
* @author uhensler, urs.hensler@frentix.com, http://www.frentix.com
*
*/
@Service
public class OnlyOfficeHttpClientCreator {
@Autowired
private DB dbInstance;
@Autowired
private OnlyOfficeModule onlyOfficeModule;
public CloseableHttpClient create() {
dbInstance.commit();// free connection
return onlyOfficeModule.httpClientBuilder().build();
}
}
...@@ -29,7 +29,6 @@ import java.text.SimpleDateFormat; ...@@ -29,7 +29,6 @@ import java.text.SimpleDateFormat;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import org.olat.core.commons.services.doceditor.DocEditor.Mode; import org.olat.core.commons.services.doceditor.DocEditor.Mode;
import org.olat.core.commons.services.doceditor.DocEditorIdentityService; import org.olat.core.commons.services.doceditor.DocEditorIdentityService;
...@@ -87,6 +86,8 @@ public class OnlyOfficeServiceImpl implements OnlyOfficeService { ...@@ -87,6 +86,8 @@ public class OnlyOfficeServiceImpl implements OnlyOfficeService {
@Autowired @Autowired
private OnlyOfficeSecurityService onlyOfficeSecurityService; private OnlyOfficeSecurityService onlyOfficeSecurityService;
@Autowired @Autowired
private OnlyOfficeHttpClientCreator httpClientCreator;
@Autowired
private DocEditorService documentEditorServie; private DocEditorService documentEditorServie;
@Autowired @Autowired
private DocEditorIdentityService identityService; private DocEditorIdentityService identityService;
...@@ -253,7 +254,7 @@ public class OnlyOfficeServiceImpl implements OnlyOfficeService { ...@@ -253,7 +254,7 @@ public class OnlyOfficeServiceImpl implements OnlyOfficeService {
String autorization = "Bearer " + token; String autorization = "Bearer " + token;
HttpGet request = new HttpGet(url); HttpGet request = new HttpGet(url);
request.addHeader("Authorization", autorization); request.addHeader("Authorization", autorization);
try (CloseableHttpClient httpClient = HttpClients.createDefault(); try (CloseableHttpClient httpClient = httpClientCreator.create();
CloseableHttpResponse httpResponse = httpClient.execute(request);) { CloseableHttpResponse httpResponse = httpClient.execute(request);) {
if (httpResponse.getStatusLine().getStatusCode() == 200) { if (httpResponse.getStatusLine().getStatusCode() == 200) {
InputStream content = httpResponse.getEntity().getContent(); InputStream content = httpResponse.getEntity().getContent();
......
...@@ -1738,6 +1738,11 @@ onlyoffice.usage.restricted.managers=false ...@@ -1738,6 +1738,11 @@ onlyoffice.usage.restricted.managers=false
## Thumbnails ## Thumbnails
onlyoffice.thumbnails.enabled=true onlyoffice.thumbnails.enabled=true
## HTTP connection settings
onlyoffice.http.connect.timeout=30000
onlyoffice.http.connect.request.timeout=30000
onlyoffice.http.connect.socket.timeout=30000
######################################## ########################################
# Options for monitoring # Options for monitoring
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment