diff --git a/pom.xml b/pom.xml
index d02c883..71daa34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,6 @@
11
- 11.0.18
@@ -251,82 +250,65 @@
test
-
- org.eclipse.jetty
- jetty-servlets
- ${jetty_11_version}
- test
-
-
- org.eclipse.jetty
- jetty-servlet
- ${jetty_11_version}
- test
-
org.eclipse.jetty
jetty-http
- ${jetty_11_version}
test
org.eclipse.jetty
jetty-io
- ${jetty_11_version}
test
org.eclipse.jetty
jetty-security
- ${jetty_11_version}
test
org.eclipse.jetty
jetty-xml
- ${jetty_11_version}
+ test
+
+
+ org.eclipse.jetty.ee10
+ jetty-ee10-servlet
+ test
+
+
+ org.eclipse.jetty.ee10
+ jetty-ee10-servlets
+ test
+
+
+ org.eclipse.jetty.ee10.websocket
+ jetty-ee10-websocket-jakarta-client
+ test
+
+
+ org.eclipse.jetty.ee10.websocket
+ jetty-ee10-websocket-jakarta-server
+ test
+
+
+ org.eclipse.jetty.ee10.websocket
+ jetty-ee10-websocket-jetty-server
+ ${jetty_version}
test
org.eclipse.jetty.websocket
- websocket-jetty-server
- ${jetty_11_version}
- test
-
-
- org.eclipse.jetty.websocket
- websocket-jetty-api
- ${jetty_11_version}
- test
-
-
- org.eclipse.jetty.websocket
- websocket-jetty-client
- ${jetty_11_version}
- test
-
-
- org.eclipse.jetty.websocket
- websocket-core-client
- ${jetty_11_version}
+ jetty-websocket-jetty-server
test
org.eclipse.jetty
jetty-server
- ${jetty_11_version}
test
org.eclipse.jetty
jetty-util
- ${jetty_11_version}
- test
-
-
- org.eclipse.jetty
- jetty-webapp
- ${jetty_11_version}
test
@@ -650,6 +632,12 @@
org.springframework.boot
spring-boot-starter-web
${spring_boot_version}
+
+
+ org.springframework.boot
+ spring-boot-starter-tomcat
+
+
diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/Application.java b/src/main/java/ca/uhn/fhir/jpa/starter/Application.java
index 4f72c4a..c626c96 100644
--- a/src/main/java/ca/uhn/fhir/jpa/starter/Application.java
+++ b/src/main/java/ca/uhn/fhir/jpa/starter/Application.java
@@ -20,8 +20,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.elasticsearch.ElasticsearchRestClientAutoConfiguration;
import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.boot.web.servlet.server.ServletWebServerFactory;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
@@ -69,4 +71,9 @@ public class Application extends SpringBootServletInitializer {
return servletRegistrationBean;
}
+ @Bean
+ public ServletWebServerFactory servletWebServerFactory() {
+ return new JettyServletWebServerFactory();
+ }
+
}
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
index 6c71b71..19b453f 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerDstu3IT.java
@@ -164,7 +164,6 @@ class ExampleServerDstu3IT implements IServerSupport {
}
@Test
- @Disabled
void testWebsocketSubscription() throws Exception {
/*
* Create subscription
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
index 6db67b8..9eebaa0 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR4IT.java
@@ -217,7 +217,6 @@ class ExampleServerR4IT implements IServerSupport {
ourClient.transaction().withBundle(bundle).execute();
}
- @Disabled
@Test
@Order(1)
void testWebsocketSubscription() throws Exception {
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR5IT.java b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR5IT.java
index 44c2ed4..e26ad37 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR5IT.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/ExampleServerR5IT.java
@@ -1,9 +1,5 @@
package ca.uhn.fhir.jpa.starter;
-import static ca.uhn.fhir.util.TestUtil.waitForSize;
-import static org.awaitility.Awaitility.await;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import ca.uhn.fhir.context.FhirContext;
import ca.uhn.fhir.rest.api.CacheControlDirective;
import ca.uhn.fhir.rest.api.EncodingEnum;
@@ -11,10 +7,6 @@ import ca.uhn.fhir.rest.api.MethodOutcome;
import ca.uhn.fhir.rest.client.api.IGenericClient;
import ca.uhn.fhir.rest.client.api.ServerValidationModeEnum;
import ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor;
-import java.net.URI;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
import jakarta.websocket.ContainerProvider;
import jakarta.websocket.Session;
import jakarta.websocket.WebSocketContainer;
@@ -26,20 +18,25 @@ import org.hl7.fhir.r5.model.Patient;
import org.hl7.fhir.r5.model.Subscription;
import org.hl7.fhir.r5.model.SubscriptionTopic;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
import org.springframework.test.context.junit.jupiter.SpringExtension;
+import java.net.URI;
+
+import static ca.uhn.fhir.util.TestUtil.waitForSize;
+import static org.awaitility.Awaitility.await;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = {Application.class}, properties =
{
"spring.datasource.url=jdbc:h2:mem:dbr5",
"hapi.fhir.fhir_version=r5",
"hapi.fhir.cr_enabled=false",
-// "hapi.fhir.subscription.websocket_enabled=true"
+ "hapi.fhir.subscription.websocket_enabled=true"
})
public class ExampleServerR5IT {
@@ -68,7 +65,6 @@ public class ExampleServerR5IT {
}
@Test
- @Disabled
void testWebsocketSubscription() throws Exception {
String endpoint = "ws://localhost:" + port + "/websocket";
/*
diff --git a/src/test/java/ca/uhn/fhir/jpa/starter/JpaStarterWebsocketDispatcherConfig.java b/src/test/java/ca/uhn/fhir/jpa/starter/JpaStarterWebsocketDispatcherConfig.java
index 3503338..34c8949 100644
--- a/src/test/java/ca/uhn/fhir/jpa/starter/JpaStarterWebsocketDispatcherConfig.java
+++ b/src/test/java/ca/uhn/fhir/jpa/starter/JpaStarterWebsocketDispatcherConfig.java
@@ -1,7 +1,7 @@
package ca.uhn.fhir.jpa.starter;
-import org.eclipse.jetty.webapp.WebAppContext;
-import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer;
+import org.eclipse.jetty.ee10.webapp.WebAppContext;
+import org.eclipse.jetty.ee10.websocket.jakarta.server.config.JakartaWebSocketServletContainerInitializer;
import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
@@ -15,18 +15,18 @@ import org.springframework.context.annotation.Configuration;
public class JpaStarterWebsocketDispatcherConfig {
@Bean
- public Jetty10WebSocketServletWebServerCustomizer jetty10WebSocketServletWebServerCustomizer() {
- return new Jetty10WebSocketServletWebServerCustomizer();
+ public Jetty12WebSocketServletWebServerCustomizer jetty10WebSocketServletWebServerCustomizer() {
+ return new Jetty12WebSocketServletWebServerCustomizer();
}
- static class Jetty10WebSocketServletWebServerCustomizer implements WebServerFactoryCustomizer {
+ static class Jetty12WebSocketServletWebServerCustomizer implements WebServerFactoryCustomizer {
@Override
public void customize(JettyServletWebServerFactory factory) {
factory.addServerCustomizers(server -> {
WebAppContext ctx = (WebAppContext) server.getHandler();
- JettyWebSocketServletContainerInitializer.configure(ctx, null);
+ JakartaWebSocketServletContainerInitializer.configure(ctx, null);
});
}