Skip to content

Commit e9aab27

Browse files
committed
[#] Convert to using xml files from jetty distribution for Jetty configuration
1 parent 6c4115f commit e9aab27

File tree

23 files changed

+1076
-3
lines changed

23 files changed

+1076
-3
lines changed

activemq-web-console/pom.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,16 @@
248248
<dependency>
249249
<groupId>org.eclipse.jetty.ee9</groupId>
250250
<artifactId>jetty-ee9-webapp</artifactId>
251-
<scope>test</scope>
251+
<scope>provided</scope>
252252
</dependency>
253253
<dependency>
254254
<groupId>org.eclipse.jetty</groupId>
255255
<artifactId>jetty-server</artifactId>
256+
<scope>provided</scope>
257+
</dependency>
258+
<dependency>
259+
<groupId>org.eclipse.jetty</groupId>
260+
<artifactId>jetty-rewrite</artifactId>
256261
<scope>test</scope>
257262
</dependency>
258263
<dependency>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.apache.activemq.spring.jetty;
2+
3+
import org.apache.xbean.spring.context.ClassPathXmlApplicationContext;
4+
import org.eclipse.jetty.server.Server;
5+
import org.junit.Test;
6+
7+
public class JettyServerBeanTest {
8+
9+
@Test
10+
public void testJettyServerBean() throws Exception {
11+
var context = new ClassPathXmlApplicationContext("conf/jetty-spring.xml");
12+
context.start();
13+
14+
var jettyServer = (Server) context.getBean("jettyServer");
15+
// assertNotNull(jettyServer);
16+
context.stop();
17+
}
18+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!--
3+
Licensed to the Apache Software Foundation (ASF) under one or more
4+
contributor license agreements. See the NOTICE file distributed with
5+
this work for additional information regarding copyright ownership.
6+
The ASF licenses this file to You under the Apache License, Version 2.0
7+
(the "License"); you may not use this file except in compliance with
8+
the License. You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing, software
13+
distributed under the License is distributed on an "AS IS" BASIS,
14+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
See the License for the specific language governing permissions and
16+
limitations under the License.
17+
-->
18+
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
19+
xmlns:util="http://www.springframework.org/schema/util"
20+
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util https://www.springframework.org/schema/util/spring-util.xsd">
21+
22+
<bean id="jettyServer" class="org.apache.activemq.spring.jetty.JettyServerBean">
23+
<property name="jettyXmlDirectory" value="src/test/resources/jetty" />
24+
<property name="jettyConfDirectory" value="src/test/resources/conf" />
25+
<property name="webAppsContext" value="jetty-webapps.xml" />
26+
</bean>
27+
28+
</beans>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
jetty.http.port=9090
2+
jetty.ssl.port=9443
3+
jetty.httpConfig.securePort=9443
4+
jetty.sslContext.keyStorePassword=OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_12_0.dtd">
3+
<Configure class="org.eclipse.jetty.ee9.webapp.WebAppContext">
4+
<Set name="contextPath">/console</Set>
5+
<Set name="resourceBase">webapps/admin</Set>
6+
</Configure>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://jetty.org/configure_10_0.dtd">
3+
<Configure>
4+
<New id="byteBufferPool" class="org.eclipse.jetty.io.ArrayByteBufferPool">
5+
<Arg type="int"><Property name="jetty.byteBufferPool.minCapacity" default="0"/></Arg>
6+
<Arg type="int"><Property name="jetty.byteBufferPool.factor" default="4096"/></Arg>
7+
<Arg type="int"><Property name="jetty.byteBufferPool.maxCapacity" default="65536"/></Arg>
8+
<Arg type="int"><Property name="jetty.byteBufferPool.maxBucketSize" default="-1"/></Arg>
9+
<Arg type="long"><Property name="jetty.byteBufferPool.maxHeapMemory" default="0"/></Arg>
10+
<Arg type="long"><Property name="jetty.byteBufferPool.maxDirectMemory" default="0"/></Arg>
11+
<Set name="statisticsEnabled" property="jetty.byteBufferPool.statisticsEnabled" />
12+
</New>
13+
</Configure>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://jetty.org/configure_10_0.dtd">
3+
4+
<!-- ============================================================= -->
5+
<!-- Configure the Jetty Server instance with an ID "Server" -->
6+
<!-- by adding an HTTP connector. -->
7+
<!-- This configuration must be used in conjunction with jetty.xml -->
8+
<!-- ============================================================= -->
9+
<Configure id="Server" class="org.eclipse.jetty.server.Server">
10+
11+
<!-- =========================================================== -->
12+
<!-- Add an HTTP Connector. -->
13+
<!-- Configure an o.e.j.server.ServerConnector with a single -->
14+
<!-- HttpConnectionFactory instance using the common httpConfig -->
15+
<!-- instance defined in jetty.xml -->
16+
<!-- -->
17+
<!-- Consult the javadoc of o.e.j.server.ServerConnector and -->
18+
<!-- o.e.j.server.HttpConnectionFactory for all configuration -->
19+
<!-- that may be set here. -->
20+
<!-- =========================================================== -->
21+
<Call name="addConnector">
22+
<Arg>
23+
<New id="httpConnector" class="org.eclipse.jetty.server.ServerConnector">
24+
<Arg name="server"><Ref refid="Server" /></Arg>
25+
<Arg name="acceptors" type="int"><Property name="jetty.http.acceptors" default="1"/></Arg>
26+
<Arg name="selectors" type="int"><Property name="jetty.http.selectors" default="-1"/></Arg>
27+
<Arg name="factories">
28+
<Array type="org.eclipse.jetty.server.ConnectionFactory">
29+
<Item>
30+
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
31+
<Arg name="config"><Ref refid="httpConfig" /></Arg>
32+
</New>
33+
</Item>
34+
</Array>
35+
</Arg>
36+
<Set name="host" property="jetty.http.host" />
37+
<Set name="port"><Property name="jetty.http.port" default="8080" /></Set>
38+
<Set name="idleTimeout"><Property name="jetty.http.idleTimeout" default="30000"/></Set>
39+
<Set name="acceptorPriorityDelta" property="jetty.http.acceptorPriorityDelta" />
40+
<Set name="acceptQueueSize" property="jetty.http.acceptQueueSize" />
41+
<Set name="reuseAddress"><Property name="jetty.http.reuseAddress" default="true"/></Set>
42+
<Set name="reusePort"><Property name="jetty.http.reusePort" default="false"/></Set>
43+
<Set name="acceptedTcpNoDelay"><Property name="jetty.http.acceptedTcpNoDelay" default="true"/></Set>
44+
<Set name="acceptedReceiveBufferSize" property="jetty.http.acceptedReceiveBufferSize" />
45+
<Set name="acceptedSendBufferSize" property="jetty.http.acceptedSendBufferSize" />
46+
</New>
47+
</Arg>
48+
</Call>
49+
50+
</Configure>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://jetty.org/configure_10_0.dtd">
3+
4+
<!-- =============================================================== -->
5+
<!-- Configure the Jetty Request Log -->
6+
<!-- =============================================================== -->
7+
<Configure id="Server" class="org.eclipse.jetty.server.Server">
8+
9+
<!-- =========================================================== -->
10+
<!-- Configure Request Log for Server -->
11+
<!-- (Use RequestLogHandler for a context specific RequestLog -->
12+
<!-- =========================================================== -->
13+
<Set name="RequestLog">
14+
<New id="RequestLog" class="org.eclipse.jetty.server.CustomRequestLog">
15+
<!-- Writer -->
16+
<Arg>
17+
<New class="org.eclipse.jetty.server.AsyncRequestLogWriter">
18+
<Arg>
19+
<Call name="resolvePath" class="org.eclipse.jetty.xml.XmlConfiguration">
20+
<Arg><Property name="jetty.base"/></Arg>
21+
<Arg>
22+
<Property name="jetty.requestlog.filePath">
23+
<Default>
24+
<Property name="jetty.requestlog.dir" default="logs"/>/yyyy_mm_dd.request.log
25+
</Default>
26+
</Property>
27+
</Arg>
28+
</Call>
29+
</Arg>
30+
31+
<Set name="filenameDateFormat"><Property name="jetty.requestlog.filenameDateFormat" default="yyyy_MM_dd"/></Set>
32+
<Set name="retainDays"><Property name="jetty.requestlog.retainDays" default="90"/></Set>
33+
<Set name="append"><Property name="jetty.requestlog.append" default="false"/></Set>
34+
<Set name="timeZone"><Property name="jetty.requestlog.timezone" default="GMT"/></Set>
35+
</New>
36+
</Arg>
37+
38+
<!-- Format String -->
39+
<Arg>
40+
<Property name="jetty.requestlog.formatString" deprecated="jetty.customrequestlog.formatString">
41+
<Default>
42+
<Get class="org.eclipse.jetty.server.CustomRequestLog" name="EXTENDED_NCSA_FORMAT"/>
43+
</Default>
44+
</Property>
45+
</Arg>
46+
</New>
47+
</Set>
48+
</Configure>
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://jetty.org/configure_10_0.dtd">
3+
4+
<Configure>
5+
<!-- =========================================================== -->
6+
<!-- Configure the Server Thread Pool. -->
7+
<!-- The server holds a common thread pool which is used by -->
8+
<!-- default as the executor used by all connectors and servlet -->
9+
<!-- dispatches. -->
10+
<!-- -->
11+
<!-- Configuring a fixed thread pool is vital to controlling the -->
12+
<!-- maximal memory footprint of the server and is a key tuning -->
13+
<!-- parameter for tuning. In an application that rarely blocks -->
14+
<!-- then maximal threads may be close to the number of 5*CPUs. -->
15+
<!-- In an application that frequently blocks, then maximal -->
16+
<!-- threads should be set as high as possible given the memory -->
17+
<!-- available. -->
18+
<!-- -->
19+
<!-- Consult the javadoc of o.e.j.util.thread.QueuedThreadPool -->
20+
<!-- for all configuration that may be set here. -->
21+
<!-- =========================================================== -->
22+
<New id="threadPool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
23+
<Set name="name" property="jetty.threadPool.namePrefix" />
24+
<Set name="minThreads" type="int"><Property name="jetty.threadPool.minThreads" deprecated="threads.min" default="10"/></Set>
25+
<Set name="maxThreads" type="int"><Property name="jetty.threadPool.maxThreads" deprecated="threads.max" default="200"/></Set>
26+
<Set name="reservedThreads" type="int"><Property name="jetty.threadPool.reservedThreads" default="-1"/></Set>
27+
<Set name="useVirtualThreads" property="jetty.threadPool.useVirtualThreads" />
28+
<Set name="idleTimeout" type="int"><Property name="jetty.threadPool.idleTimeout" deprecated="threads.timeout" default="60000"/></Set>
29+
<Set name="maxEvictCount" type="int"><Property name="jetty.threadPool.maxEvictCount" default="1"/></Set>
30+
<Set name="detailedDump" type="boolean"><Property name="jetty.threadPool.detailedDump" default="false"/></Set>
31+
</New>
32+
</Configure>
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "https://www.eclipse.org/jetty/configure_10_0.dtd">
3+
4+
<!-- Web applications and security headers configuration -->
5+
<Configure class="org.eclipse.jetty.server.handler.ContextHandlerCollection" id="Contexts">
6+
7+
<!-- Rewrite Handler for Security Headers -->
8+
<Call name="addHandler">
9+
<Arg>
10+
<New class="org.eclipse.jetty.rewrite.handler.RewriteHandler">
11+
<Call name="addRule">
12+
<Arg>
13+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
14+
<Set name="pattern">*</Set>
15+
<Set name="headerName">X-FRAME-OPTIONS</Set>
16+
<Set name="headerValue">SAMEORIGIN</Set>
17+
</New>
18+
</Arg>
19+
</Call>
20+
<Call name="addRule">
21+
<Arg>
22+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
23+
<Set name="pattern">*</Set>
24+
<Set name="headerName">X-XSS-Protection</Set>
25+
<Set name="headerValue">1; mode=block</Set>
26+
</New>
27+
</Arg>
28+
</Call>
29+
<Call name="addRule">
30+
<Arg>
31+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
32+
<Set name="pattern">*</Set>
33+
<Set name="headerName">X-Content-Type-Options</Set>
34+
<Set name="headerValue">nosniff</Set>
35+
</New>
36+
</Arg>
37+
</Call>
38+
<Call name="addRule">
39+
<Arg>
40+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
41+
<Set name="pattern">*</Set>
42+
<Set name="headerName">Cache-Control</Set>
43+
<Set name="headerValue">no-store</Set>
44+
</New>
45+
</Arg>
46+
</Call>
47+
<Call name="addRule">
48+
<Arg>
49+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
50+
<Set name="pattern">*</Set>
51+
<Set name="headerName">Content-Security-Policy</Set>
52+
<Set name="headerValue">style-src-elem 'self'; style-src 'self'; img-src 'self'; script-src-elem 'self'; default-src 'none'; object-src 'none'; frame-ancestors 'none'; base-uri 'none';</Set>
53+
</New>
54+
</Arg>
55+
</Call>
56+
<!-- Relaxed CSP rules for XML admin pages -->
57+
<Call name="addRule">
58+
<Arg>
59+
<New class="org.eclipse.jetty.rewrite.handler.HeaderPatternRule">
60+
<Set name="pattern">/admin/xml/*</Set>
61+
<Set name="headerName">Content-Security-Policy</Set>
62+
<Set name="headerValue">style-src-elem 'self' 'unsafe-inline'; style-src 'self'; img-src 'self' data:; script-src-elem 'self'; default-src 'none'; object-src 'none'; frame-ancestors 'none'; base-uri 'none';</Set>
63+
</New>
64+
</Arg>
65+
</Call>
66+
</New>
67+
</Arg>
68+
</Call>
69+
70+
<!-- Admin Web Application -->
71+
<Call name="addHandler">
72+
<Arg>
73+
<New class="org.eclipse.jetty.ee9.webapp.WebAppContext">
74+
<Set name="contextPath">/admin</Set>
75+
<Set name="baseResourceAsString">webapps/admin</Set>
76+
<Set name="logUrlOnStart">true</Set>
77+
</New>
78+
</Arg>
79+
</Call>
80+
81+
<!-- API Web Application -->
82+
<Call name="addHandler">
83+
<Arg>
84+
<New class="org.eclipse.jetty.ee9.webapp.WebAppContext">
85+
<Set name="contextPath">/api</Set>
86+
<Set name="baseResourceAsString">webapps/api</Set>
87+
<Set name="logUrlOnStart">true</Set>
88+
</New>
89+
</Arg>
90+
</Call>
91+
92+
<!-- Static Resource Handler -->
93+
<Call name="addHandler">
94+
<Arg>
95+
<New class="org.eclipse.jetty.server.handler.ResourceHandler">
96+
<!-- Set name="directoriesListed">false</Set -->
97+
<Set name="welcomeFiles">
98+
<Array type="java.lang.String">
99+
<Item>index.html</Item>
100+
</Array>
101+
</Set>
102+
<Set name="baseResourceAsString">webapps/</Set>
103+
</New>
104+
</Arg>
105+
</Call>
106+
107+
<!-- Default Handler -->
108+
<Call name="addHandler">
109+
<Arg>
110+
<New class="org.eclipse.jetty.server.handler.DefaultHandler">
111+
<Set name="serveFavIcon">false</Set>
112+
</New>
113+
</Arg>
114+
</Call>
115+
116+
</Configure>

0 commit comments

Comments
 (0)