diff options
author | Simon Brandhof <simon.brandhof@gmail.com> | 2014-04-02 17:04:18 +0200 |
---|---|---|
committer | Simon Brandhof <simon.brandhof@gmail.com> | 2014-04-02 17:04:18 +0200 |
commit | 5d8648c8192379922d6e3485051548f0955baefa (patch) | |
tree | 09f7e06fa728cf06fbebccedc74bfb9fad160bbe /sonar-application | |
parent | b863d3fb4ceb9b0a34a8455d7a7263460d4b7807 (diff) | |
parent | 22cd25e7b80e2f7f6acd5388ca9580afbf603c2b (diff) | |
download | sonarqube-5d8648c8192379922d6e3485051548f0955baefa.tar.gz sonarqube-5d8648c8192379922d6e3485051548f0955baefa.zip |
Merge branch 'master' of github.com:red6/sonar into red6-master
Diffstat (limited to 'sonar-application')
3 files changed, 38 insertions, 4 deletions
diff --git a/sonar-application/src/main/assembly/conf/sonar.properties b/sonar-application/src/main/assembly/conf/sonar.properties index 07fb50c7c18..6c058aa3227 100644 --- a/sonar-application/src/main/assembly/conf/sonar.properties +++ b/sonar-application/src/main/assembly/conf/sonar.properties @@ -163,6 +163,10 @@ sonar.jdbc.timeBetweenEvictionRunsMillis=30000 # Access logs are enabled by default. #sonar.web.accessLogs.enable=true +# TCP port for incoming AJP connections. Disabled when value is -1. +# sonar.ajp.port=9009 + + #-------------------------------------------------------------------------------------------------- # UPDATE CENTER diff --git a/sonar-application/src/main/java/org/sonar/application/Connectors.java b/sonar-application/src/main/java/org/sonar/application/Connectors.java index 3011fc00f80..68c216fe516 100644 --- a/sonar-application/src/main/java/org/sonar/application/Connectors.java +++ b/sonar-application/src/main/java/org/sonar/application/Connectors.java @@ -30,6 +30,7 @@ class Connectors { private static final int DISABLED_PORT = -1; static final String HTTP_PROTOCOL = "HTTP/1.1"; + static final String AJP_PROTOCOL = "AJP/1.3"; static void configure(Tomcat tomcat, Props props) { configureShutdown(tomcat, props); @@ -38,7 +39,7 @@ class Connectors { private static void configureConnectors(Tomcat tomcat, Props props) { List<Connector> connectors = new ArrayList<Connector>(); - connectors.addAll(Arrays.asList(newHttpConnector(props), newHttpsConnector(props))); + connectors.addAll(Arrays.asList(newHttpConnector(props), newAjpConnector(props), newHttpsConnector(props))); connectors.removeAll(Collections.singleton(null)); verify(connectors); @@ -57,7 +58,7 @@ class Connectors { for (Connector connector : connectors) { int port = connector.getPort(); if (ports.contains(port)) { - throw new IllegalStateException(String.format("HTTP and HTTPS must not use the same port %d", port)); + throw new IllegalStateException(String.format("HTTP, AJP and HTTPS must not use the same port %d", port)); } ports.add(port); } @@ -87,6 +88,18 @@ class Connectors { } @Nullable + private static Connector newAjpConnector(Props props) { + Connector connector = null; + int port = props.intOf("sonar.ajp.port", DISABLED_PORT); + if (port > DISABLED_PORT) { + connector = newConnector(props, AJP_PROTOCOL, "http"); + connector.setPort(port); + info("AJP connector is enabled on port " + port); + } + return connector; + } + + @Nullable private static Connector newHttpsConnector(Props props) { Connector connector = null; int port = props.intOf("sonar.web.https.port", DISABLED_PORT); diff --git a/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java b/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java index c2ac054a808..da105cf9b86 100644 --- a/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java +++ b/sonar-application/src/test/java/org/sonar/application/ConnectorsTest.java @@ -134,6 +134,7 @@ public class ConnectorsTest { public void all_connectors_are_enabled() { Properties p = new Properties(); p.setProperty("sonar.web.port", "9000"); + p.setProperty("sonar.ajp.port", "9009"); p.setProperty("sonar.web.https.port", "9443"); Props props = new Props(p); @@ -147,6 +148,13 @@ public class ConnectorsTest { } })); verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() { + @Override + public boolean matches(Object o) { + Connector c = (Connector) o; + return c.getScheme().equals("http") && c.getPort() == 9009 && c.getProtocol().equals(Connectors.AJP_PROTOCOL); + } + })); + verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() { @Override public boolean matches(Object o) { Connector c = (Connector) o; @@ -156,16 +164,17 @@ public class ConnectorsTest { } @Test - public void http_and_https_ports_should_be_different() throws Exception { + public void http_and_ajp_and_https_ports_should_be_different() throws Exception { Properties p = new Properties(); p.setProperty("sonar.web.port", "9000"); + p.setProperty("sonar.ajp.port", "9000"); p.setProperty("sonar.web.https.port", "9000"); try { Connectors.configure(tomcat, new Props(p)); fail(); } catch (IllegalStateException e) { - assertThat(e).hasMessage("HTTP and HTTPS must not use the same port 9000"); + assertThat(e).hasMessage("HTTP, AJP and HTTPS must not use the same port 9000"); } } @@ -173,6 +182,7 @@ public class ConnectorsTest { public void bind_to_all_addresses_by_default() throws Exception { Properties p = new Properties(); p.setProperty("sonar.web.port", "9000"); + p.setProperty("sonar.ajp.port", "9009"); p.setProperty("sonar.web.https.port", "9443"); Connectors.configure(tomcat, new Props(p)); @@ -185,6 +195,13 @@ public class ConnectorsTest { } })); verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() { + @Override + public boolean matches(Object o) { + Connector c = (Connector) o; + return c.getScheme().equals("http") && c.getPort() == 9009 && ((InetAddress)c.getProperty("address")).getHostAddress().equals("0.0.0.0"); + } + })); + verify(tomcat.getService()).addConnector(argThat(new ArgumentMatcher<Connector>() { @Override public boolean matches(Object o) { Connector c = (Connector) o; |