Skip to content

Commit 5846c56

Browse files
committed
Make sure that the port is accessible
1 parent fbec9ac commit 5846c56

File tree

3 files changed

+78
-16
lines changed

3 files changed

+78
-16
lines changed

tomcat-base/src/shared/main/java/eu/xenit/alfresco/tomcat/embedded/share/tomcat/ShareTomcatFactoryHelper.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,17 @@ private static String replaceWithEnvironmentVariables(String input, ShareConfigu
5757
while (matcher.find()) {
5858
String match = matcher.group();
5959
String envProp = match.substring(2, match.length() - 1);
60-
String replacement = match; // default replacement is the match itself
60+
String replacement;
6161

6262
if (!envProp.isEmpty()) {
6363
String env = shareConfiguration.getValueOf(envProp);
6464
if (env != null && !env.isEmpty()) {
6565
replacement = env; // use the environment variable value as replacement
6666
} else {
67-
replacement = "\\$\\{" + match.substring(2);
67+
replacement = match; // retain original pattern
6868
}
69+
} else {
70+
replacement = match; // retain original pattern if envProp is empty
6971
}
7072

7173
matcher.appendReplacement(result, Matcher.quoteReplacement(replacement));
@@ -74,4 +76,5 @@ private static String replaceWithEnvironmentVariables(String input, ShareConfigu
7476

7577
return result.toString();
7678
}
79+
7780
}

tomcat-base/src/shared/main/java/eu/xenit/alfresco/tomcat/embedded/tomcat/TomcatFactory.java

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111
import java.nio.file.Path;
1212
import java.nio.file.Paths;
1313
import java.util.stream.Stream;
14+
import org.apache.catalina.Host;
1415
import org.apache.catalina.LifecycleException;
1516
import org.apache.catalina.LifecycleListener;
1617
import org.apache.catalina.Service;
1718
import org.apache.catalina.connector.Connector;
1819
import org.apache.catalina.core.StandardContext;
1920
import org.apache.catalina.loader.WebappLoader;
2021
import org.apache.catalina.startup.Tomcat;
22+
import org.apache.coyote.http11.Http11NioProtocol;
23+
import org.apache.coyote.http11.Http11Protocol;
2124
import org.apache.naming.resources.VirtualDirContext;
2225

2326
public class TomcatFactory {
@@ -51,10 +54,12 @@ private TomcatConfiguration getConfiguration() {
5154

5255
public Tomcat getTomcat() throws IOException {
5356
Tomcat tomcat = new Tomcat();
57+
Host host = tomcat.getHost();
58+
host.setName("localhost");
5459
tomcat.setBaseDir(getConfiguration().getTomcatBaseDir());
5560
tomcat.setPort(getConfiguration().getTomcatPort());
5661
tomcat.getServer().setPort(getConfiguration().getTomcatServerPort());
57-
createDefaultConnector(tomcat);
62+
configureDefaultConnector(tomcat);
5863
addUserWithRole(tomcat, "CN=Alfresco Repository Client, OU=Unknown, O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB", null, "repoclient");
5964
addUserWithRole(tomcat, "CN=Alfresco Repository, OU=Unknown, O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB", null, "repository");
6065
Path webapps = Paths.get(getConfiguration().getWebappsPath());
@@ -121,19 +126,15 @@ private void addWebapp(Tomcat tomcat, Path path) {
121126
}
122127
}
123128

124-
private void createDefaultConnector(Tomcat tomcat) {
125-
Connector connector = getConnector(tomcat,
126-
"HTTP/1.1",
127-
getConfiguration().getTomcatPort(),
128-
false,
129-
"http",
130-
getConfiguration().getTomcatMaxThreads(),
131-
getConfiguration().getTomcatMaxHttpHeaderSize(),
132-
getConfiguration().getTomcatRelaxedPathChars(),
133-
getConfiguration().getTomcatRelaxedQueryChars()
134-
);
135-
connector.setRedirectPort(getConfiguration().getTomcatSslPort());
136-
tomcat.setConnector(connector);
129+
private void configureDefaultConnector(Tomcat tomcat) {
130+
Connector connector = tomcat.getConnector();
131+
connector.setProperty("connectionTimeout", "240000");
132+
connector.setURIEncoding(StandardCharsets.UTF_8.name());
133+
Http11Protocol protocol = (Http11Protocol) connector.getProtocolHandler();
134+
protocol.setMaxThreads(getConfiguration().getTomcatMaxThreads());
135+
protocol.setMaxHttpHeaderSize(getConfiguration().getTomcatMaxHttpHeaderSize());
136+
protocol.setRelaxedPathChars(getConfiguration().getTomcatRelaxedPathChars());
137+
protocol.setRelaxedQueryChars(getConfiguration().getTomcatRelaxedQueryChars());
137138
}
138139

139140
private void addUserWithRole(Tomcat tomcat, String username, String password, String role) {
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package eu.xenit.alfresco.tomcat.embedded.tomcat;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
import static org.junit.jupiter.api.Assertions.fail;
5+
6+
import eu.xenit.alfresco.tomcat.embedded.config.DefaultConfigurationProvider;
7+
import eu.xenit.alfresco.tomcat.embedded.config.TomcatConfiguration;
8+
import java.io.File;
9+
import java.io.IOException;
10+
import java.net.HttpURLConnection;
11+
import java.net.URL;
12+
import org.apache.catalina.Context;
13+
import org.apache.catalina.Host;
14+
import org.apache.catalina.LifecycleException;
15+
import org.apache.catalina.startup.Tomcat;
16+
import org.apache.coyote.http11.Http11Protocol;
17+
import org.junit.jupiter.api.Test;
18+
19+
public class TomcatFactoryTest {
20+
21+
@Test
22+
void testConnection() throws LifecycleException, IOException {
23+
TomcatConfiguration configuration = new DefaultConfigurationProvider().getConfiguration();
24+
String resourcePath = "emptywebapps";
25+
URL resourceUrl = getClass().getClassLoader().getResource(resourcePath);
26+
27+
if (resourceUrl == null) {
28+
throw new IllegalStateException("Resource not found: " + resourcePath);
29+
}
30+
31+
// Convert URL to a File object and get the absolute path
32+
String webappsPath = new File(resourceUrl.getFile()).getAbsolutePath();
33+
configuration.setWebappsPath(webappsPath);
34+
TomcatFactory tomcatFactory = new TomcatFactory(configuration);
35+
Tomcat tomcat = tomcatFactory.getTomcat();
36+
try {
37+
tomcat.start();
38+
39+
// URL pointing to your Tomcat server
40+
URL url = new URL("http://localhost:8080");
41+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
42+
connection.setRequestMethod("GET");
43+
connection.connect();
44+
45+
// Check if response code is 404
46+
int responseCode = connection.getResponseCode();
47+
assertEquals(404, responseCode);
48+
49+
connection.disconnect();
50+
} catch (Exception e) {
51+
e.printStackTrace();
52+
fail("Exception occurred: " + e.getMessage());
53+
} finally {
54+
// Ensure Tomcat is stopped even if an exception occurs
55+
tomcat.stop();
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)