Skip to content

Commit ccf69f2

Browse files
committed
added hawtio & exposed jmx endpoint
1 parent 7a76157 commit ccf69f2

5 files changed

Lines changed: 68 additions & 4 deletions

File tree

Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@ FROM eclipse-temurin:21-jre-alpine
22
WORKDIR /app
33

44
COPY build/libs/generic-server-spring-boot.jar /app/
5+
COPY start.sh /app/
6+
RUN chmod +x /app/start.sh
57
EXPOSE 8080
6-
ENTRYPOINT ["java", "-jar", "generic-server-spring-boot.jar"]
8+
EXPOSE 9010
9+
ENTRYPOINT ["/app/start.sh"]

build.gradle

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
plugins {
22
id 'java'
3-
id 'org.springframework.boot' version '3.5.0-SNAPSHOT'
3+
id 'org.springframework.boot' version '3.5.8'
44
id 'io.spring.dependency-management' version '1.1.7'
55
}
66

@@ -20,10 +20,11 @@ repositories {
2020
}
2121

2222
dependencies {
23+
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.14'
2324
implementation 'org.springframework.boot:spring-boot-starter-actuator'
2425
implementation 'org.springframework.boot:spring-boot-starter-web'
25-
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.5'
2626
implementation 'org.springframework.boot:spring-boot-starter-validation'
27+
implementation 'io.hawt:hawtio-springboot:4.1.0'
2728
testImplementation 'org.springframework.boot:spring-boot-starter-test'
2829
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
2930
}
@@ -32,6 +33,16 @@ tasks.named('test') {
3233
useJUnitPlatform()
3334
}
3435

36+
tasks.named('bootRun') {
37+
jvmArgs = [
38+
'-Dcom.sun.management.jmxremote',
39+
'-Dcom.sun.management.jmxremote.port=9010',
40+
'-Dcom.sun.management.jmxremote.ssl=false',
41+
'-Dcom.sun.management.jmxremote.authenticate=false',
42+
'-Dcom.sun.management.jmxremote.rmi.port=9010'
43+
]
44+
}
45+
3546
bootJar {
3647
archiveFileName = "${rootProject.name}.jar"
3748
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.generic.server.filter;
2+
3+
import jakarta.servlet.*;
4+
import jakarta.servlet.http.*;
5+
import org.springframework.http.*;
6+
import org.springframework.lang.NonNull;
7+
import org.springframework.stereotype.Component;
8+
import org.springframework.web.filter.OncePerRequestFilter;
9+
10+
import java.io.IOException;
11+
12+
@Component
13+
public class RestFilter extends OncePerRequestFilter {
14+
@Override
15+
protected void doFilterInternal(
16+
HttpServletRequest request,
17+
@NonNull HttpServletResponse response,
18+
@NonNull FilterChain filterChain) throws ServletException, IOException {
19+
String requestUri = request.getRequestURI();
20+
if (requestUri.endsWith("/") && !requestUri.equals("/")) {
21+
String newUrl = requestUri.substring(0, requestUri.length() - 1);
22+
response.setStatus(HttpStatus.PERMANENT_REDIRECT.value());
23+
response.setHeader(HttpHeaders.LOCATION, newUrl);
24+
return;
25+
}
26+
filterChain.doFilter(request, response);
27+
}
28+
}

src/main/resources/application.yml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,24 @@ spring:
33
name: "generic-server-spring-boot"
44
profiles:
55
active: "local"
6+
jmx:
7+
enabled: true
68

79
server:
810
port: 8080
911

1012
springdoc:
13+
show-actuator: true
1114
swagger-ui:
12-
path: "/swagger-ui/index.html"
15+
path: "/swagger-ui/index.html"
16+
17+
management:
18+
endpoints:
19+
web:
20+
exposure:
21+
include: "*"
22+
path-mapping:
23+
hawtio: console
24+
25+
hawtio:
26+
authenticationEnabled: false

start.sh

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#!/bin/sh
2+
exec java \
3+
-Dcom.sun.management.jmxremote \
4+
-Dcom.sun.management.jmxremote.port=9010 \
5+
-Dcom.sun.management.jmxremote.ssl=false \
6+
-Dcom.sun.management.jmxremote.authenticate=false \
7+
-Dcom.sun.management.jmxremote.rmi.port=9010 \
8+
-jar generic-server-spring-boot.jar

0 commit comments

Comments
 (0)